“ drzewo ” wyjście polecenia z “ czystym ” (7-bitowe) wyjście ASCII

Polecenie „drzewo” używa ładnych znaków rysunkowych do wyświetlenia drzewa, ale chcę użyć wyniku w kontekście „neutralnym dla strony kodowej” (wiem, że naprawdę zawsze jest strona kodowa, ale ograniczając ją do niższych znaków, mam nadzieję, że uwolnię się od zmartwień, że ktoś w Ułan Bator widzi uśmiechnięte buźki itp.).

Na przykład zamiast:

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

Chciałbym coś takiego:

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

ale żadna z kombinacji przełączników „drzewa”, które próbowałem, nie dała tego (wydaje się, że przyjmują znaki rysowania pudełek jako linię bazową i sprawiają, że jest jeszcze ładniejszy)

szukał filtrów do rysowania pudełek, aby wykonywać takie konwersje bez znajdowania niczego poza nieskończoną ilością grafiki ASCII :-). Ogólny filtr pachnie czymś, co ma być ugotowane w 15 minut – plus dwa kolejne kolejne dni natknięcia się na wszystkie zabawne przypadki narożne 🙂

Komentarze

  • Dziękuję za pytanie. Potrzebowałem tego, aby móc potokować wyjście drzewa do skryptu, aby uzyskać kontrolę nad formatowaniem wydruku (używając dprint / dprintm z mojego pakietu duplekspr sourceforge.net/projects/duplexpr/. )

Odpowiedź

Nie jestem tego pewien, ale myślę, że wszystko, czego potrzebujesz, to

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

Na przykład:

$ 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 

Alternatywnie możesz użyć --charset opcja:

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

Komentarze

  • Tam ' nie ma GNU tree, ' nie ma systemu Unix tree, istnieje ' nie ma POSIX tree. Jedyna tree implementacja I ' wiem, czy mama.indstate.edu/users/ice/tree .
  • @StephaneChazelas, dzięki, więc opcja --charset powinien być wtedy zawsze dostępny. Odpowiedź została edytowana.
  • Wspaniale! (szczególnie wersja sed – dla mnie sed to dzikie krainy poza granicami awk)
  • Podoba mi się drzewo –charset = opcja ascii, dzięki
  • Właściwie myślę, że --charset – alternatywna opcja z użyciem sed jest pouczająca, ale bardziej skomplikowana …

Odpowiedź

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

Komentarze

  • To ' jest takie samo jak tree --charset nwildner
  • Tak. Druga odpowiedź została zmieniona, więc nie ´ nie zauważyłem, że @terdon udzielił pełniejszej odpowiedzi, kiedy pisałem swoją;)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *