jak dodać polecenie „tree” do git-bash w systemie Windows?

53

Korzystam z git-bash na Windows 7. Chciałbym zobaczyć drzewo bieżącego katalogu. Jednak:

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

OK, więc nie mam polecenia drzewa. Jak to zainstalować? Znalazłem artykuł, ale dotyczył komputerów Mac.

jcollum
źródło
git-bashto tak naprawdę tylko odcięta wersja Cygwin. Najlepszym sposobem jest zainstalowanie Cygwin z witryny cygwin.com i użycie menedżera pakietów w celu zainstalowania treedowolnego pakietu (jeśli istnieje).
allquixotic
2
@allquixotic w rzeczywistości w dzisiejszych czasach to mingw
jcollum

Odpowiedzi:

35

Możesz także "cmd //c tree"użyć systemu Windows ”tree

Wyjaśnienie:

  • Uruchom cmd z argumentem „/ c” i uruchom drzewo, a następnie zakończ

/ C Wykonuje polecenie określone przez ciąg, a następnie kończy działanie

(dodatkowe cięcie za ucieczkę)

/ użycie do uruchamiania znaków ascii na wypadek, gdyby nie wyświetlało się poprawnie.

Odpowiedzi udzielono bardziej szczegółowo tutaj: https://stackoverflow.com/q/515309/1261166

Viktor Mellgren
źródło
2
możesz także dodać to polecenie jako alias do ~ / .bashrc:alias tree='cmd //c tree //a
onlyhuman
To już nie działa. Użyjtree.com /a
automorficzny
30

Pobrałem tree.exe w pliku zip stąd http://gnuwin32.sourceforge.net/packages/tree.htm zgodnie z sugestią.

Następnie wyodrębniłem plik tree.exe do C:\Program Files\Git\usr\bin(dodałem ten folder do ścieżki systemu Windows, aby działał ze zwykłym CMD, ale działa również z GITBash). Git Bash z poleceniem drzewa w systemie Windows

Mam nadzieję, że to ci jakoś pomoże!

Pini Cheyni
źródło
2
Działa bardzo dobrze z git-bash na Windows 7, dzięki!
cjauvin,
2
Tree.exe skopiowane do C: \ Program Files \ Git \ usr \ bin jest tym, czego szukaliśmy. Świetny udział. Dzięki. downloads.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip Pobierz plik zip określony dla plików binarnych, które zawiera tree.exe. Przeciwnie, spróbuj pobrać z oryginalnej strony.
Doogle
1
W Windows 10 wprowadzam to, C:\Users\myuser\AppData\Local\Programs\Git\usr\bin myślę, że podstawową zasadą jest znalezienie miejsca bash.exe lub git.exe, przejdź do folderu, a następnie znajdź usr / bin / i umieść tam drzewo
Charles L.
10

W Windows jest już polecenie drzewa - jedynym problemem jest to, że jest to drzewo.com, a git bash nie doda automatycznie rozszerzenia .com i wykona je.

Znajdzie to jednak, jeśli naciśniesz klawisz Tab po wpisaniu drzewa lub tre

Aby zobaczyć pliki, musisz użyć // f - musisz użyć // lub bash pomyśli, że to nazwa folderu

Użyłem również // a, aby wyświetlić linie ascii, ale nie musisz go używać

Przykład:

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$
plama
źródło
1
niesamowite, działało jak urok ..
Santosh Kumar Arjunan
7

Kompilacja drzewa GnuWin32 znajduje się pod adresem http://gnuwin32.sourceforge.net/packages/tree.htm - jeśli nie korzystasz z GnuWin32, musisz dodać ją ręcznie do swojej ścieżki.

Jeśli chcesz go używać na konsoli Windows, musisz także zmienić nazwę lub skopiować tree.exe na coś innego, np. Lstree.exe, w przeciwnym razie polecenie drzewa Windows będzie miało pierwszeństwo. Zaletą wersji GnuWin jest to, że ma wiele opcji - np. tree -L 2Ograniczy głębokość rekurencji do 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.

W porównaniu z drzewem 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
źródło
IMO, jest to najprostszy sposób na uzyskanie cmd drzewa w Cygwin i wcześniej bezskutecznie próbowałem trasy kompilacji. Dzięki temu wystarczy pobrać plik binarny, rozpakować go do folderu na swojej ścieżce cygwins i altówkę, polecenie drzewa po wyjęciu z pudełka
iloveretards
w cygwin: apt-cyg install treei tree.exebędzie w binfolderze cygwin .
Timo,
2

git-bash to tak naprawdę tylko odcięta wersja mingw. Zainstaluj Cygwin z cygwin.com, a następnie użyj menedżera pakietów, aby zainstalować „drzewo” lub dowolny pakiet, w którym on jest, lub jeśli nie istnieje, zainstaluj gcc, pobierz źródło drzewa stąd:

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

