2010-10-05 81 views
7

我的bash腳本獲取兩個帶有文件夾(存在和所有內容)的參數。在另一個文件夾的bash腳本中創建一個符號鏈接

裏面的第一個我想創建一個鏈接到第二

假設我有文件夾的/ home /亞光/ A和/ home /亞光/ B,我調用腳本是這樣的:

/home/matt # ./my_script ./a ./b 

我希望看到一個符號鏈接內指向到b

當然,只是在做

ln -s $2 $1/link 

在腳本不起作用...(它會創建一個鏈接,尋找一個./b裏面)

這只是一個非常簡單的例子,我正在尋找一個足夠通用的腳本如果你有readlink

ln -s "$(readlink -e "$2")" "$1/link" 

:採取不同的參數(絕對或相對路徑...等...)

回答

2

這給一試。

也許對larsmans答案這種變化:

cd "$2" 
dir=$(pwd) 
cd - 
ln -s "$dir" "$1/link" 
+1

隨着readlink它運作良好(這是'ln'而不是'ls') – Matthieu 2010-10-05 09:43:35

+0

@Matthieu:錯字固定,謝謝。 – 2010-10-05 10:07:24

1
#!/bin/sh 
cd $2 
ln -s "`pwd`" $1/link 
+0

失敗,尋找1 $內2 $ ... /鏈接現在,我主要是通過對兩個參數只使用相對路徑來嘗試...... – Matthieu 2010-10-05 09:33:14

+0

你有路徑名和空格嗎?這也許可以解釋爲什麼沒有適當的引用就無法正常工作(丹尼斯威廉姆森就是例證)。 – 2010-10-05 10:06:26

1

這裏還有一個可愛的一行代碼:

ln -s `cd \`dirname $2\`; pwd`/`basename $2` $1/link 
+0

我喜歡這個... – Matthieu 2010-10-05 09:52:09

+2

你可以用'$()'而不是反引號來避免尷尬的轉義:'ln -s「$(cd」$(dirname「$ 2」)「; pwd)/ $(basename」 $ 2「)」「$ 1/link」' – 2010-10-05 10:06:38

相關問題