ম্যাক ওএস এক্স এর জন্য উবুন্টু treeকমান্ডের সমতুল্য কি আছে ?
ম্যাক ওএস এক্স এর জন্য উবুন্টু treeকমান্ডের সমতুল্য কি আছে ?
উত্তর:
আপনি treeম্যাকওএস-এও কমান্ড পেতে পারেন । আপনার যদি হোমব্রু থাকে তবে আপনার যা করতে হবে তা চালানো দরকার:
brew install tree
বিস্তারিত পড়ুন।
ম্যাকোসের জন্য বেশ কয়েকটি প্যাকেজ পরিচালক রয়েছে। সর্বাধিক জনপ্রিয় হ'ল হোমব্রিউ , ম্যাকপোর্টস বা ফিংক । আপনি যে কোনও একটি ইনস্টল করতে পারেন তবে আমি হোমব্রিউর প্রস্তাব দিই। একই সাথে একের বেশি ইনস্টল করবেন না!
ওয়েবসাইটে নির্দেশাবলী অনুসরণ করুন, তারপরে আপনি কোন প্যাকেজ পরিচালককে বেছে নিয়েছেন তার উপর নির্ভর করে নিম্নলিখিত কমান্ডগুলির মধ্যে একটি চালান।
হোমব্রিউয়ের জন্য:
brew install tree
ম্যাকপোর্টের জন্য:
sudo port install tree
ফিন্কের জন্য:
fink install tree
প্যাকেজ পরিচালনাকারীরা জিএনইউ / লিনাক্সগুলি সহ অন্যান্য কমান্ড লাইন প্রোগ্রামগুলি সরবরাহ করে যা ম্যাকস নিয়ে ডিফল্টরূপে আসে না।
প্রথমে আপনাকে রান করে এক্সকোড কমান্ড লাইন সরঞ্জাম ইনস্টল করতে হবে xcode-select --install।
তারপরে, উত্সটি ডাউনলোড করুনtree । তারপরে Makefile এটিকে কাজ করতে পেতে পরিবর্তন করুন , যা নীচে @ অপুশের উত্তরেও ব্যাখ্যা করা হয়েছে । লিনাক্স বিকল্পগুলি সম্পর্কে মন্তব্য করা এবং ম্যাকোস বিকল্পগুলি অসুবিধাজনক হওয়া উচিত।
তারপরে, চালান ./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ওএস এক্সে চালানো কার্যকর হয় না। প্রথমত, আপনাকে কীভাবে এক্সকোড কমান্ড-লাইন সরঞ্জামগুলি ইনস্টল করতে হবে (বা সাধারণত, সফ্টওয়্যার বিল্ডিং সম্পর্কে কিছু ধারণা থাকতে হবে) এবং তারপরে আপনি দেখতে পাবেন যে এটি একটি অনির্ধারিত চিহ্নে ত্রুটিযুক্ত out সুতরাং আপনাকে মেকফাইলে কিছু সামঞ্জস্য করতে হবে ( এখানে বর্ণিত হিসাবে )। অনেক ঝামেলা আইএমও।
./configureএবং makeঠিক কী করে এবং কেন এটি প্রথম স্থানে প্রয়োজন তা বোঝার জন্য সংগ্রাম করে । অথবা তারা এটি মোকাবেলা করতে চায় না। বা এই বিষয়ে কোনও হেল্প ফাইল পড়ুন। তারা বরং কিছু করতে চাই apt-get install। যদি আপনি উত্স থেকে ইনস্টলেশন পছন্দ করেন (এবং আমি ব্যক্তিগতভাবে এটিও করি) তবে এটি ঠিক আছে, তবে আপনাকে মেনে নিতে হবে যে এমন সমাধান রয়েছে যা অন্যরা সহজেই উপলব্ধি করতে পেরেছেন, এমনকি সাধারণ কম্পিউটার ব্যবহারকারীদেরও সংখ্যাগরিষ্ঠ।
./configureএবং makeনা। আমি কেবল জানি সফটওয়্যার ইনস্টল করার জন্য সেগুলি করা আমার প্রয়োজনীয় পদক্ষেপ। আমি অন্ধভাবে README এবং ইনস্টল ফাইলগুলি পড়ি এবং যা কিছু বলি তাই করি।
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
লিনাক্স অংশ এবং অসম্পূর্ণ অসক্স অঞ্চল মন্তব্য করার জন্য মেকফিল সম্পাদনা করুন:
# 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
ওএসএক্স এল ক্যাপিটেন রুটলেস বৈশিষ্ট্যটির জন্য @ অপুশের উত্তরে একটি ছোট পয়েন্ট যুক্ত করা । আমাদের ডিরেক্টরিতে লেখার অনুমতি নেই বলে ব্যর্থ হয় ।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-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