Wie füge ich den Befehl 'tree' zu git-bash unter Windows hinzu?

53

Ich verwende git-bash unter Windows 7. Ich möchte einen Baum des aktuellen Verzeichnisses sehen. Jedoch:

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

OK, also ich habe nicht den Baumbefehl. Wie installiere ich es? Ich habe einen Artikel gefunden, aber er war für Macs.

jcollum
quelle
git-bashist wirklich nur eine abgespeckte Version von Cygwin. Der beste Weg ist, Cygwin von cygwin.com aus zu installieren und dort den Paket-Manager zu verwenden, um das Paket zu installieren tree, in dem es sich befindet (falls vorhanden).
allquixotic
2
@allquixotic tatsächlich in diesen Tagen ist es
mingw

Antworten:

35

Sie könnten auch verwenden "cmd //c tree", um Windows zu verwendentree

Erläuterung:

  • Starten Sie cmd mit dem Argument '/ c' und führen Sie tree aus. Beenden Sie dann

/ C Führt den durch string angegebenen Befehl aus und wird dann beendet

(zusätzlicher Schrägstrich für Flucht)

/ a wird verwendet, um mit ASCII-Zeichen zu laufen, falls dies nicht richtig angezeigt wird.

Hier ausführlicher beantwortet: https://stackoverflow.com/q/515309/1261166

Viktor Mellgren
quelle
2
Sie können diesen Befehl auch als Alias ​​zu Ihrem ~ / .bashrc hinzufügen:alias tree='cmd //c tree //a
onlyhuman
Das funktioniert nicht mehr. Verwenden Sietree.com /a
automorph
30

Ich habe die tree.exe in der zip-Datei von hier http://gnuwin32.sourceforge.net/packages/tree.htm heruntergeladen, wie vorgeschlagen.

Dann habe ich die tree.exe-Datei in extrahiert C:\Program Files\Git\usr\bin(ich habe diesen Ordner zum Windows-Pfad hinzugefügt, damit er mit dem regulären CMD funktioniert, aber es funktioniert auch mit GITBash). Git Bash mit Tree-Befehl unter Windows

Ich hoffe das hilft dir irgendwie!

Pini Cheyni
quelle
2
Funktioniert sehr gut mit Git-Bash unter Windows 7, danke!
Cjauvin
2
tree.exe kopiert nach C: \ Programme \ Git \ usr \ bin ist das, wonach wir gesucht haben. Großer Anteil. Vielen Dank. downloads.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip Laden Sie die Zip-Datei herunter, die für Binärdateien mit der Datei tree.exe angegeben wurde. Versuchen Sie im Gegenteil, von der ursprünglichen Website herunterzuladen.
Doogle
1
In Windows 10 stelle ich dies ein. C:\Users\myuser\AppData\Local\Programs\Git\usr\bin Ich denke, die Faustregel ist, zu finden, wo sich bash.exe oder git.exe befinden, einen Ordner aufzurufen, dann usr / bin / zu finden und den Baum dort abzulegen
Charles L.
10

Es gibt bereits einen Tree-Befehl in Windows. Das einzige Problem ist, dass tree.com und git bash die Erweiterung .com nicht automatisch hinzufügen und ausführen.

Sie wird jedoch gefunden, wenn Sie nach der Eingabe von tree oder tre die Tabulatortaste drücken

Um Dateien zu sehen, die Sie verwenden müssen // f - Sie müssen // verwenden oder Bash wird denken, es ist der Ordnername

Ich habe auch // a verwendet, um ASCII-Zeilen anzuzeigen, aber Sie müssen es nicht verwenden

Beispiel:

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$
verwischen, verschleiern
quelle
1
Super, arbeitete wie ein Zauber ..
Santosh Kumar Arjunan
7

Die GnuWin32-Baumstruktur finden Sie unter http://gnuwin32.sourceforge.net/packages/tree.htm - Sie müssen sie Ihrem Pfad manuell hinzufügen, wenn Sie GnuWin32 nicht bereits verwenden.

Wenn Sie es auch auf einer Windows-Konsole verwenden möchten, müssen Sie tree.exe umbenennen oder in eine andere Datei kopieren, z. B. lstree.exe. Andernfalls hat der Windows-Tree-Befehl Vorrang. Der Vorteil der GnuWin-Version ist, dass sie viele Optionen hat - zB tree -L 2die Rekursionstiefe auf 2 begrenzen würde.

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

Im Vergleich zum Windows-Baum:

> 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
quelle
IMO, dies ist der einfachste Weg, um Tree Cmd in Cygwin zu bekommen, und ich habe die Kompilierungsroute zuvor erfolglos ausprobiert. Hiermit laden Sie einfach die Binärdatei herunter, extrahieren sie in einen Ordner auf Ihrem Cygwins-Pfad und Violla, Tree Command out of the Box
iloveretards
in cygwin: apt-cyg install treeund tree.exebefindet sich im cygwin-ordner bin.
Timo
2

