“ árvore ” saída do comando com “ pure ” (7 bits) Saída ASCII

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 Unix tree, há ' s nenhum POSIX tree. A única tree 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 usar sed é 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;)

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *