як додати команду 'tree' до git-bash для Windows?


53

Я використовую git-bash в Windows 7. Я хотів би бачити дерево поточного каталогу. Однак:

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

Гаразд, тому я не маю команди дерева. Як це встановити? Я знайшов статтю, але вона була для Macs.


git-bashнасправді лише скорочена версія Cygwin. Найкращий шлях - це встановити Cygwin з cygwin.com, і використовувати там менеджер пакунків, щоб встановити treeабо будь-який інший пакет, у якому він є (якщо він існує).
allquixotic

2
@allquixotic насправді це mingw
jcollum

Відповіді:


35

Ви також "cmd //c tree"можете використовувати Windows "tree

Пояснення:

  • Запустіть cmd за допомогою аргументу '/ c' та запустіть дерево, а потім завершіть

/ C Виконує команду, задану рядком, а потім закінчує

(додаткова коса риса для втечі)

/ використання для запуску з символами ascii, якщо він не відображається правильно.

Більш детально відповіді тут: https://stackoverflow.com/q/515309/1261166


2
Ви також можете додати цю команду як псевдонім до свого ~ / .bashrc:alias tree='cmd //c tree //a
onlyhuman

Це більше не працює. Використанняtree.com /a
Автоморфні

30

Я завантажив tree.exe всередині zip-файлу звідси http://gnuwin32.sourceforge.net/packages/tree.htm, як було запропоновано.

Потім я вилучив файл tree.exe C:\Program Files\Git\usr\bin(я додав цю папку до шляху Windows, щоб вона працювала зі звичайним CMD, але вона також працює і з GITBash). Git Bash з командою дерева на windows

Сподіваюся, це вам якось допоможе!


2
Дуже добре працює з git-bash на Windows 7, дякую!
cjauvin

2
tree.exe скопійовано в C: \ Program Files \ Git \ usr \ bin - це те, що ми шукали. Велика частка. Дякую. downloads.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip Завантажте поштовий індекс, вказаний для бінарних файлів, у яких є tree.exe. Навпаки, намагайтеся завантажити з оригінального сайту.
Doogle

1
У Windows 10 я вкладаю це, C:\Users\myuser\AppData\Local\Programs\Git\usr\bin я думаю, що правилом є пошук місця bash.exe або git.exe, перейти в папку, потім знайти usr / bin / і поставити там дерево
Чарльз Л.

10

У Windows вже є команда дерева - проблема лише в тому, що це tree.com і git bash не додасть автоматично .com та виконає його.

Однак він знайде його, якщо натиснути вкладку після введення дерева чи тре

Щоб побачити файли, які ви повинні використовувати // f - ви повинні використовувати // або bash подумає, що це ім'я папки

Я також використовував // a для показу ascii рядків, але вам не потрібно його використовувати

Приклад:

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
приголомшливий, працював як шарм ..
Сантош Кумар Арджунан

7

Збірка дерева GnuWin32 знаходиться за адресою http://gnuwin32.sourceforge.net/packages/tree.htm - вам потрібно буде додати його до свого шляху вручну, якщо ви вже не використовуєте GnuWin32.

Якщо ви хочете використовувати його на консолі Windows, вам також потрібно буде перейменувати або скопіювати tree.exe на щось інше, наприклад, lstree.exe, інакше команда дерева Windows матиме перевагу. Перевага версії GnuWin полягає в тому, що вона має багато варіантів - наприклад tree -L 2, обмежить глибину рекурсії до 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.

Порівняно з деревом 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, це самий прямий спосіб отримати cmd дерева у Cygwin, і я спробував компілювати маршрут раніше, ніж безуспішно. За допомогою цього ви просто завантажуєте двійковий файл, витягуєте його в папку на шляху до cygwins та віоли, команду з дерева з поля
iloveretards

у cygwin: apt-cyg install treeі tree.exeбуде в binпапці cygwin .
Тімо

2

git-bash - це справді просто скорочена версія mingw. Встановіть Cygwin з cygwin.com, а потім використовуйте диспетчер пакунків, щоб встановити "дерево" або будь-який інший пакунок, або якщо він не існує, встановіть gcc, завантажте джерело дерева звідси:

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

