2011-02-09 49 views
0

符號鏈接與別名不同,儘管它們似乎用於相同的目的(或多或少/我認爲)。我需要能夠告訴一個文件是否是一個別名,並且確定文件位置是否是bash腳本中的別名

if [ -h /path/to/file ] 

不起作用。有沒有這樣的別名?谷歌是最沒有幫助的,因爲別名顯然是完全在bash中的別名。

謝謝!

回答

3

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) 
0

我不是很清楚,如果你問:

  • 別名
  • 符號鏈接(創建快捷方式文件的方式(使一個命令實際運行別的東西的一種方式) )
  • 硬鏈接(兩種文件都指向同一個文件的內容的名稱)

命令你想:

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 

如果你的意思是:「我怎麼能找出是否輸入一些命令將運行一個別名」,那麼你可以使用typealias,例如

$ type ls 
ls is aliased to `ls --color=auto --format=across' 

$ type less 
less is /usr/bin/less 

如果你問硬鏈接,find -inumls -i可以幫助,但這是一個更高級的主題。

相關問題