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

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

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

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

11 ответов

Решение

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

Объяснение:

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

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

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

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

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

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

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

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

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

Сборка дерева 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.

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

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

Также, как прокомментировано в приведенном выше SO, они ссылаются на эту проблему с git for windows [Pacman отсутствует в новой версии 2.5.2 install #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 .

Теперь я могу бежать tree v1.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

В windows 10 найдите tree.com и скопируйте его как tree.exeв папке bin mingw (в моем случае C:\Program Files\Git\mingw64\bin)

Git-Bash на самом деле просто урезанная версия Mingw. Установите Cygwin с сайта cygwin.com, а затем либо воспользуйтесь менеджером пакетов, чтобы установить "дерево", либо каким-либо другим пакетом, в котором он находится, или, если он не существует, установите gcc, скачайте исходный код дерева отсюда:

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

Затем следуйте инструкциям в файле INSTALL (make, make install)

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

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

Это начало моего файла.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'

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

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

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

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

Я использую терминал Windows в Windows 10, и всякий раз, когда мне это нужно, я переключаю терминал, просто набираяcmd, после того, как я получу то, что мне нужно, я могу изменить терминал cmd -> bash, набравbash

Другие вопросы по тегам