Как добавить команду "дерево" в 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
- 64-разрядная версия: http://repo.msys2.org/msys/x86_64/tree-1.7.0-1-x86_64.pkg.tar.xz
- или https://sourceforge.net/projects/msys2/files/REPOS/MSYS2/x86_64/tree-1.7.0-1-x86_64.pkg.tar.xz
- 32-разрядная версия: http://repo.msys2.org/msys/i686/tree-1.7.0-1-i686.pkg.tar.xz
- или https://sourceforge.net/projects/msys2/files/REPOS/MSYS2/i686/tree-1.7.0-1-i686.pkg.tar.xz
В 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