Comment puis-je ajouter la commande 'tree' à git-bash sous Windows?

53

J'utilise git-bash sous Windows 7. J'aimerais voir une arborescence du répertoire actuel. Toutefois:

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

OK, alors je n'ai pas la commande d'arborescence. Comment puis-je l'installer? J'ai trouvé un article mais c'était pour Mac.

jcollum
la source
git-bashest vraiment juste une version réduite de Cygwin. Le meilleur moyen d’y aller est d’installer Cygwin à partir de cygwin.com et d’utiliser le gestionnaire de paquets pour l’installation treeou le paquet dans lequel il se trouve (s’il existe).
Allquixotic
2
@allquixotic effectivement ces jours-ci il est Mingw
mercredi

Réponses:

35

Vous pouvez aussi "cmd //c tree"utiliser Windowstree

Explication:

  • Lancez cmd avec l'argument '/ c' et lancez tree, puis terminez

/ C Exécute la commande spécifiée par string puis se termine

(barre oblique supplémentaire pour s'échapper)

/ Une utilisation de courir avec des caractères ascii au cas où il ne s’affiche pas correctement.

Répondu plus en détail ici: https://stackoverflow.com/q/515309/1261166

Viktor Mellgren
la source
2
vous pouvez également ajouter cette commande comme alias à votre ~ / .bashrc:alias tree='cmd //c tree //a
onlyhuman
Cela ne fonctionne plus. Utilisationtree.com /a
automorphe
31

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

Ensuite, j'ai extrait le fichier tree.exe dans C:\Program Files\Git\usr\bin(j'ai ajouté ce dossier au chemin Windows pour le faire fonctionner avec le CMD standard, mais cela fonctionne également avec GITBash). Git Bash avec commande d'arborescence sur Windows

J'espère que cela vous aide en quelque sorte!

Pini Cheyni
la source
2
Fonctionne très bien avec git-bash sur Windows 7, merci!
Cjauvin
2
tree.exe copié dans C: \ Program Files \ Git \ usr \ bin est ce que nous recherchions. Bonne part. Merci. downloads.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip Téléchargez le fichier zip spécifié pour les fichiers binaires, il a tree.exe. Contrairement à essayer de télécharger à partir du site d'origine.
Doogle
1
Dans Windows 10, je C:\Users\myuser\AppData\Local\Programs\Git\usr\bin pense que la règle à suivre est de trouver où se trouvent bash.exe ou git.exe, de monter un dossier, puis de trouver usr / bin / et de placer l'arbre là
Charles L.
10

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

Cependant, il le trouvera si vous appuyez sur tab après avoir tapé tree ou 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$
brouiller
la source
1
génial, a travaillé comme un charme ..
Santosh Kumar Arjunan
7

La construction de l’arbre GnuWin32 est accessible à l’adresse http://gnuwin32.sourceforge.net/packages/tree.htm - vous devrez l’ajouter manuellement à votre chemin si vous n’utilisez pas déjà GnuWin32.

Si vous souhaitez également l'utiliser sur une console Windows, vous devez également renommer ou copier tree.exe, par exemple, lstree.exe, sinon la commande Windows tree aura priorité. L'avantage de la version de GnuWin est qu'elle offre de nombreuses options - par exemple tree -L 2, limiter la profondeur de récursivité à 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.

Comparé à l'arbre 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.
Brian Burns
la source
OMI, c’est le moyen le plus direct d’obtenir tree cmd dans Cygwin et j’ai essayé l’itinéraire de compilation avant sans succès. Avec cela, il vous suffit de télécharger le binaire, de l'extraire dans un dossier du chemin de votre cygwins et de violla, commande d'arborescence
prête à l'emploi
dans cygwin: apt-cyg install treeet tree.exesera dans le bindossier cygwin .
Timo
2

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 le paquet dans lequel il se trouve, ou s'il n'existe pas, installez ensuite gcc, téléchargez le code source de l'arborescence à partir d'ici:

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

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

