80 votes

Comment ajouter la commande "tree" à git-bash sous Windows ?

J'utilise git-bash sous Windows 7. J'aimerais voir un arbre du répertoire courant. Cependant :

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

OK, donc je n'ai pas la commande de l'arbre. Comment puis-je l'installer ? J'ai trouvé un article mais c'était pour les Macs.

50voto

danielpops Points 101

J'ai téléchargé le fichier tree.exe dans le fichier zip à partir d'ici. http://gnuwin32.sourceforge.net/packages/tree.htm comme suggéré.

Puis j'ai extrait le fichier tree.exe vers C:\Program Files\Git\usr\bin (J'ai ajouté ce dossier au chemin de Windows pour que cela fonctionne avec le CMD normal mais cela fonctionne aussi avec GITBash). Git Bash with tree command on windows

J'espère que cela vous aidera d'une manière ou d'une autre !

22voto

blur Points 351

Il y a déjà une commande d'arbre dans Windows - le seul problème est qu'elle est tree.com et git bash n'ajoutera pas automatiquement l'extension .com et l'exécuter.

Cependant, il le trouvera si vous appuyez sur tab après avoir tapé arbre o tre

Pour voir les fichiers, vous devez utiliser //f - vous devez utiliser // ou bash pensera que c'est le nom du dossier

J'ai aussi utilisé //a pour afficher les lignes ascii mais vous n'êtes pas obligé de l'utiliser

Exemple :

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$

9voto

PoorLuzer Points 6421

La version GnuWin32 de l'arbre se trouve à l'adresse suivante http://gnuwin32.sourceforge.net/packages/tree.htm - vous devrez l'ajouter manuellement à votre chemin si vous n'utilisez pas déjà GnuWin32.

Si vous voulez l'utiliser sur une console Windows, vous devrez renommer ou copier tree.exe en quelque chose d'autre, par exemple lstree.exe, sinon la commande d'arbre de Windows aura la priorité. L'avantage de la version GnuWin est qu'elle dispose d'un grand nombre d'options - par ex. tree -L 2 limiterait la profondeur de récursion à 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.

Par rapport à l'arbre de 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.

3voto

N. Ngo Points 141

Git pour Windows ( https://gitforwindows.org/ ) (a Git Bash) mais il n'inclut pas tree . tree est disponible via pacman (gestionnaire de paquets) mais il n'est disponible que si vous installez "Git pour Windows". SDK "(faites défiler jusqu'au bas de gitforwindows.org/ qui fournit un lien pour télécharger l'installeur à partir de https://github.com/git-for-Windows/build-extra/releases/latest )

Ce SO : "Gestion des paquets dans git pour Windows" a été très utile. https://stackoverflow.com/questions/32712133/package-management-in-git-for-Windows

De plus, comme indiqué dans le SO ci-dessus, il existe un lien vers ce problème git pour Windows [Pacman missing on fresh 2.5.2 install #397] qu'il était prévu de ne pas inclure. pacman dans l'installation par défaut.

Quoi qu'il en soit, j'ai installé "Git for Windows SDK", puis dans son invite bash (SDK-64), j'ai exécuté la commande suivante suivant pour installer l'arbre actuel v1.7.0-1 (à partir de cette publication le 30 août 2018) :

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

Sur mon système, Git for Windows SDK est installé sous : C:\git-sdk-64 Donc, à partir de mon Git pour Windows Bash Shell (qui n'avait pas d'arbre installé), je l'ai copié sur tree.exe dans son répertoire /usr/bin, par ex.

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

Maintenant je peux courir tree v1.7.0 à partir des deux shells Git Bash.

Donc, pour faciliter encore plus la tâche aux autres et peut-être à moi-même sur une future machine, j'ai regardé où pacman recevait le tree en exécutant ce qui suit dans mon terminal Bash Git for Windows SDK :

$ 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
...

La chose essentielle, ici, c'est que pacman le récupère depuis le dépôt "msys" (FYI : même si c'est écrit msys, il utilise en réalité msys2), donc j'ai regardé dans /etc/pacman.d/mirrorlist.msys et le premier miroir pointe vers http://repo.msys2.org/msys/$arch/

Ainsi, la prochaine fois que vous voudrez un paquet qui n'est PAS dans Git pour Windows, vous pourrez le télécharger à partir du site : http://repo.msys2.org/msys/x86_64/ (pour les 64 bits) ou de http://repo.msys2.org/msys/i686/ (32 bits)

Par exemple, lien de téléchargement direct pour tree v1.7.0-1

2voto

Jonathan Hartley Points 924

Git-bash est vraiment juste une version réduite de mingw. Installez Cygwin depuis cygwin.com, puis utilisez le gestionnaire de paquets pour installer 'tree' ou tout autre paquet dans lequel il se trouve, ou s'il n'existe pas, installez gcc, téléchargez les sources de tree depuis ici :

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

Suivez ensuite les instructions du fichier INSTALL (make, make install)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X