“ strom ” výstup příkazu s “ čistý ” (7bitový) výstup ASCII

Příkaz „tree“ k zobrazení stromu používá pěkné znaky pro kreslení pole, ale chci použít výstup v kontextu „code-page-neutral“ (vím, že opravdu vždy existuje stránka s kódem, ale omezením na nižší znaky doufám, že se nebudu obávat, že někdo v Ulan Bator uvidí smajlíky atd.).

Například místo:

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

Líbí se mi něco jako:

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

ale žádná z kombinací přepínačů „stromu“, které jsem zkoušel, to nedala (zdá se to spíše, jako by jako základní linku braly znaky pro kreslení pole a byly ještě hezčí)

Také hledali filtry pro kreslení krabic, které by prováděly takové převody, aniž by našly něco přesahující nekonečné množství ASCII umění :-). Obecný filtr voní jako něco, co má být uvařeno za 15 minut – plus dva další přírůstkové dny narážející na všechny zábavné rohové případy 🙂

Komentáře

  • Děkujeme za otázku. Potřeboval jsem to, abych mohl převést výstup stromu do strojopisu, abych získal kontrolu nad formátováním tisku (pomocí dprint / dprintm z mého balíčku duplexpr sourceforge.net/projects/duplexpr/. )

Odpověď

Nejsem si tím jistý, ale myslím, že vše, co potřebujete, je

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

Například:

$ 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 

Alternativně můžete použít --charset možnost:

$ tree --charset=ascii . |-- file0 `-- foo |-- bar | `-- file2 `-- file1 2 directories, 3 files 

Komentáře

  • Tam ' s bez GNU tree, ' s bez Unixu tree, ' není POSIX tree. Jediná tree implementace I ' s vědomím, že je mama.indstate.edu/users/ice/tree .
  • @StephaneChazelas děkuji, takže možnost --charset by měla být vždy k dispozici. Odpověď upravena.
  • Skvělá! (zejména verze sed – pro mě sed je divoká země za hranicí awk)
  • Líbí se mi možnost strom –charset = ascii, díky
  • Vlastně si myslím, že --charset možnost – alternativa používající sed je poučná, ale komplikovanější …

Odpověď

A co 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 

Komentáře

  • To je ' stejné jako tree --charset nwildner
  • Jo. Druhá odpověď byla upravena, takže jsem si ´ nevšiml, že @terdon dal úplnější odpověď, zatímco budu psát moje;)

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *