“ tree ” Befehlsausgabe mit “ pure ” (7-Bit) ASCII-Ausgabe

Der Befehl „tree“ verwendet nette Box-Zeichen, um den Baum anzuzeigen, aber ich möchte die Ausgabe verwenden in einem „Codepage-neutralen“ Kontext (ich weiß, dass es wirklich immer eine Codepage gibt, aber wenn ich sie auf die niedrigeren Zeichen beschränke, hoffe ich, dass ich keine Sorgen habe, dass jemand in Ulan Bator Smileys usw. sieht).

Zum Beispiel anstelle von:

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

Ich hätte gerne etwas wie:

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

, aber keine der von mir versuchten „Baum“ -Schalterkombinationen gab dies an (es scheint eher so, als würden sie die Zeichen für das Zeichnen von Kästchen als Grundlinie nehmen und sie noch schöner machen)

Ich auch suchte nach Box-Drawing-Filtern, um solche Konvertierungen durchzuführen, ohne etwas zu finden, das über eine unendliche Menge an ASCII-Kunst hinausgeht :-). Ein generischer Filter riecht nach etwas, das in 15 Minuten zubereitet werden muss – plus zwei weitere inkrementelle Tage, die in alle amüsanten Eckfälle stolpern 🙂

Kommentare

  • Danke für die Frage. Ich brauchte dies, damit ich die Ausgabe des Baums in ein Enscript leiten konnte, um die Druckformatierung zu steuern (mit dprint / dprintm aus meinem duplexpr-Paket sourceforge.net/projects/duplexpr/). )

Antwort

Ich bin mir nicht sicher, aber ich denke, alles was Sie brauchen ist

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

Zum Beispiel:

$ 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 

Alternativ können Sie die --charset Option:

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

Kommentare

  • Dort ' s kein GNU tree, es gibt ' kein Unix tree, es gibt ' kein POSIX tree. Die einzige tree Implementierung I ' Ich bin mir bewusst, dass mama.indstate.edu/users/ice/tree .
  • @StephaneChazelas danke, also die Option --charset sollte dann immer verfügbar sein. Antwort bearbeitet.
  • Herrlich! (besonders die sed-Version – für mich ist sed das wilde Land jenseits der awk-Grenze)
  • Ich mag die Option tree –charset = ascii, danke
  • Eigentlich denke ich, dass die --charset sollte zuerst erwähnt werden – die Alternative mit sed ist lehrreich, aber komplizierter …

Antwort

Was ist mit 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 

Kommentare

  • Das ' entspricht tree --charset nwildner
  • Yup. Die andere Antwort wurde so bearbeitet, dass ich ´ nicht bemerkt habe, dass @terdon eine vollständigere Antwort gegeben hat, während ich meine geschrieben habe;)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.