উত্তর:
আপনি নির্দিষ্ট আদেশটি কী তা ব্যবহার করতে type
এবং which
তা নির্ধারণ করতে এবং bash
এটি যদি কোনও অ্যাপ্লিকেশন হয় যেখানে এটি রয়েছে।
$ type type
type is a shell builtin
$ type cd
cd is a shell builtin
$ type ls
ls is aliased to `ls --color=auto'
$ type -P ls
/Users/danielbeck/bin/ls
$ which which
/usr/bin/which
$ which ls
/Users/danielbeck/bin/ls
কমান্ডগুলি which
এবং type -P
কেবলমাত্র আপনার প্রোগ্রামগুলির জন্য কাজ করে PATH
তবে আপনি অন্যকে কেবল তাদের কমান্ডের নাম টাইপ করে চালাতে সক্ষম হবেন না।
আপনি যদি কোনও OS X (GUI) অ্যাপ্লিকেশন বান্ডেল ইনস্টল করা আছে তা নির্ধারণের কোনও সহজ উপায় সন্ধান করছেন (যেমন open
কমান্ডের সাহায্যে ব্যবহৃত ), আপনি কমান্ড লাইন থেকে নিম্নলিখিত সংক্ষিপ্ত অ্যাপলস্ক্রিপ্ট সম্পাদন করতে পারেন:
$ osascript -e 'tell application "System Events" to POSIX path of (file of process "Safari" as alias)'
/Applications/Safari.app
এটির প্রয়োজন যে প্রশ্নে থাকা প্রোগ্রামটি (উদাহরণে সাফারি) চলছে।
আমি বর্তমানে ওএসএক্স এবং লিনাক্সে ফায়ারফক্স অ্যাপ্লিকেশন ডিরেক্টরিটি সনাক্ত করার পদ্ধতিটি। অন্য অ্যাপ্লিকেশন গ্রহণ করা সহজ হওয়া উচিত। ওএসএক্স 10.7, উবুন্টু 12.04, দেবিয়ান জেসি পরীক্ষিত
#!/bin/bash
# Array of possible Firefox application names.
appnames=("IceWeasel" "Firefox") # "Firefox" "IceWeasel" "etc
#
# Calls lsregister -dump and parses the output for "/Firefox.app", etc.
# Returns the very first result found.
#
function get_osx_ffdir()
{
# OSX Array of possible lsregister command locations
# I'm only aware of this one currently
lsregs=("/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister")
for i in "${lsregs[@]}"; do
for j in ${appnames[@]}; do
if [ -f $i ]; then
# Some logic to parse the output from lsregister
ffdir=$($i -dump |grep -E "/$j.app$" |cut -d'/' -f2- |head -1)
ffdir="/$ffdir"
return 0
fi
done
done
return 1
}
#
# Uses "which" and "readlink" to locate firefox on Linux, etc
#
function get_ffdir()
{
for i in "${appnames[@]}"; do
# Convert "Firefox" to "firefox", etc
lower=$(echo "$i" |tr '[:upper:]' '[:lower:]')
# Readlink uses the symlink to find the actual install location
# will need to be removed for non-symlinked applications
exec=$(readlink -f "$(which $lower)")
# Assume the binary's parent folder is the actual application location
ffdir=$(echo "$exec" |rev |cut -d'/' -f2- |rev)
if [ -f "$ffdir" ]; then
return 0
fi
done
return 1
}
echo "Searching for Firefox..."
ffdir=""
if [[ "$OSTYPE" == "darwin"* ]]; then
# Mac OSX
get_osx_ffdir
else
# Linux, etc
get_ffdir
fi
echo "Found application here: $ffdir"
# TODO: Process failures, i.e. "$ffdir" == "" or "$?" != "0", etc
type
এবং type -P
না করে? নন-ওএসএক্স কোড ওএস এক্সে কাজ করে? যদি না হয় তবে আপনি কেন ব্যাখ্যা করতে পারবেন না? যদি হ্যাঁ, আপনার দুটি সংস্করণ থাকবে কেন?
/bin
বা /usr/bin
, ইত্যাদি কিন্তু এর পরিবর্তে ইনস্টল /Applications/My3rdPartyApp.app
ও বাইনারি একটি সাব-মধ্যে সংরক্ষিত হয় Contents/MacOS
এটা বেশ উপার্জন অ্যাপ্লিকেশনটির অবস্থান নির্ধারণের জন্য কোনও ক্রস-প্ল্যাটফর্ম কৌশল ব্যবহার করা কঠিন (অতএব এর ব্যবহার lsregister
) আরও খারাপ, ওএসএক্স ডিরেক্টরি কাঠামোটি বাইনারিটিকে সংস্থান থেকে পৃথক স্থানে স্থাপন করে। উপরের স্নিপেটটি ফায়ারফক্সের defaults/pref
ডির সনাক্ত করতে সহায়তা করার জন্য লেখা হয়েছিল written
/usr/bin/firefox
আসলে ফায়ারফক্স বাইনারি নয়, সুতরাং আমি readlink
যেখানে আউটপুটটি এটি নির্দেশ করি সেখানে এটি অনুসন্ধান করতে এবং তারপরে defaluts/prefs
সেখান থেকে ডিরেক্টরিটি সন্ধান করি। একদিকে নোটে, সিমিলিংকিংয়ের বিষয়ে: করণটি সেই উক্ত ls -al /usr/bin/* |grep -- '->' |wc -l
ডিরেক্টরিটিতে প্রায় 303 বাইনারি চিত্রিত করে যা আমার উবুন্টু কনফিগারেশনটি আসলে প্রতিলিঙ্ক। (তাদের মধ্যে প্রায় ১%%) এই কারণে, উপরের কোড ** * অবশেষে সিমনলিকগুলি পুনরাবৃত্তভাবে সমাধান করার জন্য সংশোধন করা উচিত যতক্ষণ না এটি বাইনারিটিতে আধ্যাত্মিক পথটি খুঁজে পায়।
type -P
প্রশ্নের উত্তর দেওয়ার জন্য , আমি প্রশ্নের উত্তর দেওয়ার জন্য সেই আদেশের সাথে যথেষ্ট পরিচিত নই। সম্ভবত আপনি কিছুটা ব্যাখ্যা করতে পারেন। :)
type
করা হয়েছে কারণ এটি প্রথম (& গৃহীত) উত্তর ভিত্তিতে ছিল। এটি একটি শেল বিল্টিন যা নির্দেশ করে যে নাম (গুলি) কমান্ড হিসাবে ব্যবহৃত হলে কীভাবে ব্যাখ্যা করা হবে indicates এটির পসিক্স সংস্করণ, যা বরং খালি-হাড়, এখানে বর্ণিত হয়েছে । … (চালিয়ে যাওয়া)
প্রোগ্রামটি চলমান থাকলে কল করুন
ps -ef | grep PROGRAMM
বাইনারিগুলির পথটি চলকটিতে উল্লেখ করা হয় $PATH
।
এর সাথে এর সামগ্রী দেখতে পাবেন env
।
$PATH
সাথে দেখা যেতে পারে env
তবে echo $PATH
কম ভার্জোজ হবে।
আপনার সমস্ত এলিয়াসের তালিকা করতে আপনি টার্মিনালে " ওরফে " কমান্ড ব্যবহার করতে পারেন । অথবা আপনি যদি কোনও ডিরেক্টরিতে থাকেন তবে আপনার বর্তমান পথ দেখানোর জন্য আপনি " pwd " ব্যবহার করতে পারেন ।
যদি আপনি ফাইলের নাম বা ফাইলের একটি অংশ জানেন তবে আপনি নিজের ফাইলটি সনাক্ত করতে " সন্ধান " ব্যবহার করতে পারেন ।
find / -name things.jpeg