Mac OS X için Ubuntu tree
komutunun karşılığı var mı ?
Mac OS X için Ubuntu tree
komutunun karşılığı var mı ?
Yanıtlar:
Sen alabilirsiniz tree
de MacOS üzerinde komutu. Homebrew'ınız varsa , yapmanız gereken tek şey koşmak:
brew install tree
Detaylar için okumaya devam edin.
MacOS için birkaç paket yöneticisi var. En popüler olanlar: Homebrew , MacPorts veya Fink . İkisinden birini yükleyebilirsiniz, ancak Homebrew'ı öneririm. Aynı anda bunlardan birden fazla kurulum yapmayın!
Web sitesindeki talimatları izleyin, ardından hangi paket yöneticisini seçtiğinize bağlı olarak aşağıdaki komutlardan birini çalıştırın.
Homebrew için:
brew install tree
MacPorts için:
sudo port install tree
Fink için:
fink install tree
Paket yöneticileri, varsayılan olarak macOS ile gelmeyen GNU / Linux programları da dahil olmak üzere diğer komut satırı programları sunar.
Öncelikle, Xcode komut satırı araçlarını çalıştırarak yüklemelisiniz xcode-select --install
.
Ardından, karşıdan tree
kaynağı . Sonra işe almak için Makefile değiştirmek de açıklanmıştır ki, aşağıda @ apuche cevabı . Linux seçeneklerini yorumlamak ve macOS seçeneklerini yorumlamak yeterli olmalı.
Sonra koş ./configure
o zaman make
.
Şimdi tree
ikili dosyayı çalıştırılabilir yolunuzdaki bir yere taşımalısınız. Örneğin:
sudo mkdir -p /usr/local/bin
sudo cp tree /usr/local/bin/tree
Şimdi ~/.bash_profile
eklemek için düzenleyin :
export PATH="/usr/local/bin:$PATH"
Kabuğu yeniden yükleyin ve şimdi which tree
göstermelisiniz /usr/local/bin/tree
.
make
OS X'te çalışmak işe yaramıyor. Öncelikle, Xcode komut satırı araçlarının nasıl kurulacağını bilmek zorundasınız (veya genellikle yazılım oluşturma hakkında bir fikriniz var) ve sonra tanımsız bir sembol üzerinde hata yaptığını göreceksiniz. Bu yüzden makefile üzerinde bazı ayarlamalar yapmanız gerekiyor ( burada açıklandığı gibi ). Çok fazla güçlük IMO.
./configure
ve make
tam olarak ne yaptığını ve neden en başta bunlara ihtiyaç duyulduğunu anlamakta zorlanırlar . Ya da onunla uğraşmak istemiyorlar. Veya bunun için herhangi bir yardım dosyasını okuyun. Böyle bir şey yapmayı tercih ederler apt-get install
. Kurulumu kaynaktan tercih ederseniz sorun değil (ve ben şahsen ben de yaparım), ancak başkaları tarafından daha kolay algılanan çözümler olduğunu, hatta normal bilgisayar kullanıcılarının bile çoğunluğunu kabul etmek zorundasınız.
./configure
ve make
yap. Sadece yazılımı yüklemek için gerçekleştirmem gereken adımlar olduklarını biliyorum. README ve INSTALL dosyalarını kör olarak okudum ve ne diyorsa onu yapıyorum.
grep
. Gibi tree | grep -v 'json'
ya da benzeri.
Tam olarak aynı değil, ancak Mac'te hızlı bir yol:
find .
ve bu kadar. Geçerli dizindeki tüm dosya yollarını bir liste olarak listeler.
find . -type f
find . -type d -maxdepth 2
sadece benim için çalıştığını göstermek için sadece birkaç seviyeye inmekle ilgilenmiştim
find *
Gizli dosyaları ve dizinleri görmek istemiyorsanız daha iyi kullanın . tree
Gizli dosyaları ve dizinleri varsayılan olarak göstermez.
find
bir 万金油 araçtır.
Ya Yöneticiniz herhangi yüklemek izin vermezse brew
, fink
, port
her zaman kaynağından inşa edebilirsiniz araçlar:
curl -O ftp://mama.indstate.edu/linux/tree/tree-1.5.3.tgz
tar xzvf tree-1.5.3.tgz
cd tree-1.5.3/
ls -al
Linux bölümünü ve uncomment osx alanını yorumlamak için Makefile dosyasını düzenleyin:
# Linux defaults:
#CFLAGS=-ggdb -Wall -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
#CFLAGS=-O2 -Wall -fomit-frame-pointer -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
#LDFLAGS=-s
# Uncomment for OS X:
CC=cc
CFLAGS=-O2 -Wall -fomit-frame-pointer -no-cpp-precomp
LDFLAGS=
XOBJS=strverscmp.o
Ve siz onun yanındayken, ağacı her zaman çıktıyı renklendirmeye zorlamak istiyorsanız, her zaman dosyanın main
yöntemini düzenleyebilir tree.c
ve daha force_color=TRUE;
önce ekleyebilirsiniz.setLocale(LC_TYPE,"");
Sonunda vurun make
ve tree
mac için oluşturmayı bitirdiniz .
Tribute , blogundaki orjinal yazısı için Shaun Chapman'a gidiyor .
force_color = TRUE;
. Noktalı virgül yok ve derleme hatası alıyorsunuz.
setLocale
onun setlocale
. Öyleyse tree.c
, sen bak setlocale(LC_TYPE,"")
; ve teşekkürler!
/bin
(ya da küresel olarak kullanılabilmesi için bazı yollara)?
warning: format specifies type 'long' but the argument has type 'long long'
. Düzeltme, bir format belirticisini - olarak %9ld
değiştirmekti %9lld
.
Resmi bir tree
komut yoktur, ancak bunu yapabilirsiniz:
Aşağıdaki betiği / usr / local / bin / tree dizinine kaydedin.
#!/bin/bash
SEDMAGIC='s;[^/]*/;|____;g;s;____|; |;g'
if [ "$#" -gt 0 ] ; then
dirlist="$@"
else
dirlist="."
fi
for x in $dirlist; do
find "$x" -print | sed -e "$SEDMAGIC"
done
İzinleri değiştirerek çalıştırabilmeniz için:
chmod 755 /usr/local/bin/tree
Tabii ki oluşturmanız gerekebilir /usr/local/bin
:
sudo mkdir -p /usr/local/bin/tree
tree
, ama yine de güzel bir küçük çözüm.
Burada basit bir çözüm buldum: http://murphymac.com/tree-command-for-mac/
Yani aşağıdaki ekleyerek .bashrc
, .bash_profile
ya da başka herhangi bir yerde o iş yapacak:
alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
Şimdi bir tree
komut eklemek bu şekilde basılacaktır:
# ~/my-html-app [13:03:45]$ tree
.
|____app.js
|____css
| |____main.css
| |____theme.css
|____index.html
Küçük bir nokta ekleme @ apuche cevabı OSX El Capitan için köksüz özelliği. dizine make install
yazma yetkimiz olmadığı için başarısız oluyor /usr/bin
.
vikas@MBP:~/Downloads/tree-1.7.0$ sudo make install
Password:
install -d /usr/bin
install: chmod 755 /usr/bin: Operation not permitted
install -d /usr/share/man/man1
if [ -e tree ]; then \
install tree /usr/bin/tree; \
fi
install: /usr/bin/tree: Operation not permitted
make: *** [install] Error 71
vikas@MBP:~/Downloads/tree-1.7.0$
Bunun üstesinden gelmek için, sadece düzenleme Makefile
yapmakprefix = /usr/local
./configure --prefix=/usr/local
önce kaçabilir make
ve make install
aynı sonuçları elde edersiniz .
Terminal.app'de kullanmak için aşağıdakileri ~ / .bash_profile dosyasına ekledim. Bulmanın nasıl kullanıldığını hatırlamaya yardımcı olmak için bazı yorumlar eklenmiştir.
##########
## tree ##
##########
## example ...
#|____Cycles
#| |____.DS_Store
#| |____CyclesCards.json
#| |____Carbon
#| | |____Carbon.json
# alternate: alias tree='find . -print | sed -e "s;[^/]*/;|____;g;s;____|; |;g"'
# use$ tree ; tree . ; tree [some-folder-path]
function tree {
find ${1:-.} -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
}
mevcut dizin için örnek
$> tree
bazı yol için örnek
$> tree /some/path
İşte yararlı meta verileri ile birlikte güzel bir Unicode ağacı üreten bir Ruby script çözümü.
#!/usr/bin/env ruby
def tree_hierarchy( root, &children )
queue = [[root,"",true]]
[].tap do |results|
until queue.empty?
item,indent,last = queue.pop
kids = children[item]
extra = indent.empty? ? '' : last ? '└╴' : '├╴'
results << [ indent+extra, item ]
results << [ indent, nil ] if last and kids.empty?
indent += last ? ' ' : '│ '
parts = kids.map{ |k| [k,indent,false] }.reverse
parts.first[2] = true unless parts.empty?
queue.concat parts
end
end
end
def tree(dir)
cols = tree_hierarchy(File.expand_path(dir)) do |d|
File.directory?(d) ? Dir.chdir(d){ Dir['*'].map(&File.method(:expand_path)) } : []
end.map do |indent,path|
if path
file = File.basename(path) + File.directory?(path) ? '/' : ''
meta = `ls -lhd "#{path}"`.split(/\s+/)
[ [indent,file].join, meta[0], meta[4], "%s %-2s %s" % meta[5..7] ]
else
[indent]
end
end
maxs = cols.first.zip(*(cols[1..-1])).map{ |c| c.compact.map(&:length).max }
tmpl = maxs.map.with_index{ |n,i| "%#{'-' if cols[0][i][/^\D/]}#{n}s" }.join(' ')
cols.map{ |a| a.length==1 ? a.first : tmpl % a }
end
puts tree(ARGV.first || ".") if __FILE__==$0
Bir meta = …
sonraki satırdaki bölünmüş parçaları elle seçerek görüntülemek üzere farklı meta veriler elde etmek için çizgiyi değiştirebilirsiniz . Biraz daha fazla çalışmayla, gösterilecek meta verileri seçmek için isteğe bağlı argümanları iletebilirsiniz.
Örnek çıktı (OS X terminalinde Stack Overflow'taki yazı tipinden daha iyi görünüyor):
phrogz$ tree UCC_IVI/
UCC_IVI/ drwxr-xr-x 510B Nov 20 11:07
├╴docs/ drwxr-xr-x 102B Nov 20 19:21
│ └╴CANMessages.txt -rwxr-xr-x 2.2K Nov 20 19:21
│
├╴effects/ drwxr-xr-x 204B Nov 19 17:19
│ ├╴Depth Of Field HQ Blur.effect -rwxr-xr-x 2.4K Nov 19 17:19
│ ├╴FXAA.effect -rwxr-xr-x 1.6K Nov 17 15:38
│ ├╴HDRBloomTonemap.effect -rwxr-xr-x 11K Nov 17 15:38
│ └╴SMAA1X.effect -rwxr-xr-x 4.4K Nov 19 17:19
│
├╴fonts/ drwxr-xr-x 136B Nov 17 15:38
│ ├╴Arimo-Regular.ttf -rwxr-xr-x 43K Nov 17 15:38
│ └╴OFL.txt -rwxr-xr-x 4.3K Nov 17 15:38
│
├╴maps/ drwxr-xr-x 238B Nov 19 17:19
│ ├╴alpha-maps/ drwxr-xr-x 136B Nov 17 15:38
│ │ ├╴rounded-boxes-3.png -rwxr-xr-x 3.6K Nov 17 15:38
│ │ └╴splatter-1.png -rwxr-xr-x 35K Nov 17 15:38
│ │
│ ├╴effects/ drwxr-xr-x 136B Nov 19 17:19
│ │ ├╴AreaTex-yflipped.dds -rwxr-xr-x 175K Nov 19 17:19
│ │ └╴SearchTex-yflipped.png -rwxr-xr-x 180B Nov 19 17:19
│ │
│ ├╴IBL/ drwxr-xr-x 136B Nov 17 15:38
│ │ ├╴028-hangar.hdr -rwxr-xr-x 1.5M Nov 17 15:38
│ │ └╴FieldAirport.hdr -rwxr-xr-x 1.5M Nov 17 15:38
│ │
│ ├╴icons/ drwxr-xr-x 238B Nov 19 17:19
│ │ ├╴icon_climate.dds -rwxr-xr-x 683K Nov 19 17:19
│ │ ├╴icon_music.dds -rwxr-xr-x 683K Nov 19 17:19
│ │ ├╴icon_navigation.dds -rwxr-xr-x 683K Nov 19 17:19
│ │ ├╴icon_phone.dds -rwxr-xr-x 683K Nov 19 17:19
│ │ └╴icon_surroundView.dds -rwxr-xr-x 683K Nov 19 17:19
│ │
│ └╴materials/ drwxr-xr-x 102B Nov 19 17:19
│ └╴spherical_checker.png -rwxr-xr-x 11K Nov 19 17:19
│
├╴materials/ drwxr-xr-x 102B Nov 19 17:19
│ └╴thin_glass_refractive.material -rwxr-xr-x 6.0K Nov 19 17:19
│
├╴models/ drwxr-xr-x 136B Nov 19 17:19
│ ├╴BokehParticle/ drwxr-xr-x 136B Nov 19 17:19
│ │ ├╴BokehParticle.import -rwxr-xr-x 739B Nov 19 17:19
│ │ └╴meshes/ drwxr-xr-x 102B Nov 19 17:19
│ │ └╴Mesh.mesh -rwxr-xr-x 1.1K Nov 19 17:19
│ │
│ └╴Glass_Button/ drwxr-xr-x 136B Nov 19 17:19
│ ├╴Glass_Button.import -rwxr-xr-x 1.2K Nov 19 17:19
│ └╴meshes/ drwxr-xr-x 136B Nov 19 17:19
│ ├╴GlassButton.mesh -rwxr-xr-x 44K Nov 19 17:19
│ └╴Icon.mesh -rwxr-xr-x 1.8K Nov 19 17:19
│
├╴scripts/ drwxr-xr-x 204B Nov 19 17:19
│ ├╴App.lua -rwxr-xr-x 764B Nov 17 15:38
│ ├╴CANSim.lua -rwxr-xr-x 29K Nov 17 15:38
│ ├╴ObjectWiggler.lua -rwxr-xr-x 3.7K Nov 19 17:19
│ └╴PathWiggler.lua -rwxr-xr-x 2.9K Nov 17 15:38
│
├╴states/ drwxr-xr-x 170B Nov 19 18:45
│ ├╴app-camera.scxml -rwxr-xr-x 2.4K Nov 20 11:07
│ ├╴app-navigation.scxml -rwxr-xr-x 590B Nov 19 18:32
│ └╴logic.scxml -rwxr-xr-x 4.2K Nov 19 18:59
│
├╴tests/ drwxr-xr-x 102B Nov 17 15:38
│ └╴interface-navigation.scxml-test -rwxr-xr-x 83B Nov 17 15:38
│
├╴UCC_IVI.uia -rwxr-xr-x 630B Nov 19 17:32
├╴UCC_IVI.uia-user -rwxr-xr-x 832B Nov 20 17:22
├╴UCC_IVI.uip -rwxr-xr-x 1.5K Nov 17 15:38
└╴UCC_Menu.uip -rwxr-xr-x 33K Nov 19 17:19
Xcode yükleyin
Komut Satırı Araçlarını Alın
xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install tree
Oyuna geç kaldım ama aynı sorum vardı. İş yeri kısıtlamaları nedeniyle, bir kaynaktan veya üçüncü taraf bir paket yöneticisi aracılığıyla bir paket kuramadım.
Bu benim uygulamam:
# Faux tree command in OS X
#####################################################################
# tree
# Recursive directory/file listing of present working directory
#
# tree /Users/foo/foo_dir
# Recursive directory/file listing of named directory, e.g foo_dir
#
# tree /System/Library/ 2
# Recursive directory/file listing of named directory,
# with-user defined depth of recursion, e.g. 2
#####################################################################
tree ()
{
[ -n "$2" ] && local depth="-maxdepth $2";
find "${1:-.}" ${depth} -print 2> /dev/null | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
}
Fonksiyonu /Users/foo/.profile
veya altına eklemeniz yeterlidir .bash_profile
, ardından profili: source .profile
veya: ile yenileyin.source .bash_profile