Git-Bash ist wirklich nur eine gekürzte Version von Mingw. Installieren Sie Cygwin von cygwin.com und verwenden Sie dann entweder den Paket-Manager, um "tree" oder das Paket zu installieren, in dem es sich befindet.

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

Folgen Sie dann den Anweisungen in der INSTALL-Datei (make, make install)

Jonathan Hartley
quelle
Also ist es unmöglich in Minggw?
Jen S.
1
Ich könnte mir vorstellen, dass es mit mingw nicht allzu schwierig ist, aber mit Ihrer Standard-Eingabeaufforderung für git-bash nicht möglich, da git-bash meiner Meinung nach keine Tools enthält, die Sie wie einen C / C ++ - Compiler benötigen. Sie können jedoch versuchen, mingw zu installieren, wobei Sie sicherstellen müssen, dass gcc enthalten ist, und die Anweisungen in der Baum-INSTALL-Datei befolgen. Ich habe mingw in der Vergangenheit verwendet, um solche Dinge unter Windows zu kompilieren, daher ist dieser Teil definitiv möglich.
Jonathan Hartley
1

Eine andere Möglichkeit wäre, das MinGW-Paket zu verwenden. Wenn Sie bereits MinGW installiert haben, wird Tree dort gepackt. Installieren Sie es einfach, indem Sie ein MinGW-Terminal öffnen und ausführen pacman -Sy tree.

Wenn Sie MinGW noch nicht installiert haben, ist es wahrscheinlich zu viel des Guten, es nur für den Befehl tree zu installieren.

snaut
quelle
0

Sie müssen Three for Windows wie oben unter folgendem Link installieren: http://gnuwin32.sourceforge.net/packages/tree.htm

Außerdem müssen Sie das Tree-Programm zu Ihrem Windows-Pfad hinzufügen, da der Tree-Befehl sonst nur auf cmd verfügbar ist. Greifen Sie auf Ihren Windows-Pfad zu und fügen Sie diesen hinzu (für die Standardinstallation):

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

Unter Windows können Sie den Befehl tree in git bash verwenden.

Lucas Amorim Silva
quelle
0

Dies ist der Anfang meiner .gitconfig-Datei: Ich habe einen Alias ​​für log --graph erstellt

# 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
quelle
1
Nicht die Lösung. Der Alias ​​zeigt das Commit und nicht die Dateien / Verzeichnisse.
Timo
0

Git für Windows ( https://gitforwindows.org/ ) (hat Git Bash) ist jedoch nicht enthalten tree. treeist für via pacman(Package Manager) verfügbar, dies ist jedoch nur verfügbar, wenn Sie "Git for Windows SDK " installieren (scrollen Sie zum Ende von gitforwindows.org/, das einen Link zum Herunterladen des Installationsprogramms von https://github.com/ enthält. Git-for-Windows / Build-Extra / Releases / Neueste )

Diese SO: "Paketverwaltung in Git für Windows?" war sehr hilfreich https://stackoverflow.com/questions/32712133/package-management-in-git-for-windows

Wie auch in der obigen SO erläutert, verweisen sie auf dieses Git für Windows-Problem [Pacman fehlt bei neuer 2.5.2-Installation Nr. 397], das pacmanin der Standardinstallation nicht enthalten sein sollte .

Wie auch immer, ich habe "Git for Windows SDK" installiert und in der Bash-Eingabeaufforderung (SDK-64) Folgendes ausgeführt, um den aktuellen Tree v1.7.0-1 zu installieren (Stand: 30. August 2018):

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

Auf meinem System ist Git für Windows SDK unter folgendem C:\git-sdk-64Pfad installiert: Von meiner Git für Windows Bash-Shell (auf der kein Tree installiert war) habe ich es über tree.exe in das Verzeichnis / usr / bin kopiert, z

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

Jetzt kann ich treev1.7.0 von beiden Git Bash-Shells ausführen.

Um es anderen und vielleicht mir selbst auf einem zukünftigen Computer noch einfacher zu machen, habe ich mir angesehen, woher pacmandas treePaket stammt, indem ich Folgendes in meinem Git für Windows SDK Bash-Terminal ausgeführt habe:

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

Das pacmanWichtigste hier ist, dass es aus dem "msys" -Repository abgerufen wird (FYI: obwohl dort "msys" steht, wird "msys2" verwendet), also habe ich es mir angesehen /etc/pacman.d/mirrorlist.msysund der erste Spiegel weist darauf hinhttp://repo.msys2.org/msys/$arch/

Wenn Sie also das nächste Mal ein Paket benötigen , das NICHT in Git für Windows enthalten ist, können Sie es von folgender Adresse herunterladen: http://repo.msys2.org/msys/x86_64/ (für 64-Bit) oder http: //repo.msys2 .org / msys / i686 / (32-Bit)

zB direkter Downloadlink für Tree v1.7.0-1

N. Ngo
quelle
1
Zu Ihrer Information : Der Download von Git SCM Windows unter git-scm.com/download bezieht die neuesten Informationen zu Git für Windows GitHub ( github.com/git-for-windows/git/releases ) von github.com/git-for-windows/git
N. Ngo