「純粋」(7ビット)ASCII出力を使用した「tree」コマンドの出力

「純粋」(7ビット)ASCII出力を使用した「tree」コマンドの出力

"tree"コマンドはクールなボックスで描かれた文字を使用してツリーを表示しますが、「コードページニュートラル」コンテキストで出力を使用したい(実際には常にコードページがあることを知っていますが、より低いコードページに制限されています))ウランバートルで笑う顔などを見ている人を心配する必要がないことを願っています。

たとえば、次のようになります。

├── include
│   ├── foo
│   └── bar

私は次のようなものが欲しい:

+-- include
|   +-- foo
|   \-- bar

しかし、私が試した「ツリー」スイッチの組み合わせのどれもこれを提供しません(ブロック図の文字に基づいてよりきれいにするようです)。

私もそのような変換を実行するためにブロックプロットフィルタを見つけましたが、無限の量のASCIIアート以外には何も見つかりませんでした:-).汎用フィルターは15分で作ったような臭いがします。 2日を追加すると、すべての面白いエッジケースを得ることができます:-)

答え1

これについてはよくわかりませんが、必要なものは次のとおりです。

tree | sed 's/├/\+/g; s/─/-/g; s/└/\\/g'

たとえば、

$ 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

または、次の--charsetオプションを使用できます。

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

2 directories, 3 files

答え2

何について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

答え3

ロケールを変更するために、次のことを試しました。また、--charset = asciiと同様に、線を描画するためのASCIIコードを出力します。

> LANG=C tree

関連情報