Làm cách nào để thêm lệnh 'cây' vào git-bash trên Windows?


53

Tôi đang sử dụng git-bash trên Windows 7. Tôi muốn xem một cây của thư mục hiện tại. Tuy nhiên:

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

OK, vì vậy tôi không có lệnh cây. Làm thế nào để tôi cài đặt nó? Tôi tìm thấy một bài viết nhưng nó là dành cho máy Mac.


git-bashthực sự chỉ là một phiên bản cắt giảm của Cygwin. Cách tốt nhất để đi là cài đặt Cygwin từ cygwin.com và sử dụng trình quản lý gói ở đó để cài đặt treehoặc bất kỳ gói nào có trong đó (nếu có).
allquixotic

2
@allquixotic thực sự những ngày này là mingw
jcollum

Câu trả lời:


35

Bạn cũng có thể sử dụng "cmd //c tree"để sử dụng Windows 'tree

Giải trình:

  • Khởi chạy cmd với đối số '/ c' và chạy cây, sau đó chấm dứt

/ C Thực hiện lệnh được chỉ định bởi chuỗi và sau đó chấm dứt

(thêm dấu gạch chéo để thoát)

/ a sử dụng để chạy với ký tự ascii trong trường hợp nó không hiển thị đúng.

Đã trả lời chi tiết hơn tại đây: https://stackoverflow.com/q/515309/1261166


2
bạn cũng có thể thêm lệnh này dưới dạng bí danh vào ~ / .bashrc:alias tree='cmd //c tree //a
onlyhuman

Điều này không còn hoạt động. Sử dụngtree.com /a
tự động hóa

30

Tôi đã tải xuống cây.exe trong tệp zip từ đây http://gnuwin32.sourceforge.net/packages/tree.htm theo đề xuất.

Sau đó, tôi đã trích xuất tập tin tree.exe C:\Program Files\Git\usr\bin(Tôi đã thêm thư mục này vào đường dẫn windows để làm cho nó hoạt động với CMD thông thường nhưng nó cũng hoạt động với GITBash). Git Bash với lệnh cây trên cửa sổ

Tôi hy vọng điều này sẽ giúp bạn bằng cách nào đó!


2
Hoạt động rất tốt với git-bash trên Windows 7, cảm ơn!
cjauvin

2
cây.exe được sao chép vào C: \ Chương trình tập tin \ Git \ usr \ bin là những gì chúng tôi đang tìm kiếm. Chia sẻ tuyệt vời. Cảm ơn. download.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip Tải xuống zip được chỉ định cho các nhị phân mà nó có cây.exe. Ngược lại cố gắng tải về từ trang web gốc.
Doogle

1
Trong windows 10 tôi đặt cái này vào trong C:\Users\myuser\AppData\Local\Programs\Git\usr\bin Tôi nghĩ rằng quy tắc của ngón tay cái là tìm vị trí của bash.exe hoặc git.exe, đi lên một thư mục, sau đó tìm usr / bin / và đặt cây ở đó
Charles L.

10

Đã có lệnh cây trong windows rồi - chỉ có vấn đề là cây.com và git bash sẽ không tự động thêm tiện ích mở rộng .com và thực thi nó.

Tuy nhiên, nó sẽ tìm thấy nó nếu bạn nhấn tab sau khi bạn gõ cây hoặc tre

Để xem tệp bạn phải sử dụng // f - bạn phải sử dụng // hoặc bash sẽ nghĩ đó là tên thư mục

Tôi cũng đã sử dụng // a để hiển thị các dòng ascii nhưng bạn không phải sử dụng nó

Thí dụ:

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
tuyệt vời, làm việc như một bùa mê ..
Santosh Kumar Arjunan

7

Bản dựng cây GnuWin32 có tại http://gnuwin32.sourceforge.net/packages/tree.htm - bạn cần thêm nó vào đường dẫn của mình một cách thủ công nếu bạn chưa sử dụng GnuWin32.

Nếu bạn muốn sử dụng nó trong bảng điều khiển Windows, bạn cũng cần đổi tên hoặc sao chép cây.exe sang một thứ khác, ví dụ như lstree.exe, nếu không, lệnh cây Windows sẽ được ưu tiên. Ưu điểm của phiên bản GnuWin là nó có rất nhiều tùy chọn - ví dụ: tree -L 2sẽ giới hạn độ sâu đệ quy xuống còn 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.

So với cây 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, đây là cách đơn giản nhất để có được cmd cây trong Cygwin và tôi đã thử tuyến đường biên dịch trước khi không thành công. Với cái này, bạn chỉ cần tải xuống tệp nhị phân, giải nén nó vào một thư mục trên đường dẫn cygwins và violla của bạn, lệnh cây ra khỏi hộp
iloveretards

trong cygwin: apt-cyg install treetree.exesẽ có trong binthư mục cygwin .
Timo

2