Następnie postępuj zgodnie z instrukcjami w pliku INSTALL (make, make install)

Jonathan Hartley
źródło
Czy to niemożliwe w minggw?
Jen S.
1
Wyobrażam sobie, że nie jest to zbyt trudne z mingw, ale nie jest możliwe z domyślnego monitu git-bash, ponieważ wyobrażam sobie, że git-bash nie ma narzędzi potrzebnych jak kompilator C / C ++. Ale możesz spróbować zainstalować mingw, pamiętając o dołączeniu gcc i postępując zgodnie z instrukcjami w drzewie pliku INSTALL. W przeszłości używałem mingw do kompilacji takich rzeczy w systemie Windows, więc ta część jest zdecydowanie możliwa.
Jonathan Hartley
1

Inną opcją byłoby użycie pakietu MinGW, jeśli masz już zainstalowany MinGW, drzewo jest tam spakowane, po prostu zainstaluj go, otwierając terminal MinGW i uruchamiając pacman -Sy tree.

Jeśli nie masz jeszcze zainstalowanego MinGW, prawdopodobnie przesada, aby zainstalować go tylko dla polecenia drzewa.

snaut
źródło
0

Musisz zainstalować Three dla Windows, jak powiedziano powyżej przez link: http://gnuwin32.sourceforge.net/packages/tree.htm

Poza tym musisz dodać program drzewa do ścieżki systemu Windows, w przeciwnym razie polecenie drzewa będzie dostępne tylko na cmd. Przejdź do ścieżki systemu Windows i dodaj to (w przypadku instalacji domyślnej):

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

Będziesz mógł użyć polecenia drzewa na git bash w systemie Windows.

Lucas Amorim Silva
źródło
0

To jest początek mojego pliku .gitconfig: stworzyłem alias dla 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
źródło
1
Nie rozwiązanie. Alias ​​pokazuje zatwierdzenie, a nie pliki / katalogi.
Timo,
0

Git dla Windows ( https://gitforwindows.org/ ) (ma Git Bash), ale nie obejmuje tree. treejest dostępny za pośrednictwem pacman(Menedżera pakietów), ale jest on dostępny tylko wtedy, gdy zainstalujesz „Git dla Windows SDK ” (przewiń w dół do gitforwindows.org/, który zawiera link do pobrania instalatora dla niego z https://github.com/ git-for-windows / build-extra / releases / latest )

To SO: „Zarządzanie pakietami w git dla Windows?” był bardzo pomocny https://stackoverflow.com/questions/32712133/package-management-in-git-for-windows

Ponadto, jak skomentowano w powyższym SO, odsyłają do tego problemu z systemem git dla systemu Windows [brak Pacmana w nowej instalacji 2.5.2 # 397], którego nie zamierzano uwzględniać pacmanw instalacji domyślnej.

W każdym razie zainstalowałem „Git dla Windows SDK”, a następnie w jego poleceniu bash (SDK-64) uruchomiłem następujące oprogramowanie, aby zainstalować bieżące drzewo v1.7.0-1 (na dzień 30 sierpnia 2018 r.):

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

W moim systemie Git dla Windows SDK jest zainstalowany pod C:\git-sdk-64:, więc z mojej powłoki Git dla Windows Bash (która nie ma zainstalowanego drzewa), skopiowałem go przez tree.exe do katalogu / usr / bin, np.

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

Teraz mogę uruchomić treewersję 1.7.0 z obu powłok Git Bash.

Aby więc ułatwić innym i być może na przyszłym komputerze, sprawdziłem, skąd pacmanbierze się ten treepakiet, uruchamiając następujące polecenia w terminalu Bash Git dla Windows:

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

Kluczową rzeczą jest to, że pacmanjest to pobieranie z repozytorium „msys” (FYI: nawet jeśli mówi msys, to naprawdę używa msys2), więc spojrzałem na /etc/pacman.d/mirrorlist.msysi pierwsze lustro wskazujehttp://repo.msys2.org/msys/$arch/

Więc następnym razem, gdy będziesz chciał pakietu, który NIE jest w Git dla Windows, możesz go pobrać ze strony: http://repo.msys2.org/msys/x86_64/ (dla wersji 64-bitowej) lub z http: //repo.msys2 .org / msys / i686 / (32-bit)

np. bezpośredni link do pobrania dla drzewa v1.7.0-1

N. Ngo
źródło
1
FYI: Pobieranie okna Git SCM z witryny git-scm.com/download pobiera najnowsze informacje z Git dla Windows GitHub ( github.com/git-for-windows/git/releases ) z github.com/git-for-windows/git
N. Ngo