相关疑难解决方法(0)

如何在 Bash 中方便地使用单引号或转义整个命令行?

介绍

考虑这样的工具watch可以接受另一个命令(例如ls -l),如下所示:

watch ls -l
# or equivalently
watch 'ls -l'
Run Code Online (Sandbox Code Playgroud)

如果命令更复杂,那么如果当前 shell 或 get 解释诸如$variable*|;之类的内容,那么一切都与引用/转义有关。这两个命令是不同的:&&watch

watch echo "$$"
watch 'echo "$$"'
Run Code Online (Sandbox Code Playgroud)

这些也是:

watch date ; echo done
watch date \; echo done
Run Code Online (Sandbox Code Playgroud)

ssh类似,它可以接受一个或多个参数并构建一个要在服务器上运行的命令。如果本地 shell 解释等,或者远程 shell 则$variable取决于引用/转义。|

有些命令sh -c需要包含代码的单个参数,但引用/转义的需求是相似的。事实上watch(或ssh) 为sh -c或类似的命令构建了这个单一参数。


问题

我已经有了想要提供给或或类似工具的确切命令。命令是从历史记录中获取的,或者粘贴到命令行中或者键入,就像要直接执行一样;它逐字在我的命令行中。在使用类似工具之前,不应扩展或解释命令中的任何内容。如果是这样,则意味着所有扩展和解释都应该稍后定期进行。如果是这样,则意味着它应该发生在服务器上。watchsshwatchwatchssh …

bash command-line escaping

6
推荐指数
1
解决办法
3215
查看次数

标签 统计

bash ×1

command-line ×1

escaping ×1