2010-10-05 94 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

相关问题