我在 bash 中转义字符时遇到问题。我想在不同用户下运行命令时转义单引号和双引号。出于这个问题的目的,假设我想在屏幕上回显以下内容:
'single quote phrase' "double quote phrase"
Run Code Online (Sandbox Code Playgroud)
如果我还需要切换到其他用户,我该如何转义所有特殊字符:
sudo su USER -c "echo \"'single quote phrase' \"double quote phrase\"\""
Run Code Online (Sandbox Code Playgroud)
当然,这不会产生正确的结果。
有时候,我看到shell脚本使用所有的引用一些文字,这些不同的方式:"..."
,'...'
,$'...'
,和$"..."
。为什么有这么多不同类型的引用被使用?
他们的行为是否有所不同或影响了我在他们内部可以做的事情?
我今天从http://www.tutorialspoint.com/unix/unix-quoting-mechanisms.htm阅读 shell 教程
其中提到:
如果要输出的字符串中出现单引号,则不应将整个字符串放在单引号内,而应在其之前使用反斜杠 (),如下所示:
echo 'It\'s Shell Programming'
Run Code Online (Sandbox Code Playgroud)
我在我的 centos 服务器上试过这个,它不起作用,>
提示提示我输入更多。
我想知道,由于两个单引号将每个特殊字符转换为普通字符,其中包括转义符号\
,但排除自身,'
,
我应该如何'
在单引号短语中表示单引号?
我正在尝试删除名称中带有空格的所有文件。我正在使用以下命令。但它给了我一个错误
命令 : ls | egrep '. ' | xargs rm
在这里,如果我只使用ls | egrep '. '
命令,它会给我所有文件名,文件名中带有空格。但是当我尝试将输出传递给 rm 时,所有空格(前导或尾随)都会被删除。所以我的命令没有得到正确执行。
有关如何删除名称中至少有一个空格的文件的任何指示?