bagaimana cara menambahkan perintah 'tree' ke git-bash di Windows?


53

Saya menggunakan git-bash di Windows 7. Saya ingin melihat pohon direktori saat ini. Namun:

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

OK, jadi saya tidak punya perintah tree. Bagaimana cara menginstalnya? Saya menemukan artikel tetapi untuk Mac.


git-bashbenar-benar hanya versi memotong Cygwin. Cara terbaik untuk pergi adalah menginstal Cygwin dari cygwin.com, dan menggunakan manajer paket di sana untuk menginstal treeatau paket apa pun yang ada di dalamnya (jika ada).
allquixotic

2
@allquixotic sebenarnya hari ini mingw
jcollum

Jawaban:


35

Anda juga bisa menggunakan "cmd //c tree"untuk menggunakan Windows 'tree

Penjelasan:

  • Luncurkan cmd dengan argumen '/ c' dan jalankan tree, lalu akhiri

/ C Melakukan perintah yang ditentukan oleh string dan kemudian berakhir

(tebasan ekstra untuk melarikan diri)

/ Penggunaan untuk menjalankan dengan ascii chars jika itu tidak ditampilkan dengan benar.

Dijawab lebih terinci di sini: https://stackoverflow.com/q/515309/1261166


2
Anda juga dapat menambahkan perintah ini sebagai alias ke ~ / .bashrc:alias tree='cmd //c tree //a
onlyhuman

Ini tidak lagi berfungsi. Gunakantree.com /a
automorfik

31

Saya telah mengunduh tree.exe di dalam file zip dari sini http://gnuwin32.sourceforge.net/packages/tree.htm seperti yang disarankan.

Kemudian saya telah mengekstrak file tree.exe ke C:\Program Files\Git\usr\bin(saya telah menambahkan folder ini ke path windows untuk membuatnya bekerja dengan CMD biasa tetapi juga bekerja dengan GITBash). Git Bash dengan perintah pohon di windows

Saya harap ini membantu Anda entah bagaimana!


2
Bekerja sangat baik dengan git-bash di Windows 7, terima kasih!
cjauvin

2
tree.exe disalin ke C: \ Program Files \ Git \ usr \ bin adalah apa yang kami cari. Bagian yang bagus. Terima kasih. downloads.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip Unduh zip yang ditentukan untuk binari yang memiliki tree.exe. Sebaliknya coba unduh dari situs asli.
Doogle

1
Di windows 10 saya memasukkan ini ke dalam C:\Users\myuser\AppData\Local\Programs\Git\usr\bin saya pikir aturan praktis adalah untuk menemukan di mana bash.exe atau git.exe berada, naik folder, kemudian temukan usr / bin / dan meletakkan pohon di sana
Charles L.

10

Sudah ada perintah tree di windows - satu-satunya masalah adalah tree.com dan git bash tidak akan secara otomatis menambahkan ekstensi .com dan menjalankannya.

Namun itu akan menemukannya jika Anda menekan tab setelah Anda mengetik pohon atau tre

Untuk melihat file yang harus Anda gunakan // f - Anda harus menggunakan // atau bash akan berpikir itu adalah nama folder

Saya juga menggunakan // a untuk menunjukkan baris ascii tetapi Anda tidak harus menggunakannya

Contoh:

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
luar biasa, bekerja seperti pesona ..
Santosh Kumar Arjunan

7

Bangun pohon GnuWin32 ada di http://gnuwin32.sourceforge.net/packages/tree.htm - Anda harus menambahkannya ke jalur Anda secara manual jika Anda belum menggunakan GnuWin32.

Jika Anda ingin menggunakannya di konsol Windows juga Anda harus mengubah nama atau menyalin tree.exe ke sesuatu yang lain, misalnya lstree.exe, jika tidak perintah Windows tree akan diutamakan. Keuntungan dari versi GnuWin adalah ia memiliki banyak opsi - misalnya tree -L 2akan membatasi kedalaman rekursi menjadi 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.

Dibandingkan dengan pohon 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, ini adalah cara paling lurus ke depan untuk mendapatkan cmd pohon di Cygwin dan saya mencoba rute kompilasi sebelum gagal. Dengan ini, Anda cukup mengunduh biner, mengekstraknya ke folder di jalur cygwins Anda dan violla, perintah pohon di luar kotak
iloveretards

di cygwin: apt-cyg install treedan tree.exeakan berada di binfolder cygwin .
Timo

2

