como adiciono o comando 'tree' ao git-bash no Windows?


53

Estou usando o git-bash no Windows 7. Gostaria de ver uma árvore do diretório atual. Contudo:

jcollum@DEVELOPER01 ~/Dev/express_coffee            
$ tree .                                            
sh.exe": tree: command not found

OK, então não tenho o comando tree. Como instalo? Encontrei um artigo, mas era para Macs.


git-bashé realmente apenas uma versão reduzida do Cygwin. O melhor caminho é instalar o Cygwin a partir do cygwin.com e usar o gerenciador de pacotes para instalar treeou qualquer pacote em que esteja (se existir).
allquixotic

2
@allquixotic na verdade nos dias de hoje é mingw
jcollum

Respostas:


35

Você também pode "cmd //c tree"usar o Windows 'tree

Explicação:

  • Inicie o cmd com o argumento '/ c', execute a árvore e finalize

/ C Executa o comando especificado por string e finaliza

(barra extra para escapar)

/ Um uso para executar com caracteres ASCII, caso não seja exibido corretamente.

Respondida em mais detalhes aqui: https://stackoverflow.com/q/515309/1261166


2
você também pode adicionar este comando como um alias ao seu ~ / .bashrc:alias tree='cmd //c tree //a
onlyhuman

Isso não funciona mais. Usetree.com /a
automorphic

30

Eu baixei o tree.exe dentro do arquivo zip aqui http://gnuwin32.sourceforge.net/packages/tree.htm, conforme sugerido.

Depois extraí o arquivo tree.exe C:\Program Files\Git\usr\bin(adicionei esta pasta ao caminho do Windows para fazê-lo funcionar com o CMD comum, mas também com o GITBash). Git Bash com comando em árvore no Windows

Espero que isso ajude você de alguma forma!


2
Funciona muito bem com o git-bash no Windows 7, obrigado!
cjauvin

2
tree.exe copiado para C: \ Arquivos de Programas \ Git \ usr \ bin é o que estávamos procurando. Grande parte. Obrigado. downloads.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip Faça o download do zip especificado para os binários com o tree.exe. Ao contrário, tente fazer o download no site original.
Doogle

1
No Windows 10, eu coloco isso em C:\Users\myuser\AppData\Local\Programs\Git\usr\bin Acho que a regra geral é descobrir onde estão localizados o bash.exe ou o git.exe, suba uma pasta, encontre usr / bin / e coloque a árvore lá
Charles L.

10

Já existe um comando tree no Windows - o único problema é o tree.com e o git bash não adiciona automaticamente a extensão .com e a executa.

No entanto, ele será encontrado se você pressionar tab depois de digitar tree ou tre

Para ver os arquivos que você tem que usar // f - você tem que usar // ou o bash acha que é o nome da pasta

Eu também usei // a para mostrar linhas ascii, mas você não precisa usá-lo

Exemplo:

dean@dean:~/java$ tree
bash: tree: command not found
dean@dean:~/java$ tree.com //a
Folder PATH listing for volume c
Volume serial number is 4E70-B37A
C:.
+---atom
+---sublime
\---vscode
dean@dean:~/java$ tree.com //a //f
Folder PATH listing for volume c
Volume serial number is 4E70-B37A
C:.
+---atom
|       test1
|
+---sublime
|       test2
|
\---vscode
        test3

dean@dean:~/java$

1
incrível, funcionou como um encanto ..
Santosh Kumar Arjunan

7

A construção da árvore do GnuWin32 está em http://gnuwin32.sourceforge.net/packages/tree.htm - você precisará adicioná-lo ao seu caminho manualmente se ainda não estiver usando o GnuWin32.

Se você quiser usá-lo em um console do Windows, precisará renomear ou copiar o tree.exe para outra coisa, por exemplo, lstree.exe, caso contrário, o comando da árvore do Windows terá precedência. A vantagem da versão GnuWin é que ela tem muitas opções - por exemplo tree -L 2, limitaria a profundidade da recursão a 2.

> tree --help
usage: tree [-adfghilnpqrstuvxACDFNS] [-H baseHREF] [-T title ] [-L level [-R]]
        [-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes]
        [--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset]
        [--filelimit #] [<directory list>]
  -a            All files are listed.
  -d            List directories only.
  -l            Follow symbolic links like directories.
  -f            Print the full path prefix for each file.
  -i            Don't print indentation lines.
  -q            Print non-printable characters as '?'.
  -N            Print non-printable characters as is.
  -p            Print the protections for each file.
  -u            Displays file owner or UID number.
  -g            Displays file group owner or GID number.
  -s            Print the size in bytes of each file.
  -h            Print the size in a more human readable way.
  -D            Print the date of last modification.
  -F            Appends '/', '=', '*', or '|' as per ls -F.
  -v            Sort files alphanumerically by version.
  -r            Sort files in reverse alphanumeric order.
  -t            Sort files by last modification time.
  -x            Stay on current filesystem only.
  -L level      Descend only level directories deep.
  -A            Print ANSI lines graphic indentation lines.
  -S            Print with ASCII graphics indentation lines.
  -n            Turn colorization off always (-C overrides).
  -C            Turn colorization on always.
  -P pattern    List only those files that match the pattern given.
  -I pattern    Do not list files that match the given pattern.
  -H baseHREF   Prints out HTML format with baseHREF as top directory.
  -T string     Replace the default HTML title and H1 header with string.
  -R            Rerun tree when max dir level reached.
  -o file       Output to file instead of stdout.
  --inodes      Print inode number of each file.
  --device      Print device ID number to which each file belongs.
  --noreport    Turn off file/directory count at end of tree listing.
  --nolinks     Turn off hyperlinks in HTML output.
  --dirsfirst   List directories before files.
  --charset X   Use charset X for HTML and indentation line output.
  --filelimit # Do not descend dirs with more than # files in them.

Comparado com a árvore do Windows:

> tree /?
Graphically displays the folder structure of a drive or path.

TREE [drive:][path] [/F] [/A]

   /F   Display the names of the files in each folder.
   /A   Use ASCII instead of extended characters.

Na IMO, essa é a maneira mais direta de obter o cmd de árvore no Cygwin e tentei a rota de compilação antes sem êxito. Com isso, você apenas baixar o binário, extraí-lo para uma pasta no seu caminho cygwins e Violla, comando árvore fora da caixa
iloveretards

no cygwin: apt-cyg install treee tree.exeestará na binpasta cygwin .
Timo

2

O git-bash é realmente apenas uma versão reduzida do mingw. Instale o Cygwin a partir do cygwin.com e use o gerenciador de pacotes para instalar 'tree' ou qualquer pacote em que esteja, ou se não existir, instale o gcc, faça o download da fonte da árvore aqui:

http://mama.indstate.edu/users/ice/tree/

Em seguida, siga as instruções no arquivo INSTALL (make, make install)


Então, é impossível no minggw?
Jen S.

1
Eu imagino que não seja muito difícil do mingw, mas não é possível no prompt padrão do git-bash, porque imagino que o git-bash não vem com as ferramentas necessárias, como um compilador C / C ++. Mas você pode tentar instalar o mingw, certificando-se de incluir o gcc e seguir as instruções no arquivo INSTALL da árvore. Eu usei o mingw para compilar coisas como essa no Windows no passado, então essa parte é definitivamente possível.
Jonathan Hartley

1

Outra opção seria usar o pacote MinGW, se você já possui o MinGW instalado, a árvore é empacotada lá, basta instalá-lo abrindo um terminal MinGW e executando pacman -Sy tree.

Se você ainda não possui o MinGW instalado, provavelmente é um exagero instalá-lo apenas para o comando tree.


0

Você deve instalar o Three for Windows, conforme mencionado acima, pelo link: http://gnuwin32.sourceforge.net/packages/tree.htm

Além disso, você precisa adicionar o programa em árvore ao caminho do Windows ou o comando em árvore estará disponível apenas no cmd. Acesse o caminho do Windows e adicione este (para instalação padrão):

;C:\Program Files (x86)\GnuWin32\bin

Eles você poderá usar o comando tree no git bash no windows.


0

Este é o começo do meu arquivo .gitconfig: Criei um alias para log --graph

# This is Git's per-user configuration file.
[user]
# Please adapt and uncomment the following lines:
    name = xxxxxx
    email = xxx@xxx.xxx 
[alias]
    tree = log --graph --oneline --all --pretty=format:'%C(yellow)%h%Creset -%Cred%d%Creset %s %Cgreen%cr%Creset %C(cyan)%an%Creset %gn'

1
Não é a solução. O alias mostra o commit e não os arquivos / dirs.
Timo

0

Git para Windows ( https://gitforwindows.org/ ) (possui Git Bash), mas não inclui tree. treeestá disponível para via pacman(Package Manager), mas só estará disponível se você instalar o "Git for Windows SDK " (role para a parte inferior do gitforwindows.org/, que fornece um link para baixar o instalador em https://github.com/ git-for-windows / build-extra / releases / mais recente )

Este SO: "Gerenciamento de pacotes no git for windows?" foi muito útil https://stackoverflow.com/questions/32712133/package-management-in-git-for-windows

Também como comentado no SO acima, eles apontam para este problema do git for windows [Pacman ausente na nova instalação 2.5.2 # 397] que ele pretendia não incluir pacmanna instalação padrão.

De qualquer forma, instalei o "Git for Windows SDK" e, em seu prompt do bash (SDK-64), executei o seguinte para instalar a árvore atual v1.7.0-1 (a partir desta publicação em 30 de agosto de 2018):

[SDK-64: Bash Terminal for Git for Windows SDK]
pacman -S tree
...
Proceed with installation? [Y/n] Y

No meu sistema, o Git for Windows SDK é instalado em C:\git-sdk-64:, portanto, no shell Bash do Git for Windows (que não tinha árvore instalada), eu o copiei no tree.exe para o diretório / usr / bin, por exemplo

[MINGW64: Bash Terminal for Git for Windows]
cd /usr/bin
cp /c/git-sdk-64/usr/bin/tree.exe .

Agora eu posso executar a treev1.7.0 de ambos os shells do Git Bash.

Portanto, para tornar ainda mais fácil para os outros e talvez para mim mesmo em uma máquina futura, observei de onde pacmanestava conseguindo o treepacote executando o seguinte no meu terminal Git for Windows SDK Bash:

$ pacman -S --info tree
Repository      : msys
Name            : tree
Version         : 1.7.0-1
Description     : A directory listing program displaying a depth indented list of files
Architecture    : x86_64
...

O principal, aqui, pacmané obtê-lo no repositório "msys" (FYI: mesmo que diga msys, ele realmente está usando o msys2), então olhei /etc/pacman.d/mirrorlist.msyse o primeiro espelho aponta parahttp://repo.msys2.org/msys/$arch/

Portanto, da próxima vez que você desejar um pacote que NÃO esteja no Git for Windows, faça o download em: http://repo.msys2.org/msys/x86_64/ (para 64 bits) ou em http: //repo.msys2 .org / msys / i686 / (32 bits)

por exemplo, link de download direto para a árvore v1.7.0-1


1
FYI: O download da janela do Git SCM em git-scm.com/download obtém as últimas informações do Git for Windows GitHub ( github.com/git-for-windows/git/releases ) em github.com/git-for-windows/git
N. Ngo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.