ฉันจะเพิ่มคำสั่ง 'tree' ลงใน git-bash บน Windows ได้อย่างไร


53

ฉันใช้ git-bash ใน Windows 7 ฉันต้องการดูแผนผังของไดเรกทอรีปัจจุบัน อย่างไรก็ตาม:

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

ตกลงดังนั้นฉันไม่ได้มีคำสั่งต้นไม้ ฉันจะติดตั้งได้อย่างไร ฉันพบบทความ แต่สำหรับ Macs


git-bashเป็นเพียง Cygwin เวอร์ชันที่ถูกตัดทอนลง วิธีที่ดีที่สุดที่จะไปคือติดตั้ง Cygwin จาก cygwin.com และใช้โปรแกรมจัดการแพ็คเกจที่นั่นเพื่อติดตั้งtreeหรือแพคเกจใดก็ตามที่อยู่ในนั้น (ถ้ามี)
allquixotic

2
@allquixotic จริงวันนี้มัน MinGW
jcollum

คำตอบ:


35

คุณสามารถใช้"cmd //c tree"เพื่อใช้ Windows 'tree

คำอธิบาย:

  • เรียกใช้ cmd ด้วยอาร์กิวเมนต์ '/ c' และเรียกใช้ tree จากนั้นยุติ

/ C ดำเนินการคำสั่งที่ระบุโดยสายอักขระแล้วยกเลิก

(สแลชพิเศษสำหรับการหลบหนี)

/ a ใช้เพื่อรันด้วย ascii chars ในกรณีที่มันไม่แสดงผลที่ถูกต้อง

ตอบโดยละเอียดยิ่งขึ้นที่นี่: https://stackoverflow.com/q/515309/1261166


2
คุณยังสามารถเพิ่มคำสั่งนี้เป็นนามแฝงใน ~ / .bashrc ของคุณ:alias tree='cmd //c tree //a
onlyhuman

สิ่งนี้ใช้ไม่ได้อีกต่อไป ใช้tree.com /a
automorphic

30

ฉันได้ดาวน์โหลด tree.exe ในไฟล์ zip จากที่นี่http://gnuwin32.sourceforge.net/packages/tree.htmตามที่แนะนำ

จากนั้นฉันได้แยกไฟล์ tree.exe ไปที่C:\Program Files\Git\usr\bin(ฉันได้เพิ่มโฟลเดอร์นี้ไปยังเส้นทาง Windows เพื่อให้ทำงานกับ CMD ปกติ แต่ก็ใช้งานได้กับ GITBash ด้วย) Git Bash พร้อมคำสั่ง tree บน windows

ฉันหวังว่านี่จะช่วยคุณได้!


2
ทำงานได้ดีมากกับ git-bash บน Windows 7 ขอบคุณ!
cjauvin

2
tree.exe คัดลอกไปยัง C: \ Program Files \ Git \ usr \ bin เป็นสิ่งที่เรากำลังมองหา แบ่งปันดีมาก ขอบคุณ download.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 / และใส่มี
ชาร์ลส์ลิตร

10

มีคำสั่ง tree ใน windows อยู่แล้ว - ปัญหาเดียวคือ tree.com และ bash git จะไม่เพิ่มนามสกุล. com โดยอัตโนมัติและดำเนินการ

อย่างไรก็ตามมันจะหาเจอถ้าคุณกด tab หลังจากพิมพ์ tree หรือ tre

หากต้องการดูไฟล์ที่คุณต้องใช้ // 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
เจ๋งสุด ๆ ทำงานเหมือนมีเสน่ห์ ..
Santosh Kumar Arjunan

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 นี่เป็นวิธีที่ตรงไปตรงมาที่สุดในการรับ tree cmd ใน Cygwin และฉันพยายามรวบรวมเส้นทางก่อนที่จะไม่ประสบความสำเร็จ ด้วยวิธีนี้คุณเพียงแค่ดาวน์โหลดไบนารีแยกมันไปยังโฟลเดอร์บนเส้นทาง cygwins และไวลล่าของคุณคำสั่งต้นไม้ออกจากกล่อง
iloveretards

ใน cygwin: apt-cyg install treeและtree.exeจะอยู่ในbinโฟลเดอร์cygwin
Timo

2

git-bash เป็นเพียงการตัด mingw ติดตั้ง Cygwin จาก cygwin.com จากนั้นใช้ตัวจัดการแพคเกจเพื่อติดตั้ง 'tree' หรือแพ็คเกจใด ๆ ที่อยู่ในนั้นหรือหากไม่มีอยู่ให้ติดตั้ง gcc ดาวน์โหลดแหล่งที่มาของต้นไม้จากที่นี่:

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

จากนั้นทำตามคำแนะนำในไฟล์ INSTALL (ทำการติดตั้ง)


ดังนั้นจึงเป็นไปไม่ได้ใน minggw?
Jen S.

1
ฉันคิดว่ามันไม่ยากเกินไปจาก mingw แต่เป็นไปไม่ได้จาก git-bash prompt ที่เป็นค่าเริ่มต้นของคุณเพราะฉันจินตนาการว่า git-bash นั้นไม่มีเครื่องมือที่คุณต้องการเช่นคอมไพเลอร์ C / C ++ แต่คุณสามารถลองติดตั้ง mingw ตรวจสอบให้แน่ใจว่าได้รวม gcc และทำตามคำแนะนำในไฟล์ tree INSTALL ฉันเคยใช้ mingw เพื่อคอมไพล์สิ่งนี้บน Windows ในอดีตดังนั้นส่วนนี้เป็นไปได้แน่นอน
Jonathan Hartley

1

อีกตัวเลือกหนึ่งที่จะใช้แพคเกจ MinGW ถ้าคุณมีการติดตั้ง MinGW ต้นไม้เป็นแพคเกจที่มีเพียงแค่ติดตั้งด้วยการเปิดสถานี MinGW pacman -Sy treeและทำงาน

หากคุณไม่มี MinGW ติดตั้งอยู่แล้วอาจเป็น overkill ในการติดตั้งสำหรับคำสั่ง tree


0

คุณต้องติดตั้ง Three for Windows ดังกล่าวข้างต้นโดยลิงค์: http://gnuwin32.sourceforge.net/packages/tree.htm

นอกจากนั้นคุณต้องเพิ่มโปรแกรมทรีลงในหน้าต่างพา ธ ของคุณไม่เช่นนั้นคำสั่ง tree จะมีให้เฉพาะบน cmd เท่านั้น เข้าถึงเส้นทางหน้าต่างของคุณและเพิ่มสิ่งนี้ (สำหรับการติดตั้งเริ่มต้น):

;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
ไม่ใช่ทางออก นามแฝงแสดงการกระทำและไม่ใช่ไฟล์ / dirs
Timo

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 / ล่าสุด )

ดังนั้น: "การจัดการแพ็คเกจใน git สำหรับ windows" มีประโยชน์มาก https://stackoverflow.com/questions/32712133/package-management-in-git-for-windows

นอกจากนี้ตามที่ได้แสดงความคิดเห็นไว้ในข้างต้นดังนั้นพวกเขาเชื่อมโยงไปยังปัญหานี้สำหรับ windows [Pacman หายไปเมื่อติดตั้งใหม่ 2.5.2 # 397] ซึ่งตั้งใจจะไม่รวมpacmanอยู่ในการติดตั้งเริ่มต้น

ต่อไปฉันติดตั้ง "Git สำหรับ Windows SDK" จากนั้นใน bash prompt (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 shell (ที่ไม่ได้ติดตั้งต้นไม้) ฉันคัดลอกมันผ่าน 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 สำหรับเทอร์มินัลทุบตี SDK Windows:

$ 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" (FYI: ถึงแม้ว่ามันจะบอกว่า 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- บิต)

เช่นลิงก์ดาวน์โหลดโดยตรงสำหรับ tree v1.7.0-1


1
FYI: การดาวน์โหลดหน้าต่างของ Git SCM ที่git-scm.com/downloadดึงข้อมูลล่าสุดจาก Git สำหรับ Windows GitHub ( github.com/git-for-windows/git/releases ) จากgithub.com/git-for-windows/git
N. Ngo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.