git-bash sebenarnya hanya versi mingw. Instal Cygwin dari cygwin.com, lalu gunakan pengelola paket untuk menginstal 'tree' atau paket apa pun yang ada di dalamnya, atau jika tidak ada, instal gcc, unduh sumber pohon dari sini:

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

Kemudian ikuti instruksi dalam file INSTALL (make, make install)


Jadi mungkw tidak mungkin?
Jen S.

1
Saya membayangkan itu tidak terlalu sulit dari mingw, tetapi tidak mungkin dari prompt git-bash default Anda, karena saya membayangkan bahwa git-bash tidak datang dengan alat yang Anda butuhkan seperti kompiler C / C ++. Tetapi Anda dapat mencoba menginstal mingw, memastikan untuk menyertakan gcc, dan mengikuti instruksi dalam file INSTALL tree. Saya telah menggunakan mingw untuk mengkompilasi hal-hal seperti ini di Windows di masa lalu, jadi bagian ini pasti mungkin.
Jonathan Hartley

1

Opsi lain adalah menggunakan paket MinGW, jika Anda sudah menginstal MinGW, tree dikemas di sana, cukup instal dengan membuka terminal MinGW dan menjalankannya pacman -Sy tree.

Jika Anda belum menginstal MinGW, itu mungkin terlalu banyak untuk menginstalnya hanya untuk perintah tree.


0

Anda harus menginstal Tiga untuk Windows seperti yang disebutkan di atas melalui tautan: http://gnuwin32.sourceforge.net/packages/tree.htm

Selain itu Anda perlu menambahkan program pohon ke jalur windows Anda atau perintah pohon hanya akan tersedia di cmd. Akses jalur windows Anda dan tambahkan ini (untuk instalasi default):

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

Mereka akan dapat menggunakan perintah tree pada git bash di windows.


0

Ini adalah awal dari file .gitconfig saya: Saya membuat alias untuk 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
Bukan solusinya. Alias ​​menunjukkan komit dan bukan file / dir.
Timo

0

Git untuk Windows ( https://gitforwindows.org/ ) (memiliki Git Bash) tetapi tidak termasuk tree. treetersedia untuk melalui pacman(Pengelola Paket) tetapi itu hanya tersedia jika Anda menginstal "Git untuk Windows SDK " (gulir ke bagian bawah gitforwindows.org/ yang menyediakan tautan untuk mengunduh penginstal untuknya dari https://github.com/ git-for-windows / build-extra / rilis / terbaru )

SO ini: "Paket manajemen di git for windows?" sangat membantu https://stackoverflow.com/questions/32712133/package-management-in-git-for-windows

Juga seperti yang dikomentari dalam SO di atas, mereka menautkan ke masalah git ini untuk windows [Pacman tidak ada pada 2.5.2 install # 397] yang seharusnya tidak dimasukkan pacmandalam instalasi default.

Ngomong-ngomong, saya menginstal "Git untuk Windows SDK", lalu di bash prompt (SDK-64) saya menjalankan yang berikut ini untuk menginstal tree saat ini v1.7.0-1 (pada posting ini 30 Agustus 2018):

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

Di sistem saya, Git untuk Windows SDK diinstal di bawah C:\git-sdk-64:, jadi dari Git saya untuk shell Windows Bash (yang tidak memiliki tree diinstal), saya menyalinnya di tree.exe ke direktori / usr / bin itu, mis.

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

Sekarang saya bisa menjalankan treev1.7.0 dari kedua shell Git Bash.

Jadi, untuk membuatnya lebih mudah bagi orang lain dan mungkin saya sendiri di mesin masa depan, saya melihat dari mana pacmanmendapatkan treepaket dengan menjalankan mengikuti di terminal Git untuk Windows SDK Bash saya:

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

Kuncinya, di sini adalah pacmanmendapatkannya dari repositori "msys" (FYI: meskipun dikatakan msys, itu benar-benar menggunakan msys2), jadi saya melihat /etc/pacman.d/mirrorlist.msysdan mirror pertama menunjuk kehttp://repo.msys2.org/msys/$arch/

Jadi lain kali Anda menginginkan paket yang TIDAK di Git untuk Windows, Anda dapat mengunduhnya dari: http://repo.msys2.org/msys/x86_64/ (untuk 64-bit) atau dari http: //repo.msys2 .org / msys / i686 / (32-bit)

mis. tautan unduhan langsung untuk tree v1.7.0-1


1
FYI: Unduhan Git SCM Window di git-scm.com/download menarik yang terbaru dari Git untuk Windows GitHub ( github.com/git-for-windows/git/releases ) dari github.com/git-for-windows/git
N. Ngo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.