“ træ ” kommandooutput med “ ren ” (7-bit) ASCII-output

Kommandoen “tree” bruger fine bokstegningstegn til at vise træet, men jeg vil bruge output i en “kodesideneutral” kontekst (jeg ved, at der virkelig altid er en kodeside, men ved at begrænse den til de lavere tegn håber jeg at være fri for bekymringer for, at nogen i Ulan Bator ser smileys osv.).

For eksempel i stedet for:

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

Jeg kunne godt lide noget som:

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

men ingen af de “træ” -kombinationskombinationer, jeg prøvede, gav dette (virker mere som om de tager bokstegningstegnene som basislinien og gør det endnu smukkere)

Jeg har også ledte efter bokstegningsfiltre til at udføre sådanne konverteringer uden at finde noget ud over en uendelig mængde ASCII-kunst :-). Et generisk filter lugter som noget, der skal koges op på 15 minutter – plus yderligere to inkrementelle dage, der snubler ind i alle de morsomme hjørnesager 🙂

Kommentarer

  • Tak for spørgsmålet. Jeg havde brug for dette, så jeg kunne pibe output af træ i enscript for at få kontrol over udskrivningsformateringen (ved hjælp af dprint / dprintm fra min duplexpr-pakke sourceforge.net/projects/duplexpr/. )

Svar

Jeg er ikke sikker på dette, men jeg tror alt hvad du behøver er

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

For eksempel:

$ 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 

Alternativt kan du bruge --charset mulighed:

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

Kommentarer

  • Der ' uden GNU tree, der ' er ingen Unix tree, der ' er ingen POSIX tree. Den eneste tree implementering I ' jeg er opmærksom på, er mama.indstate.edu/users/ice/tree .
  • @StephaneChazelas tak, så --charset skal altid være tilgængelig da. Svar redigeret.
  • Pragtfuldt! (især sed-versionen – for mig er sed de vilde lande ud over awk-grænsen)
  • Jeg kan godt lide træet –charset = ascii option, tak
  • Faktisk tror jeg --charset skal først nævnes – alternativet ved hjælp af sed er lærerigt, men mere kompliceret …

Svar

Hvad med 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 

Kommentarer

  • At ' er det samme som tree --charset nwildner
  • Yup. Det andet svar blev redigeret, så jeg ´ lagde ikke mærke til, at @terdon gav et mere komplet svar, mens jeg skrev mit;)

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *