¿Cómo agrego el comando 'árbol' a git-bash en Windows?

53

Estoy usando git-bash en Windows 7. Me gustaría ver un árbol del directorio actual. Sin embargo:

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

OK, entonces no tengo el comando del árbol. ¿Como lo instalo? Encontré un artículo pero era para Mac.

jcollum
fuente
git-bashes realmente solo una versión reducida de Cygwin. La mejor manera de hacerlo es instalar Cygwin desde cygwin.com, y usar el administrador de paquetes allí para instalar treeo cualquier paquete en el que esté (si existe).
allquixotic
2
@allquixotic en estos días es mingw
jcollum

Respuestas:

35

También podría usar "cmd //c tree"para usar Windows 'tree

Explicación:

  • Inicie cmd con el argumento '/ c' y ejecute el árbol, luego finalice

/ C Ejecuta el comando especificado por cadena y luego termina

(barra extra para escapar)

/ un uso para ejecutar con caracteres ascii en caso de que no se muestre correctamente.

Respondido en mayor detalle aquí: https://stackoverflow.com/q/515309/1261166

Viktor Mellgren
fuente
2
también puede agregar este comando como un alias a su ~ / .bashrc:alias tree='cmd //c tree //a
onlyhuman
Esto ya no funciona. Usotree.com /a
automorphic
31

He descargado el tree.exe dentro del archivo zip desde aquí http://gnuwin32.sourceforge.net/packages/tree.htm como se sugiere.

Luego extraje el archivo tree.exe C:\Program Files\Git\usr\bin(agregué esta carpeta a la ruta de Windows para que funcione con el CMD normal pero también funciona con GITBash). Git Bash con comando de árbol en windows

¡Espero que esto te ayude de alguna manera!

Pini Cheyni
fuente
2
Funciona muy bien con git-bash en Windows 7, ¡gracias!
cjauvin
2
tree.exe copiado a C: \ Archivos de programa \ Git \ usr \ bin es lo que estábamos buscando. Gran parte Gracias. downloads.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip Descargue el archivo zip especificado para los archivos binarios que tiene tree.exe. Por el contrario, intente descargar desde el sitio original.
Doogle
1
En Windows 10 puse esto C:\Users\myuser\AppData\Local\Programs\Git\usr\bin , creo que la regla general es encontrar dónde se encuentran bash.exe o git.exe, subir una carpeta, luego encontrar usr / bin / y poner el árbol allí
Charles L.
10

Ya hay un comando de árbol en Windows, el único problema es que es tree.com y git bash no agregará automáticamente la extensión .com y la ejecutará.

Sin embargo, lo encontrará si presiona tab después de escribir tree o tre

Para ver los archivos, debe usar // f, debe usar // o bash pensará que es el nombre de la carpeta

También usé // a para mostrar líneas ascii pero no tienes que usarlo

Ejemplo:

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$
difuminar
fuente
1
impresionante, funcionó a las mil maravillas ..
Santosh Kumar Arjunan
7

La compilación del árbol GnuWin32 se encuentra en http://gnuwin32.sourceforge.net/packages/tree.htm . Tendría que agregarlo a su ruta manualmente si aún no está utilizando GnuWin32.

Si desea usarlo en una consola de Windows, también deberá cambiar el nombre o copiar tree.exe a otra cosa, por ejemplo, lstree.exe, de lo contrario, el comando del árbol de Windows tendrá prioridad. La ventaja de la versión GnuWin es que tiene muchas opciones, por ejemplo tree -L 2, limitaría la profundidad de recursión 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.

En comparación con el árbol 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.
Brian Burns
fuente
En mi opinión, esta es la forma más directa de obtener cmd de árbol en Cygwin y probé la ruta de compilación antes sin éxito. Con esto solo descarga el binario, extráigalo a una carpeta en su ruta de cygwins y violla, comando de árbol fuera de la caja
iloveretards
en cygwin: apt-cyg install treey tree.exeestará en la bincarpeta cygwin .
Timo
2

git-bash es realmente solo una versión reducida de mingw. Instale Cygwin desde cygwin.com, y luego use el administrador de paquetes para instalar 'tree' o cualquier paquete en el que esté, o si no existe, instale gcc, descargue la fuente del árbol desde aquí:

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

Luego siga las instrucciones en el archivo INSTALL (make, make install)

Jonathan Hartley
fuente
Entonces, ¿es imposible en minggw?
Jen S.
1
Me imagino que no es demasiado difícil de mingw, pero no es posible desde el indicador predeterminado de git-bash, porque imagino que git-bash no viene con las herramientas que necesita como un compilador C / C ++. Pero puede intentar instalar mingw, asegurándose de incluir gcc y siguiendo las instrucciones en el archivo INSTALL del árbol. He usado mingw para compilar cosas como esta en Windows en el pasado, por lo que esta parte es definitivamente posible.
Jonathan Hartley
1

Otra opción sería usar el paquete MinGW, si ya tiene instalado MinGW, el árbol está empaquetado allí, simplemente instálelo abriendo un terminal MinGW y ejecutándolo pacman -Sy tree.

Si aún no tiene instalado MinGW, probablemente sea excesivo instalarlo solo para el comando del árbol.

snaut
fuente
0

Debe instalar el Three para Windows como se indicó anteriormente en el enlace: http://gnuwin32.sourceforge.net/packages/tree.htm

Además de eso, debe agregar el programa de árbol a su ruta de Windows o el comando de árbol estará disponible solo en cmd. Acceda a su ruta de Windows y agregue esto (para la instalación predeterminada):

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

Podrán usar el comando de árbol en git bash en windows.

Lucas Amorim Silva
fuente
0

Este es el comienzo de mi archivo .gitconfig: hice un 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'
Delfina
fuente
1
No es la solucion. El alias muestra la confirmación y no los archivos / directorios.
Timo
0

Git para Windows ( https://gitforwindows.org/ ) (tiene Git Bash) pero no incluye tree. treeestá disponible a través de pacman(Package Manager), pero solo está disponible si instala "Git for Windows SDK " (desplácese hasta la parte inferior de gitforwindows.org/ que proporciona un enlace para descargar el instalador desde https://github.com/ git-for-windows / build-extra / releases / latest )

Este SO: "¿Gestión de paquetes en git para windows?" fue muy útil https://stackoverflow.com/questions/32712133/package-management-in-git-for-windows

También como se comentó en el SO anterior, se vinculan a este problema de git para Windows [falta Pacman en la nueva instalación 2.5.2 # 397] que estaba destinado a no incluir pacmanen la instalación predeterminada.

De todos modos, instalé "Git for Windows SDK", luego en su bash prompt (SDK-64) ejecuté lo siguiente para instalar el árbol actual v1.7.0-1 (a partir de esta publicación el 30 de agosto de 2018):

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

En mi sistema, el SDK de Git para Windows se instala en:, C:\git-sdk-64así que desde mi shell Bash de Git para Windows (que no tenía el árbol instalado), lo copié sobre tree.exe en su directorio / usr / bin, p. Ej.

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

Ahora puedo ejecutar treev1.7.0 desde ambos shells de Git Bash.

Entonces, para hacerlo aún más fácil para otros y tal vez para mí mismo en una máquina futura, miré de dónde pacmanobtenía el treepaquete ejecutando el siguiente en mi terminal Git para 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 clave, aquí es que lo pacmanestá obteniendo del repositorio "msys" (FYI: aunque dice msys, realmente está usando msys2), así que miré /etc/pacman.d/mirrorlist.msysy el primer espejo apunta ahttp://repo.msys2.org/msys/$arch/

Entonces, la próxima vez que desee un paquete que NO esté en Git para Windows, puede descargarlos desde: http://repo.msys2.org/msys/x86_64/ (para 64 bits) o desde http: //repo.msys2 .org / msys / i686 / (32 bits)

Por ejemplo, enlace de descarga directa para el árbol v1.7.0-1

N. Ngo
fuente
1
FYI: la descarga de la ventana de Git SCM en git-scm.com/download extrae lo último de Git para Windows GitHub ( github.com/git-for-windows/git/releases ) de github.com/git-for-windows/git
N. Ngo