【问题标题】:What's the magic of "-" (a dash) in command-line parameters?命令行参数中的“-”(破折号)有什么魔力?
【发布时间】:2011-12-24 03:12:31
【问题描述】:

例子:

  • 创建 ISO 映像并将其直接刻录到 CD。

    mkisofs -V Photos -r /home/vivek/photos | cdrecord -v dev=/dev/dvdrw -

  • 切换到上一个目录。

    cd -

  • 监听端口 12345 并解压发送给它的数据。

    nc -l -p 12345 | tar xvzf -

破折号的用途是什么以及如何使用它?

【问题讨论】:

    标签: linux bash shell unix command-line


    【解决方案1】:

    如果您指的是tar 命令末尾的裸-,这在许多想要使用文件的命令中很常见。

    它允许您指定标准输入或输出,而不是 实际 文件名。

    您的第一个和第三个示例就是这种情况。例如,cdrecord 命令采用标准输入(mkisofs 生成的 ISO 映像流)并将其直接写入/dev/dvdrw

    使用cd 命令,每次更改目录时,它都会存储您来自的目录。如果你用特殊的-“目录名”来做cd,它会使用那个记住的目录而不是一个真实的目录。使用它,您可以轻松地在两个目录之间快速切换。

    其他命令可能会将- 视为一个不同的特殊值。

    【讨论】:

    • 请注意,您也可以将- 用于 git 分支,即您可以使用 git checkout - 切换回之前的分支
    • tar 文档中的什么地方解释了它是受支持的?我怎么知道哪些命令支持它?
    • 如果某个命令对- 有特殊含义,您可以在手册页中找到它的解释。
    • su - #使 shell 成为登录 shell
    • 我觉得这样的命令很好奇:tar -cvf - /home | aescrypt -e -p apples - >backup_files.tar.aes 实际上是 tar -cvf - /home | aescrypt -e -p apples -o backup_files.tar.aes - 因为管道字符 |应该使最后一个破折号的存在变得不必要。但是如果没有最后一个破折号,命令就会失败。听起来不合逻辑。有人可以给我一个参考,解释命令行中的裸破折号含义。我找不到任何东西。
    【解决方案2】:

    这不是魔法。一些命令将- 解释为用户想要从标准输入读取或写入标准输出;它对 shell 没有什么特别之处。

    【讨论】:

    • cd -的情况除外; bash(1) 处理 cd - 就好像你写了 cd $OLDPWD
    • @sarnold 但重点是一样的,cd -- 一个 shell 内置命令 -- 自己解释一个破折号。没有“魔法”:-)
    • @pst,当然,没有魔法(这只是代码 :),但是 它对 shell 有一些特别之处。
    【解决方案3】:

    - 正是每个命令想要的意思。有几种常见的约定,您已经在其他答案中看到了其中大多数的示例,但它们都不是 100% 通用的。

    就外壳而言,- 字符并没有什么神奇之处(除了外壳本身,以及它的一些内置命令,如 cdecho,以常规方式使用它) .一些字符,例如\'"“神奇的”,无论它们出现在哪里都有特殊的含义。这些是“shell 元字符”。 - 不是这样的。

    要查看给定命令如何使用-阅读该命令的文档

    【讨论】:

      【解决方案4】:

      表示使用程序的标准输入流。

      cd 的情况下,它意味着不同的东西:切换到之前的工作目录。

      【讨论】:

        【解决方案5】:

        神奇在于约定。几千年来,人们一直使用“-”来区分选项和参数,并在文件名中使用“-”来表示标准输入或标准输出,视情况而定。不要小看约定的力量!

        【讨论】:

        • 不要高估人们从字面表达中辨别说话方式的能力。这已经有几千年没有发生了。
        • @tripleee - 没错,但它已经持续了数十亿秒。 ;-)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多