git-bash thực sự chỉ là một phiên bản cắt giảm của mingw. Cài đặt Cygwin từ cygwin.com, sau đó sử dụng trình quản lý gói để cài đặt 'cây' hoặc bất kỳ gói nào trong đó hoặc nếu nó không tồn tại, sau đó cài đặt gcc, tải xuống nguồn cây từ đây:

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

Sau đó làm theo các hướng dẫn trong tệp INSTALL (thực hiện, thực hiện cài đặt)


Vì vậy, nó là không thể trong minggw?
Jen S.

1
Tôi tưởng tượng nó không quá khó với mingw, nhưng không thể từ lời nhắc git-bash mặc định của bạn, bởi vì tôi tưởng tượng rằng git-bash không đi kèm với các công cụ bạn cần như trình biên dịch C / C ++. Nhưng bạn có thể thử cài đặt mingw, đảm bảo bao gồm gcc và làm theo các hướng dẫn trong tệp CÀI ĐẶT cây. Tôi đã sử dụng mingw để biên dịch những thứ như thế này trên Windows trong quá khứ, vì vậy phần này chắc chắn là có thể.
Jonathan Hartley

1

Một tùy chọn khác là sử dụng gói MinGW, nếu bạn đã cài đặt MinGW, cây được đóng gói ở đó, chỉ cần cài đặt nó bằng cách mở một thiết bị đầu cuối MinGW và chạy pacman -Sy tree.

Nếu bạn chưa cài đặt MinGW, có lẽ nó quá mức cần thiết để cài đặt nó chỉ cho lệnh cây.


0

Bạn phải cài đặt Three cho Windows như đã nói ở trên bằng liên kết: http://gnuwin32.sourceforge.net/packages/tree.htm

Bên cạnh đó, bạn cần thêm chương trình cây vào đường dẫn windows hoặc lệnh cây sẽ chỉ khả dụng trên cmd. Truy cập đường dẫn windows của bạn và thêm phần này (để cài đặt mặc định):

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

Chúng bạn sẽ có thể sử dụng lệnh cây trên git bash trên windows.


0

Đây là sự khởi đầu của tệp .gitconfig của tôi: Tôi đã tạo một bí danh cho 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
Không phải là giải pháp. Bí danh hiển thị cam kết và không phải các tập tin / thư mục.
Timo

0

Git cho Windows ( https://gitforwindows.org/ ) (có Git Bash) nhưng nó không bao gồm tree. treecó sẵn cho qua pacman(Trình quản lý gói) nhưng chỉ khả dụng nếu bạn cài đặt "Git cho Windows SDK " (cuộn xuống cuối gitforwindows.org/, nơi cung cấp liên kết để tải xuống trình cài đặt cho nó từ https://github.com/ git-for-windows / build-Extra / phát hành / mới nhất )

SO này: "Quản lý gói trong git cho windows?" đã rất hữu ích https://stackoverflow.com/questions/32712133/package-manloyment-in-git-for-windows

Cũng như đã nhận xét trong SO ở trên, họ liên kết với vấn đề git này cho windows [Pacman bị thiếu trong bản cài đặt 2.5.2 mới # 397] mà nó dự định không bao gồm pacmantrong cài đặt mặc định.

Dù sao, tôi đã cài đặt "Git cho Windows SDK", sau đó trong dấu nhắc bash (SDK-64), tôi đã chạy như sau để cài đặt cây hiện tại v1.7.0-1 (kể từ bài đăng này vào ngày 30 tháng 8 năm 2018):

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

Trên hệ thống của tôi, Git cho Windows SDK được cài đặt bên dưới: C:\git-sdk-64vì vậy, từ trình bao Git cho Windows Bash của tôi (chưa cài đặt cây), tôi đã sao chép nó qua cây.exe vào thư mục / usr / bin, vd

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

Bây giờ tôi có thể chạy treev1.7.0 từ cả hai shell Git Bash.

Vì vậy, để làm cho nó dễ dàng hơn cho những người khác và có thể là chính tôi trên một máy tương lai, tôi đã xem xét nơi pacmannhận treegói hàng bằng cách chạy theo sau trong thiết bị đầu cuối Git cho Windows SDK Bash của tôi:

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

Điều quan trọng, ở đây là pacmanlấy nó từ kho lưu trữ "msys" (FYI: mặc dù nó nói msys, nhưng nó thực sự đang sử dụng msys2), vì vậy tôi đã nhìn vào /etc/pacman.d/mirrorlist.msysvà gương đầu tiên chỉ vàohttp://repo.msys2.org/msys/$arch/

Vì vậy, lần tới khi bạn muốn có gói KHÔNG có trong Git cho Windows, bạn có thể tải xuống từ: http://repo.msys2.org/msys/x86_64/ (cho 64-bit) hoặc từ http: //repo.msys2 .org / msys / i686 / (32-bit)

ví dụ: liên kết tải xuống trực tiếp cho cây v1.7.0-1


1
FYI: Tải xuống Window của Git SCM tại git-scm.com/d Download lấy bản mới nhất từ ​​Git cho Windows GitHub ( github.com/git-for-windows/git/release ) từ github.com/git-for-windows/git
N. Ngô
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.