我试图为目录中的所有文件创建一堆符号链接。看起来,当我手动在shell中键入此命令时,它工作得很好,但是当我在shell脚本中运行它,或者甚至使用向上箭头重新运行它时,我会遇到以下问题。
$ sudo ln -s /path/to/my/files/* /the/target/directory/
这应该在/ path / to / my / files中创建一堆sym链接,如果我在manuall中输入命令,但是当我从shell脚本运行命令时,确实会这样做,或者使用向上箭头重新运行它我在/ target /目录/中调用*得到一个单一的符号链接,因为链接名称实际上是' *'然后我必须运行
$ sudo rm *
删除它,这对我来说似乎很疯狂。
答案 0 :(得分:1)
在脚本中运行该命令时,/path/to/my/files
中是否有任何文件?如果不是,则默认情况下,通配符无法扩展到,并且不会替换它。你最终得到了文字" *"。您可能需要查看shopt -s nullglob
并运行ln
命令,如下所示:
shopt -s nullglob
sudo ln -s -t /the/target/directory /path/to/my/files/*
答案 1 :(得分:0)
执行命令时,脚本可能使用sh
和使用bash
。
您可以尝试这样的事情:
for file in $(ls /path/to/my/files/*) do
ln -s "${file}" "/the/target/directory/"${file}"
done