Как добавить команду «дерево» в Git-Bash на Windows?


53

Я использую git-bash в Windows 7. Я хотел бы увидеть дерево текущего каталога. Тем не мение:

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

ОК, поэтому у меня нет команды дерева. Как мне это установить? Я нашел статью, но она была для Mac.


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

2
@allquixotic на самом деле это
Mingw

Ответы:


35

Вы также можете использовать "cmd //c tree"для использования Windowstree

Объяснение:

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

/ C Выполняет команду, указанную в строке, а затем завершается

(дополнительная косая черта для побега)

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

Более подробно ответили здесь: https://stackoverflow.com/q/515309/1261166


2
Вы также можете добавить эту команду в качестве псевдонима для вашего ~ / .bashrc:alias tree='cmd //c tree //a
onlyhuman

Это больше не работает. Использованиеtree.com /a
автоморфное

31

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

Затем я извлек файл tree.exe в C:\Program Files\Git\usr\bin(я добавил эту папку в путь Windows, чтобы он работал с обычным CMD, но он также работает и с GITBash). Git Bash с командой дерева на окнах

Я надеюсь, что это поможет вам как-то!


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 Загрузите zip- файл, указанный для двоичных файлов, в которых есть tree.exe. Наоборот попробуйте скачать с оригинального сайта.
Doogle

1
В Windows 10 я вставил это, C:\Users\myuser\AppData\Local\Programs\Git\usr\bin я думаю, что эмпирическое правило заключается в том, чтобы найти, где находятся bash.exe или git.exe, перейти в папку, затем найти usr / bin / и поместить туда дерево
Charles L.

10

В Windows уже есть команда дерева - единственная проблема - это tree.com, и git bash не будет автоматически добавлять расширение .com и выполнять его.

Однако он найдет его, если вы нажмете клавишу Tab после того, как наберете дерево или тре

Чтобы увидеть файлы, которые вы должны использовать // 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 и винт, из дерева команды из коробки
rekciltnuc

в 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 (make, make install)


Так разве это невозможно в minggw?
Джен С.

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

1

Другой вариант - использовать пакет MinGW, если у вас уже установлен MinGW, там упаковано дерево, просто установите его, открыв терминал MinGW и запустив его pacman -Sy tree.

Если у вас не установлен MinGW, возможно, его просто не стоит устанавливать только для команды дерева.


0

Вы должны установить Three for Windows, как указано выше по ссылке: http://gnuwin32.sourceforge.net/packages/tree.htm

Кроме того, вам нужно добавить программу дерева в путь к Windows, иначе команда дерева будет доступна только в cmd. Получите доступ к пути Windows и добавьте это (для установки по умолчанию):

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

Их вы сможете использовать командой tree на git bash на windows.


0

Это начало моего файла .gitconfig: я создал псевдоним для 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
Не решение. Псевдоним показывает коммит, а не файлы / каталоги.
Тимо

0

Git для Windows ( https://gitforwindows.org/ ) (есть Git Bash), но он не включает tree. treeдоступно через pacman(Диспетчер пакетов), но доступно только в том случае, если вы устанавливаете «Git для Windows SDK » (прокрутите страницу вниз до gitforwindows.org/, где есть ссылка для загрузки установщика для него с https://github.com/ git-for-windows / build-extra / release / latest )

Это ТАК: "Управление пакетами в git для windows?" было очень полезно https://stackoverflow.com/questions/32712133/package-management-in-git-for-windows

Также, как прокомментировано в приведенном выше SO, они ссылаются на эту проблему с git for windows [Pacman отсутствует в новой версии 2.5.2 установки # 397], которую он не должен был включать pacmanв установку по умолчанию.

В любом случае, я установил «Git для Windows SDK», затем в командной строке bash (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 для 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» (к вашему сведению: хотя в нем указано «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
К сведению: загрузка окна 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.