我的终端和制表符自动完成功能存在问题。如果我尝试使用 TAB 自动完成名称中包含空格的任何文件或文件夹,它会在空格前添加一个 \。
例如VirtualBox VMs
将成为VirtualBox\ VMs/
如果我尝试在按下 V 然后按下 Tab 键后自动完成。
知道是什么原因造成的吗?谢谢
答案1
这是因为空格被转义了。\
是 bash shell 中的转义字符,在 Linux 系统中使用,因此在 Ubuntu 中也使用。
Linux 文件名实际上并不包含空格和其他一些特殊字符。这是因为许多 Linux/Unix 命令使用空格来标记参数的结尾。转义字符用于阻止这些特殊字符在不需要的地方具有其特殊含义。
答案2
为了回答这个问题,我将引用以下段落Linux 日志:
在 UNIX 刚刚诞生的美好岁月里,没有人会想到在文件名中添加空格。这根本就不可能发生 — 就像您永远不会在 DOS 或 Windows 系统上这样做一样。文件名简短、简洁且格式正确,例如 HW43.DOC。
大多数 Linux 命令行实用程序和 shell 本身都是基于这样的前提设计的:空格分隔字段值,而不是作为文件名的可接受组成部分。
因此,为了解决这个问题,您应该使用终端中显示的转义字符,或者简单地用单引号或双引号引用您的文件。
例子:
cp dir\ 1/ ~/Desktop
或者
cp 'dir 1' ~/Desktop
或者
cp "dir 1" ~/Desktop
阅读更多:
您可能还会找到一个非常有趣的答案文件名中不使用空格字符有哪些技术原因?
答案列举了一些原因,例如:
- 可移植性问题
- 长度
- 保留字符
- 命令行解释
- 统一资源定位符 (URL)
答案的完整细节可以在这里找到关联。