RCi*_*ICT 10 shell ksh cd-command quoting
运行 kornshell 并尝试遍历目录树。想cd到一个如下命名的子目录:
-3ab_&_-3dc.img
Run Code Online (Sandbox Code Playgroud)
我的问题是我需要如何转义此名称中的&符号?我尝试了双引号和反斜杠的不同组合,但没有成功。
Gil*_*il' 13
对于&
(或几乎任何其他角色),您有两种简单的可能性。
' -3ab_&_-3dc.img'
-3ab_\&_-3dc.img
有两个例外:
foo'bar\qux
: cd 'foo'\''bar\qux'
。你可以这样记住它:在单引号内,'\''
得到一个单引号。您也可以使用双引号,但是您需要在某些字符前放置一个反斜杠。单引号更直接。
这里还有一个额外的困难,即目录的名称以破折号开头。该字符告诉cd
命令(就像几乎每个命令一样)后面跟着一个选项。破折号不是 shell 所特有的,只是命令所特有的,所以引号不会影响它。您有两种方法可以将一个以破折号开头的参数传递给命令,而无需将其解释为选项:
./
在前面仍然表示同一个文件。--
前面。这告诉命令停止寻找选项。所以这里有一些方法可以让你进入这个子目录:
cd -- '-3ab_&_-3dc.img'
cd -- -3ab_\&_-3dc.img
cd ./-3ab_\&_-3dc.img
cd './-3ab_&_-3dc.img'
Run Code Online (Sandbox Code Playgroud)
&符号确实需要转义,但您遇到的问题可能出在前导-
,而不是&符号。领先的-
cd 认为您正在传递选项。您可以使用./
以下方法解决此问题:
cd './-3ab_&_-3dc.img'
Run Code Online (Sandbox Code Playgroud)