क्या मैक ओएस एक्स के लिए उबंटू tree
कमांड के बराबर है ?
क्या मैक ओएस एक्स के लिए उबंटू tree
कमांड के बराबर है ?
जवाबों:
आप tree
macOS पर भी कमांड प्राप्त कर सकते हैं । यदि आपके पास Homebrew है , तो आपको बस इतना करना होगा:
brew install tree
जानकारी के लिए आगे पढ़ें।
MacOS के लिए कई पैकेज मैनेजर हैं। सबसे लोकप्रिय हैं: होमब्रे , मैकपोर्ट्स या फिंक । आप या तो एक स्थापित कर सकते हैं, लेकिन मैं होमब्रे को सलाह देता हूं एक ही समय में इनमें से एक से अधिक स्थापित न करें!
वेबसाइट पर दिए गए निर्देशों का पालन करें, फिर निम्न कमांड में से एक को चलाएं, जिसके आधार पर आपने जो पैकेज मैनेजर चुना है।
होमब्रे के लिए:
brew install tree
MacPorts के लिए:
sudo port install tree
फ़िंक के लिए:
fink install tree
पैकेज प्रबंधक GNU / Linux वाले सहित अन्य कमांड लाइन प्रोग्राम पेश करते हैं, जो डिफ़ॉल्ट रूप से macOS के साथ नहीं आते हैं।
सबसे पहले, आपको Xcode कमांड लाइन टूल को इंस्टॉल करके इंस्टॉल करना होगा xcode-select --install
।
फिर, स्रोत डाउनलोड करेंtree
। फिर इसे काम करने के लिए Makefile को बदलें , जिसे नीचे @ apuche के उत्तर में भी समझाया गया है । लिनक्स विकल्पों पर टिप्पणी करना और मैकओएस विकल्पों को अनइंस्टॉल करना पर्याप्त होना चाहिए।
फिर, दौड़ो ./configure
, तब make
।
अब आपको tree
बाइनरी फ़ाइल को उस स्थान पर ले जाना होगा जो आपके निष्पादन योग्य मार्ग में है। उदाहरण के लिए:
sudo mkdir -p /usr/local/bin
sudo cp tree /usr/local/bin/tree
अब ~/.bash_profile
शामिल करने के लिए अपने को संपादित करें :
export PATH="/usr/local/bin:$PATH"
शेल को फिर से लोड करें, और अब which tree
इंगित करना चाहिए /usr/local/bin/tree
।
make
OS X पर चलने से काम नहीं चलता है। सबसे पहले, आपको यह जानना होगा कि Xcode कमांड-लाइन टूल कैसे स्थापित करें (या आम तौर पर, सॉफ़्टवेयर बनाने के बारे में कुछ विचार है) और फिर आप पाएंगे कि यह एक अपरिभाषित प्रतीक पर त्रुटियां करता है। इसलिए आपको मेकफाइल में कुछ समायोजन करना होगा (जैसा कि यहां बताया गया है )। बहुत ज्यादा परेशानी आई.एम.ओ.
./configure
और make
वास्तव में क्या करना है और यही कारण है कि उन लोगों के लिए पहली जगह में की जरूरत है। या वे इससे निपटना नहीं चाहते। या उस मामले के लिए किसी भी मदद फ़ाइलों को पढ़ें। वे ऐसा कुछ करना चाहते हैं apt-get install
। यह ठीक है यदि आप स्रोत से इंस्टॉलेशन पसंद करते हैं (और मैं व्यक्तिगत रूप से भी करता हूं), लेकिन आपको यह स्वीकार करना होगा कि ऐसे समाधान हैं जो दूसरों के द्वारा आसान हैं, या शायद सामान्य कंप्यूटर उपयोगकर्ताओं के बहुमत भी हैं।
./configure
और क्या make
करना है। मुझे पता है कि वे ऐसे कदम हैं जो मुझे सॉफ़्टवेयर स्थापित करने के लिए निष्पादित करने की आवश्यकता है। मैं README और INSTALL फ़ाइलों को नेत्रहीन पढ़ता हूं, और मैं जो कुछ भी कहता हूं वह करता हूं।
grep
हैं। जैसा tree | grep -v 'json'
या वैसा।
ठीक उसी तरह नहीं, लेकिन मैक पर एक त्वरित तरीका है:
find .
और बस। यह एक सूची के रूप में वर्तमान निर्देशिका में सभी फ़ाइल पथों को सूचीबद्ध करेगा।
find . -type f
find . -type d -maxdepth 2
मेरे लिए काम किया
find *
यदि आप छिपी हुई फ़ाइलों और निर्देशिकाओं को नहीं देखना चाहते हैं तो बेहतर उपयोग करें । tree
डिफ़ॉल्ट रूप से छिपी हुई फ़ाइलों और निर्देशिकाओं को नहीं दिखाता है।
find
एक 万金油 उपकरण है।
या अपने व्यवस्थापक से आप में से किसी को स्थापित नहीं दूँगी अगर brew
, fink
, port
उपकरण तुम हमेशा स्रोत से यह निर्माण कर सकते हैं:
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
लाइनक्स भाग और असंगति क्षेत्र पर टिप्पणी करने के लिए Makefile संपादित करें:
# 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
और जब आप इस पर हों, यदि आप पेड़ को हमेशा आउटपुट को रंगने के लिए मजबूर करना चाहते हैं, तो आप हमेशा फ़ाइल की main
विधि को संपादित कर सकते हैं tree.c
और force_color=TRUE;
पहले जोड़ सकते हैंsetLocale(LC_TYPE,"");
अंत में मारा make
और आप tree
मैक के लिए निर्माण कर रहे हैं ।
श्रद्धांजलि शॉन चैपमैन को उनके ब्लॉग पर उनके मूल पद के लिए जाता है ।
force_color = TRUE;
। कोई अर्धविराम नहीं और आपको एक संकलन त्रुटि मिलती है।
setLocale
अपने setlocale
। तो tree.c
, आप के लिए देखो setlocale(LC_TYPE,"")
; और धन्यवाद!
/bin
(या किसी पथ पर ले जाने के तरीके पर एक नोट जोड़ सकते हैं ताकि इसे विश्व स्तर पर उपयोग किया जा सके)?
warning: format specifies type 'long' but the argument has type 'long long'
:। ठीक से एक फॉर्मेट स्पेसिफायर बदलने के लिए था %9ld
करने के लिए %9lld
।
tree
हालांकि, आप ऐसा कर सकते हैं प्रति औपचारिक आदेश नहीं है :
निम्नलिखित स्क्रिप्ट को / usr / स्थानीय / बिन / पेड़ पर सहेजें
#!/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
अनुमतियाँ बदलें ताकि आप इसे चला सकें:
chmod 755 /usr/local/bin/tree
बेशक आपको बनाना पड़ सकता है /usr/local/bin
:
sudo mkdir -p /usr/local/bin/tree
tree
, लेकिन फिर भी एक अच्छा सा समाधान है।
मुझे यहाँ एक सरल समाधान मिला: http://murphymac.com/tree-command-for-mac/
तो जोड़ने से आपके लिए निम्न .bashrc
, .bash_profile
या किसी अन्य जगह यह काम कर देगा:
alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
अब एक tree
कमांड जोड़ने से इस तरह प्रिंट होगा:
# ~/my-html-app [13:03:45]$ tree
.
|____app.js
|____css
| |____main.css
| |____theme.css
|____index.html
करने के लिए एक छोटे से बिंदु जोड़ना @ apuche के जवाब OSX एल कैप्टन के लिए बिना जड़ सुविधा। make install
विफल रहता है क्योंकि हमें /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$
इसे दूर करने के लिए, बस करने के Makefile
लिए संपादित करेंprefix = /usr/local
./configure --prefix=/usr/local
चलाने से पहले make
और make install
और यह एक ही परिणाम प्राप्त होगा।
मैंने टर्मिनल में निम्नलिखित उपयोग के लिए ~ / .bash_profile जोड़ा। कुछ टिप्पणियों को याद रखने में मदद के लिए शामिल किया गया है कि कैसे उपयोग किया जा रहा है।
##########
## 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'
}
वर्तमान निर्देशिका के लिए उदाहरण
$> tree
कुछ पथ के लिए उदाहरण
$> tree /some/path
यहाँ एक रूबी लिपि समाधान है जो उपयोगी मेटाडेटा के साथ एक अच्छा यूनिकोड ट्री बनाता है।
#!/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
आप meta = …
अगली पंक्ति में विभाजित टुकड़ों को प्रदर्शित करने के लिए अलग-अलग मेटाडेटा निकालने के लिए लाइन को संशोधित कर सकते हैं । थोड़े और काम के साथ आप मेटाडेटा का चयन करने के लिए मनमाने ढंग से ls तर्क पास कर सकते हैं।
नमूना आउटपुट (स्टैक ओवरफ्लो पर फ़ॉन्ट की तुलना में ओएस एक्स टर्मिनल में अच्छे लग रहा है):
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 स्थापित करें
कमांड लाइन टूल प्राप्त करें
xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install tree
खेल के लिए देर हो गई, लेकिन मेरे पास एक ही सवाल था। कार्यस्थल प्रतिबंधों के कारण, मैं स्रोत से या किसी तृतीय-पक्ष पैकेज प्रबंधक के माध्यम से पैकेज स्थापित नहीं कर सका।
यह मेरा कार्यान्वयन है:
# 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'
}
बस फ़ंक्शन को इसमें जोड़ें , /Users/foo/.profile
या .bash_profile
फिर प्रोफ़ाइल को इसके साथ ताज़ा करें: source .profile
या:source .bash_profile