在不同文件夹中的bash脚本中创建符号链接

在不同文件夹中的bash脚本中创建符号链接,bash,Bash,我的bash脚本得到两个文件夹参数(存在和所有内容) 在第一个里面,我想创建一个到第二个的链接 假设我有文件夹/home/matt/a和/home/matt/b,我这样调用脚本: /home/matt # ./my_script ./a ./b 我想在a中看到一个指向b的符号链接 当然,只是做 ln -s $2 $1/link 在脚本中不起作用。。。(它将创建一个在a中查找a./b的链接) 这只是一个非常简单的示例,我正在寻找一个足够通用的脚本,可以接受不同的参数(绝对或相对路径…等等)。试

我的bash脚本得到两个文件夹参数(存在和所有内容)

在第一个里面,我想创建一个到第二个的链接

假设我有文件夹/home/matt/a和/home/matt/b,我这样调用脚本:

/home/matt # ./my_script ./a ./b
我想在a中看到一个指向b的符号链接

当然,只是做

ln -s $2 $1/link
在脚本中不起作用。。。(它将创建一个在a中查找a./b的链接)

这只是一个非常简单的示例,我正在寻找一个足够通用的脚本,可以接受不同的参数(绝对或相对路径…等等)。

试试看:

ln -s "$(readlink -e "$2")" "$1/link"
如果您有
readlink

或者拉斯曼答案的这种变化:

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

下面是另一个可爱的一行:

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

它失败了,在$2内寻找$1/链接。。。现在,我主要是尝试对两个参数只使用相对路径……有带空格的路径名吗?这也许可以解释为什么没有正确的引用它就不起作用(丹尼斯·威廉姆森就是一个例子)。你可以通过使用
$()
而不是倒勾来避免这种尴尬的转义:
ln-s“$(cd“$(dirname“$2”);pwd)/$(basename“$2”)“$1/link”
ln -s `cd \`dirname $2\`; pwd`/`basename $2` $1/link