Sau*_*ahu 2 git directory bash command
我正在Git bash中运行这两个命令。
他们为什么表现不同?他们不是应该做同样的事情,还是我想念什么?
git diff > D:\Patches\afterWGComment.txt
Run Code Online (Sandbox Code Playgroud)
创建文件PatchesafterWGComment.txt中D:/
git diff > D:/Patches/afterWGComment.txt
Run Code Online (Sandbox Code Playgroud)
正确创建的文件afterWGComment.txt中D:/Patches/
请注意,D:/Patches/在运行上述命令之前,文件夹已存在。
Bash将反斜杠视为转义字符,这意味着其后的符号将按字面意义进行解释,并且反斜杠本身也会被删除。
$ echo $HOME
/home/user
$ echo \$HOME
$HOME
Run Code Online (Sandbox Code Playgroud)
在Windows中,反斜杠用作路径分隔符,这会带来一些不便。幸运的是,单引号内的反斜杠字符会失去其特殊含义,并且会按字面意义对待(与其他任何字符一样,单引号除外):
$ echo '\$HOME'
\$HOME
Run Code Online (Sandbox Code Playgroud)
因此,如果要将Windows路径复制并粘贴到Git bash中,请将其放在单引号内:
git diff > 'D:\Patches\afterWGComment.txt'
Run Code Online (Sandbox Code Playgroud)
反斜杠是用于转义元字符的转义字符。这意味着你需要转义:
D:\\Patches\\afterWGComment.txt
Run Code Online (Sandbox Code Playgroud)
或者,您可以将字符串放在单引号中,这将使所有字符变成文字:
'D\Patches\afterWGComment.txt'
Run Code Online (Sandbox Code Playgroud)
一些元字符:*, ~, $, !, ...