4 个版本

0.4.0 2022年6月19日
0.3.6 2021年3月27日
0.3.5 2021年3月21日
0.3.4 2021年2月21日
0.3.3 2020年11月17日

#1517 in 命令行工具

MIT 许可证

43KB
981

tre

是经典的 tree 命令的现代替代品,它以树形图的形式列出目录结构。

  • 跳过 git 仓库中根据 .gitignore 设置被忽略的文件。
  • 为每个列表创建 shell 别名,以便为您打开文件。
  • 输出带有颜色,当存在时,尊重 LS_COLORS 设置。
  • 命令别名演示

… 顺便说一句:在 "README.md" 前面显示的 [8],键入 e8 打开了文件!请参阅 如何设置此功能

Aliasing In Action

通过包管理器

安装

Tre 可以下载到以下包管理器。

Tre 可以下载到以下包管理器。

管理器 / 操作系统 命令
Homebrew / macOS brewinstall tre-command
MacPorts / macOS port install tre-tree
Debian (testing) apt install tre-command
Scoop / Windows scoop install tre-command
Cargo cargoinstall tre-command
AUR / Arch Linux yay-S tre-command
pkgsrc / NetBSD 9.1+ pkgin install tre-command
Nixpkgs / NixOS 使用 tre-command
Nix flake 使用 github:dduan/tre

上述命令是基本说明。如果您有其他喜欢的工具,请使用。例如,使用 Nix 的配置文件;或从 AUR 安装的其它方法;pkgsrc 可以用于除 NetBSD 之外的操作系统等。

预构建的可执行文件

发布页面 选择适合您平台的预构建可执行文件进行下载。将其解压到您想从中运行它的位置。

从源代码

  1. 克隆此仓库: git clone https://github.com/dduan/tre.git
  2. 请确保您已安装 Rust 和 Cargo。如果没有,请按照 此处 的说明操作。
  3. 在此仓库的根目录下,运行以下命令:cargo build --release
  4. target/release/tre移动到您的PATH环境变量中的某个位置。

编辑器别名

tre提供了一个-e标志,当使用时,将开启“编辑器别名”功能。一些shell配置会使此功能表现更佳。

macOS/Linux

默认情况下,环境变量$EDITOR被用作编辑器。如果提供了-e后面的值(例如使用tre -e emacs代替仅tre -e),则将使用该值指定的命令代替$EDITOR。相应地更新下一节中的脚本。

Bash或Zsh

~/.bashrc~/.zshrc(例如)中

tre() { command tre "$@" -e && source "/tmp/tre_aliases_$USER" 2>/dev/null; }

Fish

创建~/.config/fish/functions/tre.fish

function tre
  command tre $argv -e; and source /tmp/tre_aliases_$USER ^/dev/null
end

Windows(10+)

我们不会直接执行tre.exe,而是设置一个脚本,使其可用于您的PATH环境变量。例如,您可以将\Users\yourname\bin添加到您的PATH环境变量中,并在那里创建脚本。当您使用tre时,此脚本将执行tre.exe,并执行一些额外的工作。脚本的内容因PowerShell和命令提示符而异。

默认情况下,Windows将使用已知默认程序打开文件。如果提供了-e后面的值(例如使用tre -e notepad.exe代替仅tre -e),则将使用该值指定的命令。相应地更新下一节中的脚本。

PowerShell

添加一个tre.ps1文件

if (Get-Module PSReadLine) {
  Remove-Module -Force PSReadLine
}
tre.exe $args -e
. $Env:TEMP\tre_aliases_$env:USERNAME.ps1

命令提示符(CMD.exe)

添加一个tre.bat

@echo off
tre.exe %* -e
call %TEMP%\tre_aliases_%USERNAME%.bat

工作原理

您在tre的输出中首先会注意到每个文件名前的数字。如果选择一个数字,比如“3”,然后在shell中输入e3,那么“3”后面的文件将使用默认程序(macOS/Linux中由环境变量EDITOR指定,由Windows选择)打开。

每次使用带有-e的tre运行时,它都会更新临时目录中的一个文件,并为显示的每个结果添加一个别名。额外的配置只是在该命令之后来源此文件。您可以在Bash/Zsh/Fish中手动运行

source /tmp/tre_aliases_$USER

在PowerShell中

. $Env:TEMP\tre_aliases_$env:USERNAME.ps1

在命令提示符中

call %TEMP%\tre_aliases_%USERNAME%.bat

……而不是配置您的系统(如果您真的那么有耐心!)。

其他一切

以下是tre -h的输出,显示tre提供的所有可用选项

USAGE:
    tre [OPTIONS] [PATH]

ARGS:
    <PATH>    [default: .]

OPTIONS:
    -a, --all                   Print all files and directories, including hidden ones
    -c, --color <WHEN>          When to color the output. `automatic` means when printing to a
                                terminal, tre will include colors; otherwise it will disable colors
                                [default: automatic] [possible values: automatic, always, never]
    -d, --directories           Only list directories in output
    -e, --editor [<COMMAND>]    Create aliases for each displayed result, and add a number in front
                                of file name to indicate the alias name. For example, a number "42"
                                means an shell alias "e42" has been created. Running "e42" will
                                cause the associated file or directory to be open with $EDITOR (or a
                                default program for the file type on Windows), or a command
                                specified along with this command
    -E, --exclude <PATTERN>     Exclude paths matching a regex pattern. Repeatable
    -h, --help                  Print help information
    -j, --json                  Output JSON instead of tree diagram
    -l, --limit <LIMIT>         Limit depth of the tree in output
    -p, --portable              Generate portable (absolute) paths for editor aliases. By default,
                                aliases use relative paths for better performance
    -s, --simple                Use normal print despite gitignore settings. '-a' has higher
                                priority
    -V, --version               Print version information

如果您喜欢编辑器别名功能,您可能想查看ea

打包

tre 是一个标准的由 Cargo 管理的 Rust 项目。Unix 手册位于 manual/tre.1。各种壳的完成脚本位于 scripts/completion

许可证

MIT。请参阅 LICENSE.md

依赖项

~6–15MB
~181K SLoC