Jonathan Hartley
la source
Alors est-ce impossible à Minggw?
Jen S.
1
J'imagine que ce n'est pas trop difficile de la part de mingw, mais pas possible à partir de votre invite par défaut git-bash, car j'imagine que git-bash ne contient pas les outils dont vous avez besoin, comme un compilateur C / C ++. Mais vous pouvez essayer d’installer mingw, en veillant à inclure gcc, et en suivant les instructions du fichier INSTALL de l’arborescence. Dans le passé, j’ai utilisé mingw pour compiler de telles choses sous Windows, cette partie est donc tout à fait possible.
Jonathan Hartley
1

Une autre option serait d’utiliser le paquet MinGW; si vous avez déjà installé MinGW, l’arbre y est emballé, il suffit de l’installer en ouvrant un terminal MinGW et en le faisant fonctionner pacman -Sy tree.

Si vous n'avez pas déjà installé MinGW, il est probablement excessif de l'installer uniquement pour la commande tree.

accroché
la source
0

Vous devez installer le Three pour Windows comme indiqué ci-dessus par le lien: http://gnuwin32.sourceforge.net/packages/tree.htm

En outre, vous devez ajouter le programme d'arborescence à votre chemin Windows ou la commande d'arborescence ne sera disponible que sur cmd. Accédez à votre chemin Windows et ajoutez ceci (pour l'installation par défaut):

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

Eux, vous pourrez utiliser la commande tree sur git bash sur windows.

Lucas Amorim Silva
la source
0

C’est le début de mon fichier .gitconfig: j’ai créé un alias pour 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'
Delphine
la source
1
Pas la solution. L'alias indique la validation et non les fichiers / répertoires.
Timo
0

Git pour Windows ( https://gitforwindows.org/ ) (contient Git Bash) mais n'inclut pas tree. treeest disponible pour via pacman(Gestionnaire de paquets), mais uniquement si vous installez "Git pour Windows SDK " (allez au bas de gitforwindows.org/, qui fournit un lien pour télécharger le programme d'installation à partir de https://github.com/ git-for-windows / build-extra / releases / last )

This SO: "Gestion des paquets dans git pour Windows?" était très utile https://stackoverflow.com/questions/32712133/package-management-in-git-for-windows

En outre, comme indiqué dans le responsable de la sécurité ci-dessus, ils sont liés à ce problème git pour Windows [Pacman manquant dans la nouvelle version d'installation 2.5.2 n ° 397] qu'il ne devait pas inclure pacmandans l'installation par défaut.

Quoi qu'il en soit, j'ai installé "Git pour Windows SDK", puis dans l'invite bash (SDK-64), j'ai exécuté ce qui suit pour installer l'arborescence actuelle v1.7.0-1 (à compter 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 pour Windows SDK est installé sous: C:\git-sdk-64, donc de mon Git pour Bash shell Windows (qui n'a pas eu l' arbre installé), je l' ai copié sur tree.exe à lui est / usr / bin, par exemple

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

Maintenant, je peux exécuter la version tree1.7.0 à partir des deux shells Git Bash.

Donc, pour rendre les choses encore plus faciles pour les autres et peut-être moi-même sur une future machine, j’ai cherché à savoir d’où pacmanvenait le treepaquet en le suivant sur 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
...

L’important, c’est que l’ pacmanobtenir à partir du référentiel "msys" (FYI: même s’il indique msys, il utilise vraiment msys2), j’ai donc regardé /etc/pacman.d/mirrorlist.msyset le premier miroir pointe vershttp://repo.msys2.org/msys/$arch/

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

par exemple, lien de téléchargement direct pour l'arbre v1.7.0-1

N. Ngo
la source
1
Pour votre information, le téléchargement de la fenêtre de Git SCM à l' adresse git-scm.com/download extrait la dernière version de Git pour Windows GitHub ( github.com/git-for-windows/git/releases ) à partir de github.com/git-for-windows/git
N. Ngo