在ubuntu上创建符号链接时,我有时会得到奇怪的结果

时间:2014-09-10 18:20:29

标签: shell unix ubuntu symlink

我试图为目录中的所有文件创建一堆符号链接。看起来,当我手动在shell中键入此命令时,它工作得很好,但是当我在shell脚本中运行它,或者甚至使用向上箭头重新运行它时,我会遇到以下问题。

$ sudo ln -s /path/to/my/files/* /the/target/directory/

这应该在/ path / to / my / files中创建一堆sym链接,如果我在manuall中输入命令,但是当我从shell脚本运行命令时,确实会这样做,或者使用向上箭头重新运行它我在/ target /目录/中调用*得到一个单一的符号链接,因为链接名称实际上是' *'然后我必须运行

$ sudo rm * 

删除它,这对我来说似乎很疯狂。

2 个答案:

答案 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