O comando “tree” usa bonitos caracteres de desenho de caixa para mostrar a árvore, mas quero usar a saída em um contexto de “página de código neutra” (eu sei que realmente há sempre uma página de código, mas ao restringi-la aos caracteres inferiores, espero estar livre de preocupações de que alguém em Ulan Bator veja rostos sorridentes, etc).
Por exemplo, em vez de:
├── include │ ├── foo │ └── bar
Eu “gostaria de algo como:
+-- include | +-- foo | \-- bar
mas nenhuma das combinações de interruptores em “árvore” que experimentei deu isso (parece mais como se eles pegassem os caracteres do desenho da caixa como base e os tornassem ainda mais bonitos)
Eu também procurou por filtros de desenho de caixa para realizar tais conversões sem encontrar nada além de uma quantidade infinita de arte ASCII :-). Um filtro genérico cheira a algo para ser preparado em 15 minutos – mais dois dias adicionais tropeçando em todos os casos esquivos divertidos 🙂
Comentários
- Obrigado pela pergunta. Eu precisava disso para poder canalizar a saída da árvore em enscript para obter o controle da formatação de impressão (usando dprint / dprintm do meu pacote duplexpr sourceforge.net/projects/duplexpr/. )
Resposta
Não tenho certeza sobre isso, mas acho que tudo que você precisa é
tree | sed "s/├/\+/g; s/─/-/g; s/└/\\/g"
Por exemplo:
$ 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
Como alternativa, você pode usar o --charset
opção:
$ tree --charset=ascii . |-- file0 `-- foo |-- bar | `-- file2 `-- file1 2 directories, 3 files
Comentários
- Há ' s não GNU
tree
, há ' s não Unixtree
, há ' s nenhum POSIXtree
. A únicatree
implementação I ' estou ciente de mama.indstate.edu/users/ice/tree . - @StephaneChazelas obrigado, então a opção
--charset
deve estar sempre disponível então. Resposta editada. - Esplêndido! (especialmente a versão sed – para mim, sed são as terras selvagens além da fronteira do awk)
- Eu gosto da opção tree –charset = ascii, obrigado
- Na verdade, acho que o
--charset
opção deve ser mencionada primeiro – a alternativa de usarsed
é instrutiva, mas mais complicada …
Resposta
E quanto a 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
Comentários
- Que ' é o mesmo que
tree --charset nwildner
- Sim. A outra resposta foi editada, portanto, não ´ notei que @terdon deu uma resposta mais completa enquanto eu escrevia a minha;)