在 linux 系统中处理文件名时,您可能会发现文件名通常不包含空格。您的老师或同事可能更倾向于使用下划线来替代空格,这有其原因。
虽然在 linux 终端中可以使用带空格的文件名,但这会带来额外的复杂性,因此尽量避免使用空格是有道理的。
为什么要避免空格?让我们通过一个例子来解释。Linux 命令的一般语法如下:
command [options] argument1 argument2
在这里,参数是通过空格分隔的。如果您尝试直接使用带空格的文件名,它会被解释为多个参数,而不是单个参数。
在上面的屏幕截图中,当我尝试使用 cat agatha books 命令时,系统不理解 agatha books 是一个参数,而是将 agatha 和 books 视为两个不同的文件名。
那么如何处理文件名中的空格呢?
有两种方法:
- 将整个文件名用引号括起来:
"file name with spaces"
- 使用反斜杠键转义每个空格:
file name with spaces
通常,制表符完成也可以用于空格。如果您按下制表键输入文件名,您的终端可能会显示带有反斜杠转义的空格的文件名。
要读取带空格的文件名,可以将文件名用引号括起来,如下所示:
cat "file name with spaces"
您也可以用反斜杠转义每个空格,但这种方法比前一种方法更繁琐:
cat file name with spaces
基本上,您需要在文件名中的每个空格前加上一个反斜杠。
您还可以使用单引号代替双引号:
cat 'file name with spaces'
单引号会忽略任何特殊字符,而双引号会忽略除 $、反引号和反斜杠之外的所有内容。有关更多信息,请参阅其他教程。
在文件名中创建带空格的文件时,您需要在终端中输入空格,再次使用反斜杠或引号。
与前一节类似,您可以使用引号创建带空格的新文件:
touch "file name with spaces"
或者使用反斜杠:
touch file name with spaces
处理文件夹名称中的空格,您可以像创建文件一样创建带空格的目录名称。
mkdir "new dir"
现在,如果您想切换到这个目录,您会遇到带空格的路径。
但这对您来说应该不再是问题。要进入带空格的目录,请再次使用引号或反斜杠。
cd "new dir" cd new dir
基本上,每当您必须处理带空格的名称时,您都会使用引号或反斜杠键。
假设您需要从 new dir 目录中复制一个名为 my file 的文件,以下是您可以执行的操作:
cp new dir/my file
现在它开始变得有点复杂,对吧?有反斜杠和正斜杠,如果这些斜线太多,可能会吓倒新用户甚至是经验丰富的用户。
当文件名中包含反斜杠时,情况会变得更加复杂。然后您会看到双反斜杠。
这就是为什么您应该尽量避免在文件名中使用空格或其他特殊字符的原因。要分隔文件名中的单词,请使用下划线。
touch a_very_long_file_name_with_too_many_words
这样做使文件名更易于阅读,您不必花费额外的精力来处理文件名中的这些空格。