“Saf” (7-bit) ASCII çıkışlı “ağaç” komut çıkışı


44

"Ağaç" komutu, ağacı göstermek için güzel kutu çizme karakterleri kullanır, ancak çıktıyı "kod sayfası nötr" bağlamında kullanmak istiyorum (gerçekten her zaman bir kod sayfası olduğunu biliyorum, ancak bunu daha düşük değerlerle sınırlandırarak Karakterler Ulan Batur'da birinin gülen suratlarını gördüğü endişelerinden kurtulmayı umuyorum).

Örneğin yerine:

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

Gibi bir şey istiyorum:

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

fakat denediğim "ağaç" anahtar kombinasyonlarından hiçbiri bunu vermedi (sanki kutu çizim karakterlerini taban çizgisi olarak alıp daha güzel hale getiriyorlar gibi görünüyor)

Sınırsız miktarda ASCII art :-) ötesinde bir şey bulamadan bu tür dönüşümleri gerçekleştirmek için kutu-çizim filtreleri aradım. Genel bir filtre 15 dakika içerisinde pişirilecek bir şey gibi kokuyor; ayrıca tüm eğlenceli köşe kasalarına rastlayan iki artımlı gün :-)


Soru için teşekkürler. Buna ihtiyacım vardı, böylece baskı biçimlendirmesini kontrol etmek için (duplexpr paketimden dprint / dprintm kullanarak ) sourceforge.net/projects/duplexpr/. )
Joe

Yanıtlar:


59

Bundan emin değilim ama bence ihtiyacın olan tek şey

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

Örneğin:

$ 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

Alternatif olarak, --charsetseçeneği kullanabilirsiniz :

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

2 directories, 3 files

GNU treeyok, Unix treeyok, POSIX yok tree. treeBildiğim tek uygulama mama.indstate.edu/users/ice/tree .
Stéphane Chazelas

3
@StephaneChazelas teşekkürler, bu yüzden --charsetseçenek o zaman her zaman kullanılabilir olmalıdır. Cevap düzenlendi.
terdon

Görkemli! (özellikle sed versiyonu - benim için sed, awk sınırının ötesindeki vahşi topraklardır)
Tom Goodfellow

1
Ağacı seviyorum - charset = ascii seçeneği, teşekkürler
ling 19: 44 'de

4
Aslında --charsetseçeneğin ilk önce belirtilmesi gerektiğini düşünüyorum - alternatif sedkullanım öğreticidir, ancak daha karmaşıktır ...
rob74

30

Ne hakkında 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

2
Bu aynıtree --charset nwildner
Stéphane Chazelas 29:14

Evet. Diğer cevap düzenlendi, ben yazarken @terdon'un daha eksiksiz bir cevap verdiğini fark etmedim;)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.