符號鏈接與別名不同,儘管它們似乎用於相同的目的(或多或少/我認爲)。我需要能夠告訴一個文件是否是一個別名,並且確定文件位置是否是bash腳本中的別名
if [ -h /path/to/file ]
不起作用。有沒有這樣的別名?谷歌是最沒有幫助的,因爲別名顯然是完全在bash中的別名。
謝謝!
符號鏈接與別名不同,儘管它們似乎用於相同的目的(或多或少/我認爲)。我需要能夠告訴一個文件是否是一個別名,並且確定文件位置是否是bash腳本中的別名
if [ -h /path/to/file ]
不起作用。有沒有這樣的別名?谷歌是最沒有幫助的,因爲別名顯然是完全在bash中的別名。
謝謝!
Finder將文件的別名信息存儲在文件的ResourceFork中。要閱讀這個元數據,我會使用聚光燈來確定文件的種類;以下命令將返回文件的種類,以便您可以在if語句中進行比較。
mdls -raw -name kMDItemKind /path/to/test.pdf returns PDF (Portable Document Format)
mdls -raw -name kMDItemKind /path/to/test.pdf\ Alias returns Alias
另一種方式將結合Applescript,它可以通過osascript在命令行執行。要返回某種文件,請運行:
tell application "Finder" to get kind of ((POSIX file "/path/to/test.pdf\ Alias") as alias)
我不是很清楚,如果你問:
命令你想:
if [ -h /path/to/file ]
幫助你計算出,如果一個文件是一個符號鏈接或沒有,例如:
$ touch newfile
$ ln -s newfile newlink
$ for f in newfile newlink; do
if [ -h "$f" ]; then
echo "$f is a symlink"
else
echo "$f is not a symlink"
fi
done
newfile is not a symlink
newlink is a symlink
如果你的意思是:「我怎麼能找出是否輸入一些命令將運行一個別名」,那麼你可以使用type
或alias
,例如
$ type ls
ls is aliased to `ls --color=auto --format=across'
$ type less
less is /usr/bin/less
如果你問硬鏈接,find -inum
和ls -i
可以幫助,但這是一個更高級的主題。