在不同文件夹中的bash脚本中创建符号链接
我的bash脚本得到两个文件夹参数(存在和所有内容) 在第一个里面,我想创建一个到第二个的链接 假设我有文件夹/home/matt/a和/home/matt/b,我这样调用脚本:在不同文件夹中的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的链接) 这只是一个非常简单的示例,我正在寻找一个足够通用的脚本,可以接受不同的参数(绝对或相对路径…等等)。试
/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