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 Unixtree
, istnieje ' nie ma POSIXtree
. Jedynatree
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życiemsed
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ą;)