如何在Windows上的git-bash中添加“ tree”命令?


53

我在Windows 7上使用git-bash。我想查看当前目录的树。然而:

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

好,所以我没有树命令。如何安装?我找到了一篇文章,但这是针对Mac的。


git-bash实际上只是Cygwin的简化版本。最好的方法是从cygwin.com安装Cygwin,然后使用那里的程序包管理器安装tree或安装其中的任何程序包(如果存在)。
allquixotic

2
@allquixotic其实这些天它的MinGW
jcollum

Answers:


35

您也"cmd //c tree"可以使用Windowstree

说明:

  • 使用'/ c'参数启动cmd并运行树,然后终止

/ C执行由字符串指定的命令,然后终止

(用于转义的斜线)

/ a用于显示ascii字符,以防显示不正确。

在这里更详细地回答:https : //stackoverflow.com/q/515309/1261166


2
您也可以将此命令作为别名添加到您的〜/ .bashrc中:alias tree='cmd //c tree //a
仅在

这不再起作用。使用tree.com /a
自变形

30

按照建议,我已经从http://gnuwin32.sourceforge.net/packages/tree.htm下载了zip文件中的tree.exe 。

然后,我将tree.exe文件解压缩到C:\Program Files\Git\usr\bin(我已将此文件夹添加到Windows路径中,以使其与常规CMD一起使用,但也与GITBash一起使用)。 在Windows上使用树命令执行Git Bash

希望这对您有所帮助!


2
在Windows 7上与git-bash配合使用效果很好,谢谢!
cjauvin

2
我们一直在寻找将tree.exe复制到C:\ Program Files \ Git \ usr \ bin。大份额。谢谢。downloads.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip下载为其具有tree.exe的二进制文件指定的zip。相反,请尝试从原始站点下载。
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并执行它。

但是,如果您在键入tree或tre后按下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 tree命令将优先。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,这是在Cygwin中获取tree cmd的最直接方法,我在未成功之前尝试了编译路线。这样,您只需下载二进制文件,然后将其解压缩到cygwins路径和violla上的文件夹中,开箱即用的树命令
iloveretards

在cygwin中:apt-cyg install tree并且tree.exe将在cygwin bin文件夹中。
Timo

2

git-bash实际上只是mingw的简化版本。从cygwin.com安装Cygwin,然后使用软件包管理器安装“ tree”或其中包含的任何软件包,或者如果不存在,则安装gcc,然后从此处下载树源:

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

然后按照INSTALL文件中的说明进行操作(进行安装)


那么在Minggw不可能吗?
Jen S.

1
我以为mingw不太难,但是从默认git-bash提示符下是不可能的,因为我想git-bash并没有像C / C ++编译器那样需要的工具。但是您可以尝试安装mingw,确保包含gcc,并按照树中INSTALL文件中的说明进行操作。过去,我曾使用mingw在Windows上编译类似的内容,因此这部分绝对是可能的。
乔纳森·哈特利

1

另一种选择是使用MinGW软件包,如果您已经安装了MinGW,树被打包在那里,只需打开MinGW终端并运行即可安装它pacman -Sy tree

如果您尚未安装MinGW,则只为tree命令安装它可能就太过头了。



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
不是解决方案。别名显示提交,而不显示文件/目录。
Timo

0

适用于Windows的Git(https://gitforwindows.org/)(具有Git Bash),但不包含treetree可通过pacman(Package Manager)使用,但仅当您安装“ 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中所述,它们链接到Windows的git问题[在新的2.5.2安装#397上缺少吃豆子],其目的是不包括pacman在默认安装中。

无论如何,我安装了“ Git for Windows SDK”,然后在bash提示符(SDK-64)中运行了以下命令以安装当前树v1.7.0-1(截至2018年8月30日发布):

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

在我的系统上,适用于Windows SDK的Git安装在以下位置:C:\git-sdk-64,因此从适用于Windows Bash的Git Shell(未安装树)中,将它通过tree.exe复制到了它的/ usr / bin目录中,例如

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

现在,我可以tree从两个Git Bash shell 运行v1.7.0。

因此,为了使其他人(也许我自己)在将来的机器上变得更容易,我通过在Windows SDK Bash Git终端中运行以下命令来查看从何处pacman获取tree软件包:

$ 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的Window在git-scm.com/download上的下载从Git for Windows GitHub(github.com/git-for-windows/git/releases)的最新版本github.com/git-for-windows/git
N.Ngo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.