come posso aggiungere il comando 'tree' a git-bash su Windows?


53

Sto usando git-bash su Windows 7. Mi piacerebbe vedere un albero della directory corrente. Tuttavia:

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

OK, quindi non ho il comando tree. Come lo installo? Ho trovato un articolo ma era per Mac.


git-bashè davvero solo una versione ridotta di Cygwin. Il modo migliore per farlo è installare Cygwin da cygwin.com e utilizzare il gestore pacchetti lì per installare treeo qualunque pacchetto si trovi (se esiste).
allquixotic

2
@allquixotic attualmente è in arrivo
jcollum il

Risposte:


35

Puoi anche usare "cmd //c tree"per usare Windows 'tree

Spiegazione:

  • Avviare cmd con argomento '/ c' ed eseguire tree, quindi terminare

/ C Esegue il comando specificato da stringa e quindi termina

(barra extra per la fuga)

/ a utilizzare per eseguire i caratteri ASCII nel caso in cui non venga visualizzato correttamente.

Risposto in maggior dettaglio qui: https://stackoverflow.com/q/515309/1261166


2
puoi anche aggiungere questo comando come alias al tuo ~ / .bashrc:alias tree='cmd //c tree //a
onlyhuman

Questo non funziona più. Usatree.com /a
automorfo il

31

Ho scaricato il file tree.exe all'interno del file zip da qui http://gnuwin32.sourceforge.net/packages/tree.htm come suggerito.

Quindi ho estratto il file tree.exe in C:\Program Files\Git\usr\bin(ho aggiunto questa cartella al percorso di Windows per farlo funzionare con il normale CMD ma funziona anche con GITBash). Git Bash con comando ad albero su windows

Spero che questo ti aiuti in qualche modo!


2
Funziona molto bene con git-bash su Windows 7, grazie!
cjauvin,

2
tree.exe copiato in C: \ Programmi \ Git \ usr \ bin è quello che stavamo cercando. Grande condivisione. Grazie. downloads.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip Scarica il file zip specificato per i file binari che ha tree.exe. Al contrario, prova a scaricare dal sito originale.
Doogle,

1
In Windows 10 lo inserisco, C:\Users\myuser\AppData\Local\Programs\Git\usr\bin penso che la regola empirica sia trovare dove si trovano bash.exe o git.exe, andare su una cartella, quindi trovare usr / bin / e mettere l'albero lì
Charles L.

10

C'è già un comando ad albero in Windows - l'unico problema è che è tree.com e git bash non aggiungerà automaticamente l'estensione .com ed eseguirà.

Tuttavia lo troverà se premi tab dopo aver digitato tree o tre

Per vedere i file devi usare // f - devi usare // o bash penserà che sia il nome della cartella

Ho anche usato // a per mostrare le linee ASCII ma non è necessario usarlo

Esempio:

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
fantastico, ha funzionato come un fascino ..
Santosh Kumar Arjunan,

7

La build dell'albero di GnuWin32 è su http://gnuwin32.sourceforge.net/packages/tree.htm - se non si utilizza già GnuWin32, è necessario aggiungerlo manualmente al proprio percorso.

Se si desidera utilizzarlo su una console di Windows, è necessario rinominare o copiare tree.exe in qualcos'altro, ad esempio lstree.exe, altrimenti il ​​comando dell'albero di Windows avrà la precedenza. Il vantaggio della versione GnuWin è che ha molte opzioni, ad es. tree -L 2Limitare la profondità di ricorsione 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.

Rispetto all'albero di 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.

IMO, questo è il modo più semplice per ottenere il cmd dell'albero in Cygwin e ho provato il percorso di compilazione prima senza successo. Con questo basta scaricare il file binario, estrarlo in una cartella sul percorso di cygwins e violla, comando albero
pronto all'uso

in cygwin: apt-cyg install treee tree.exesarà nella bincartella cygwin .
Timo,

2

git-bash è davvero solo una versione ridotta di Mingw. Installa Cygwin da cygwin.com, quindi usa il gestore pacchetti per installare 'tree' o qualunque pacchetto si trovi, o se non esiste, quindi installa gcc, scarica la fonte dell'albero da qui:

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

Quindi seguire le istruzioni nel file INSTALL (make, make install)


Quindi è impossibile in Minggw?
Jen S.,

1
Immagino che non sia troppo difficile da parte di mingw, ma non è possibile dal tuo prompt predefinito di git-bash, perché immagino che git-bash non abbia strumenti di cui hai bisogno come un compilatore C / C ++. Ma potresti provare a installare mingw, assicurandoti di includere gcc e seguendo le istruzioni nel file INSTALL dell'albero. Ho usato mingw per compilare cose come questa su Windows in passato, quindi questa parte è sicuramente possibile.
Jonathan Hartley,

1

Un'altra opzione sarebbe quella di utilizzare il pacchetto MinGW, se hai già installato MinGW, l'albero è impacchettato lì, basta installarlo aprendo un terminale MinGW ed eseguendolo pacman -Sy tree.

Se non hai già installato MinGW, probabilmente è eccessivo installarlo solo per il comando tree.


0

È necessario installare il Three per Windows come indicato sopra dal collegamento: http://gnuwin32.sourceforge.net/packages/tree.htm

Inoltre, devi aggiungere il programma ad albero al tuo percorso di Windows, altrimenti il ​​comando ad albero sarà disponibile solo su cmd. Accedi al tuo percorso di Windows e aggiungi questo (per l'installazione predefinita):

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

Sarai in grado di usare il comando tree su git bash su windows.


0

Questo è l'inizio del mio file .gitconfig: ho creato un alias per 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
Non è la soluzione. L'alias mostra il commit e non i file / dirs.
Timo,

0

Git per Windows ( https://gitforwindows.org/ ) (ha Git Bash) ma non include tree. treeè disponibile tramite pacman(Package Manager) ma è disponibile solo se si installa "Git per Windows SDK " (scorrere fino alla fine di gitforwindows.org/ che fornisce un collegamento per scaricare il programma di installazione da https://github.com/ git-for-windows / build-extra / release / latest )

Questo SO: "Gestione dei pacchetti in git per Windows?" è stato molto utile https://stackoverflow.com/questions/32712133/package-management-in-git-for-windows

Inoltre, come commentato in precedenza, si collegano a questo problema git for windows [Pacman mancante in una nuova installazione 2.5.2 # 397] che si intendeva non includere pacmannell'installazione predefinita.

Ad ogni modo, ho installato "Git per Windows SDK", quindi nel suo prompt di bash (SDK-64) ho eseguito il seguente per installare l'albero corrente v1.7.0-1 (a partire da questa pubblicazione il 30 agosto 2018):

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

Sul mio sistema, Git per Windows SDK è installato sotto C:\git-sdk-64:, quindi dalla mia shell Git per Windows Bash (che non aveva albero installato), l'ho copiato su tree.exe nella sua directory / usr / bin, ad es.

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

Ora posso eseguire treev1.7.0 da entrambe le shell Git Bash.

Quindi, per renderlo ancora più facile per gli altri e forse per me stesso su una macchina futura, ho visto da dove pacmanprendevo il treepacchetto eseguendo seguendo nel mio terminale Git per 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
...

La cosa chiave, qui è che lo pacmansta ottenendo dal repository "msys" (FYI: anche se dice msys, sta davvero usando msys2), quindi ho guardato /etc/pacman.d/mirrorlist.msyse il primo mirror punta ahttp://repo.msys2.org/msys/$arch/

Quindi la prossima volta che vuoi un pacchetto che NON è in Git per Windows, puoi scaricarli da: http://repo.msys2.org/msys/x86_64/ (per 64-bit) o ​​da http: //repo.msys2 .org / msys / i686 / (32-bit)

ad es. collegamento per il download diretto per l'albero v1.7.0-1


1
Cordiali saluti: Il download di Git SCM's Window su git-scm.com/download estrae le ultime novità da Git per Windows GitHub ( github.com/git-for-windows/git/releases ) da github.com/git-for-windows/git
N. Ngo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.