4 个版本
0.4.0 | 2022年6月19日 |
---|---|
0.3.6 | 2021年3月27日 |
0.3.5 |
|
0.3.4 | 2021年2月21日 |
0.3.3 | 2020年11月17日 |
#1517 in 命令行工具
43KB
981 行
tre
是经典的 tree
命令的现代替代品,它以树形图的形式列出目录结构。
- 跳过 git 仓库中根据
.gitignore
设置被忽略的文件。 - 为每个列表创建 shell 别名,以便为您打开文件。
- 输出带有颜色,当存在时,尊重 LS_COLORS 设置。
- 命令别名演示
… 顺便说一句:在 "README.md" 前面显示的 [8]
,键入 e8
打开了文件!请参阅 如何设置此功能。
通过包管理器
安装
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 之外的操作系统等。
预构建的可执行文件
从 发布页面 选择适合您平台的预构建可执行文件进行下载。将其解压到您想从中运行它的位置。
从源代码
- 克隆此仓库:
git clone https://github.com/dduan/tre.git
。 - 请确保您已安装 Rust 和 Cargo。如果没有,请按照 此处 的说明操作。
- 在此仓库的根目录下,运行以下命令:
cargo build --release
。 - 将
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