【问题标题】:When creating symbolic links on ubuntu I sometimes get an odd result在 ubuntu 上创建符号链接时,我有时会得到一个奇怪的结果
【发布时间】:2014-09-10 18:20:29
【问题描述】:

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

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

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

$ sudo rm * 

删除它,这对我来说简直是疯了。

【问题讨论】:

    标签: shell unix ubuntu symlink


    【解决方案1】:

    当您在脚本中运行该命令时,/path/to/my/files 中是否有任何文件?如果不是,则默认情况下,通配符没有可扩展的内容,也不会被替换。你最终得到了文字“*”。您可能想查看shopt -s nullglob 并像这样运行ln 命令:

    shopt -s nullglob
    sudo ln -s -t /the/target/directory /path/to/my/files/* 
    

    【讨论】:

      【解决方案2】:

      也许脚本使用sh 而你在执行命令时使用bash

      你可以试试这样的:

      for file in $(ls /path/to/my/files/*) do ln -s "${file}" "/the/target/directory/"${file}" done

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-02
        • 1970-01-01
        • 1970-01-01
        • 2016-11-29
        • 1970-01-01
        相关资源
        最近更新 更多