我看到一个反斜杠,但实际上有两个反斜杠!

Mat*_*Mat 3 bash libreoffice paste

有没有人可以帮助我理解这个奇怪的问题?

我试图重命名一个很长的文件夹列表。

我转到父目录并在文本文件中列出要重命名的所有文件夹:

find PARENT_FOLDER/ -type d -name *Images > ~/Desktop/directory_listing
Run Code Online (Sandbox Code Playgroud)

我在 LibreOffice Calc 中打开列表文件,修改了我必须修改的内容,使用“连接”功能为每个文件夹创建一个命令以重命名等。

当我回到 CLI 并从 Calc 粘贴我的命令时,mv 失败,指出它找不到要重命名的文件夹。嗯,这些文件夹确实存在,但经过进一步调查,我发现 Calc 中粘贴的文本在屏幕上显示 1 个反冲,但实际上包含 2 个!所以,我粘贴到 bash 中的文本是这样的:

mv Test\ Folder-1-Images TestFolder1
Run Code Online (Sandbox Code Playgroud)

但它实际解释的是:

mv Test\\ Folder-1-Images TestFolder1
Run Code Online (Sandbox Code Playgroud)

我使用 gedit 确认了这一点,我在文本中的命令行显示 1 个反斜杠,但是如果我将其复制并粘贴到 gedit 中的搜索框中,它会显示 2!

为什么?以及如何解决/防止这种情况?

use*_*186 5

在 Linux shell 中\是一个特殊字符

它告诉 shell 解释器按字面意思处理下一个字符

也就是说,如果你想\在脚本中作为命令的一部分传递,你必须使用它两次。第一个\被 shell 解释为一个特殊字符,告诉 shell 不要处理下一个字符,在这种情况下,第二个\不是特殊字符并将其传递。

在其他情况下,a\后跟一个普通字符被视为escape sequence赋予该组合特殊用途的an 。例如,\n将指针指向是一个新行。

有关其他示例,请参阅http://linuxcommand.org/wss0060.php

另请参阅http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_03.html以获得更多解释。

希望这可以帮助