带有“纯”(7 位)ASCII 输出的“树”命令输出

Tom*_*low 56 command-line ascii tree

“树”命令使用漂亮的框绘图字符来显示树,但我想在“代码页中立”上下文中使用输出(我知道确实总是有一个代码页,但通过将其限制在较低的我希望可以免于担心乌兰巴托有人看到笑脸等)。

例如,而不是:

??? include
?   ??? foo
?   ??? bar
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西:

+-- include
|   +-- foo
|   \-- bar
Run Code Online (Sandbox Code Playgroud)

但是我尝试过的“树”开关组合都没有给出这个(似乎更像是他们将框绘图字符作为基线并使其更漂亮)

我还寻找框绘图过滤器来执行此类转换,而没有找到任何超出无限 ASCII 艺术的东西:-)。一个通用的过滤器闻起来像是要在 15 分钟内煮熟的东西——再加上两天的增量天,绊倒所有有趣的角落案例:-)

ter*_*don 76

我不确定这一点,但我认为你需要的是

tree | sed 's/?/\+/g; s/?/-/g; s/?/\\/g'
Run Code Online (Sandbox Code Playgroud)

例如:

$ tree
.
??? file0
??? foo
    ??? bar
    ?   ??? file2
    ??? file1

2 directories, 3 files
$ tree | sed 's/?/\+/g; s/?/-/g; s/?/\\/g'
.
+-- file0
\-- foo
    +-- bar
    ?   \-- file2
    \-- file1

2 directories, 3 files
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用以下--charset选项:

$ tree --charset=ascii
.
|-- file0
`-- foo
    |-- bar
    |   `-- file2
    `-- file1

2 directories, 3 files
Run Code Online (Sandbox Code Playgroud)

  • 实际上我认为应该首先提到 `--charset` 选项 - 使用 `sed` 的替代方法很有启发性,但更复杂...... (6认同)
  • @StephaneChazelas 谢谢,所以 `--charset` 选项应该始终可用。答案已编辑。 (3认同)
  • 我喜欢树 --charset=ascii 选项,谢谢 (3认同)

小智 38

怎么样tree --charset unicode

|-- boot_print
|   |-- config-2.6.32-5-amd64
|   |-- grub
|   |   |-- 915resolution.mod
|   |   |-- acpi.mod
|   |   |-- affs.mod
|   |   |-- afs_be.mod
|   |   |-- afs.mod
|   |   |-- aout.mod
|   |   |-- ata.mod
|   |   |-- ata_pthru.mod
|   |   |-- at_keyboard.mod
|   |   |-- befs_be.mod
|   |   |-- befs.mod
|   |   |-- biosdisk.mod
|   |   |-- bitmap.mod
|   |   |-- bitmap_scale.mod
|   |   |-- blocklist.mod
|   |   |-- boot.img
Run Code Online (Sandbox Code Playgroud)

  • 这与 `tree --charset nwildner` 相同 (2认同)

Joe*_*Joe 8

我尝试了以下方法来更改区域设置。它还输出 ascii 代码绘制线,与 --charset=ascii 相同。

> LANG=C tree
Run Code Online (Sandbox Code Playgroud)