Потім дотримуйтесь інструкцій у файлі INSTALL (зробити, встановити встановлення)


Так це неможливо в minggw?
Джен С.

1
Я думаю, що це не надто складно з mingw, але це неможливо з вашого підказки git-bash за замовчуванням, тому що я думаю, що git-bash не поставляється з інструментами, які вам потрібні, як компілятор C / C ++. Але ви можете спробувати встановити mingw, включивши gcc та дотримуючись інструкцій у файлі дерева INSTALL. У минулому я використовував mingw для збирання подібних речей у Windows, тому ця частина, безумовно, можлива.
Джонатан Хартлі

1

Іншим варіантом буде використання пакету MinGW, якщо у вас вже встановлено MinGW, дерево там упаковано, просто встановіть його, відкривши термінал MinGW та запустивши pacman -Sy tree.

Якщо у вас вже не встановлено MinGW, це, ймовірно, зайве встановити його лише для команди дерева.


0

Ви повинні встановити Три для Windows, як сказано вище за посиланням: http://gnuwin32.sourceforge.net/packages/tree.htm

Крім того, вам потрібно додати програму дерева до шляху Windows, або команда дерева буде доступна лише на cmd. Відкрийте свій шлях до Windows та додайте це (для встановлення за замовчуванням):

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

Їх ви зможете використовувати команду дерева у git bash на windows.


0

Це початок мого файлу .gitconfig: я зробив псевдонім для журналу --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
Не рішення. Псевдонім показує фіксацію, а не файли / dirs.
Тимо

0

Git для Windows ( https://gitforwindows.org/ ) (має Git Bash), але він не включає tree. treeдоступний для через pacman(Менеджер пакунків), але він доступний лише у тому випадку, якщо ви встановите "Git для Windows SDK " (прокрутіть донизу gitforwindows.org/, що забезпечує посилання на завантаження інсталятора для цього з https://github.com/ git-for-windows / build-extra / випуски / найновіші )

Це ТАК: "Управління пакетами в git для windows?" було дуже корисно https://stackoverflow.com/questions/32712133/package-management-in-git-for-windows

Крім того, як коментується у вищезгаданому запитанні, вони посилаються на цей git для випуску Windows [Pacman відсутній у свіжому 2.5.2 встановлення # 397], який він не повинен був включати pacmanдо встановлення за замовчуванням.

У будь-якому випадку я встановив "Git для Windows SDK", тоді в його bash prompt (SDK-64) я запустив наступне, щоб встановити поточне дерево v1.7.0-1 (станом на цю публікацію 30 серпня 2018):

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

У моїй системі Git для Windows SDK встановлений під:, C:\git-sdk-64тому з моєї оболонки Git для Windows Bash (у якій не було встановлено дерево) я скопіював її через tree.exe в каталог / usr / bin, наприклад

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

Тепер я можу запустити treev1.7.0 з обох оболонок Git Bash.

Отже, щоб зробити це ще простіше для інших, а може бути, і для майбутньої машини, я подивився, звідки pacmanберуть treeпакет, запустивши наступний в моєму терміналі Git for 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
...

Ключовим моментом є те, що pacmanце отримувати його з сховища "msys" (FYI: навіть якщо він говорить msys, він дійсно використовує msys2), тому я подивився /etc/pacman.d/mirrorlist.msysі перше дзеркало вказує наhttp://repo.msys2.org/msys/$arch/

Тож наступного разу, коли ви захочете пакет, який НЕ є у Git для Windows, ви можете завантажити його з: http://repo.msys2.org/msys/x86_64/ (для 64-розрядних) або з http: //repo.msys2 .org / msys / i686 / (32-бітний)

наприклад, пряме посилання для завантаження для дерева v1.7.0-1


1
FYI: Завантаження вікна Git SCM на сайті git-scm.com/download витягує останню інформацію з Git для Windows GitHub ( github.com/git-for-windows/git/releases ) з github.com/git-for-windows/git
Н. Нго
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.