Yanıtlar:
Sen kullanabilirsiniz typeve whichbelirli bir komut ne olduğunu belirlemek için bashonu bulunduğu bir uygulama, eğer, ve.
$ 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
Komutlar whichve elbette type -Psadece programlarınız için çalışır PATH, ancak yine de komut adlarını yazarak başkalarını çalıştıramazsınız.
Bir OS X (GUI) uygulama paketinin nereye kurulduğunu belirlemenin basit bir yolunu arıyorsanız (örneğin openkomut tarafından kullanıldığı gibi ), komut satırından aşağıdaki kısa AppleScript'i yürütebilirsiniz:
$ osascript -e 'tell application "System Events" to POSIX path of (file of process "Safari" as alias)'
/Applications/Safari.app
Bu, söz konusu programın (örnekte Safari) çalışmasını gerektirir.
Bu, şu anda OSX ve Linux'ta Firefox uygulama dizinini bulmak için kullandığım yöntemdir. Başka bir uygulamaya geçmesi kolay olmalıdır. OSX 10.7, Ubuntu 12.04, Debian Jessie üzerinde test edildi
#!/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
typeve type -Pyapmayan bir şey var mı? OSX dışı kod OS X'te çalışıyor mu? Değilse, neden olmadığını açıklayabilir misiniz? Evet ise, neden iki versiyonunuz var?
/binveya /usr/bin, vs yerine monte /Applications/My3rdPartyApp.appve ikili bir alt dizinde saklanır Contents/MacOSbunu oldukça yapma uygulamanın konumunu belirlemek için herhangi bir çapraz platform tekniklerini kullanmak zor (bu nedenle kullanımı lsregister) Daha da kötüsü, OSX dizin yapısı ikili dosyayı kaynaklardan ayrı bir konuma yerleştirir. Yukarıdaki snippet, Firefox'un defaults/prefyönünü bulmanıza yardımcı olmak için yazılmıştır .
/usr/bin/firefoxaslında Firefox ikili değil, bu yüzden readlinkişaret ettiği yeri bulmak ve sonra defaluts/prefsdizini oradan bulmak için çıktısını kullanıyorum . Yan notta, sembolik bağlantı hakkında: Bunu yapmak ls -al /usr/bin/* |grep -- '->' |wc -l, bu dizindeki yaklaşık 303 ikili dosyayı gösterir, Ubuntu yapılandırmam aslında sembolik bağlantılardır. (yaklaşık% 16) Bu nedenle, yukarıdaki kod **, ikilinin kanonik yolunu bulana kadar sembolik bağlantıları yinelemeli olarak çözmek için değiştirilmelidir.
type -Psoruyu cevaplamak için, soruyu cevaplayacak bu komuta yeterince aşina değilim. Belki biraz ayrıntılandırabilirsiniz. :)
typeilk (ve kabul) cevap temeli olduğu için. Komut olarak kullanıldığında, belirtilen adların nasıl yorumlanacağını gösteren bir kabuk yerleşiğidir. Oldukça çıplak kemik olan POSIX sürümü burada açıklanmaktadır . … (Devam ediyor)
Program çalışıyorsa,
ps -ef | grep PROGRAMM
$PATHDeğişkende ikili dosyaların yoluna başvurulur .
İçeriğini ile görebilirsiniz env.
$PATHile görülebilir env, ancak echo $PATHdaha az ayrıntılı olacaktır.
Tüm takma adlarınızı listelemek için terminaldeki " takma ad " komutunu kullanabilirsiniz . Veya bir dizindeyseniz , geçerli yolunuzu göstermek için " pwd " kullanabilirsiniz.
Dosya adını veya dosya adının bir bölümünü biliyorsanız, dosyanızı bulmak için " find " kullanabilirsiniz.
find / -name things.jpeg
MAC (OS X) üzerinde şunları yapabilirsiniz:
Artık komut satırında uygulamanızın tam yolunu görebilir ve isterseniz oradan çalıştırabilirsiniz.
Alındığı wikiHow'daki