【问题标题】:what does this backslash mean in this bash command?这个 bash 命令中的反斜杠是什么意思?
【发布时间】:2022-08-09 19:02:27
【问题描述】:

我在这台服务器上遇到了这个叫做neofetch的工具,但我不知道最后这些字符是什么,有人可以给我解释一下吗? 我知道单个反斜杠是 bash 中的转义字符,但在这种情况下呢?谢谢。 输出来自 sudo -l 命令。

/usr/bin/neofetch \\\"\\\"

    标签: linux bash shell terminal sudo


    【解决方案1】:

    反斜杠 (\) 用于转义引号 (")。如果没有反斜杠,您将拥有:

    /usr/bin/neofetch ""
    

    shell 会将"" 解释为一个空字符串,并用它调用neofetch(即一个空字符串)。

    通过转义引号,您可以使用"" 调用neofetch

    【讨论】:

    • 谢谢你!如果没有在其中添加任何参数,那么使用空引号有什么意义?没有它们真的很重要吗?或者也可以吗?就像 /usr/bin/neofetch \
    【解决方案2】:

    它只打印""

    您可以随时在终端中使用echo \"\" 进行尝试。

    在这种情况下,它只是为了逃避 "" 本身,它应该被 shell 解释为一个空字符串;通过转义它,您将 "" 本身作为参数传递给您的 neofetch 调用。

    【讨论】:

    • 谢啦!是的,我在询问之前尝试了那个 echo 命令,只是想知道在引号中没有 args 的点,为什么不只使用 /usr/bin/neofetch \ ?
    • 最后的反斜杠只是让shell在执行命令时忽略换行符,所以你仍然需要将一个arg传递给你正在执行的脚本。但是使用\"\",您不会横向将任何参数传递给neofetch,它会向您简要介绍您的系统。因为有一个参数列表,您可以使用它们调用neofetch,例如内存或cpu。然而,同样可以通过调用neofetch 来完成。
    • 但是,neofetch 并不关心您作为 arg 传递的内容。如果您传递的不是定义的函数,它只会忽略它。检查here
    • 完美,感谢您的帮助!全清 :)
    猜你喜欢
    • 1970-01-01
    • 2013-10-24
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多