您会注意到一件事,Linux 中的文件通常不包含名称,您的老师或同事在文件和目录名称中使用下划线而不是空格。
并不是说您不能在 Linux 终端中的文件名中使用空格,只是它会产生额外的痛苦,这就是为什么你应该尽可能避免它。
为什么?让我用例子来说明这一点,Linux 命令的通用语法:
command [options] argument1 argument2
在这里,参数用空格分隔。如果您尝试直接使用带空格的文件名,它将被视为单独的参数,而不仅仅是一个参数。
在上面的屏幕截图中,当我尝试使用cat agatha books命令时,它不明白那agatha books是一个参数,它将agatha和books视为不同的文件名。
那么如何处理文件名中的空格呢?
有两种方法:
将整个文件名用引号括起来:
"file name withn 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 进入带有空格的目录,请再次使用引号或反斜杠。
cd "new dir"
cd new\ dir
基本上,每当您必须处理名称中的空格时,您都会使用引号或反斜杠键。
my file假设您必须从中复制一个文件new dir,以下是您可以执行的操作:
cp new\ dir/my\ file
现在它开始变得有点混乱,对吧?有反斜杠和正斜杠,如果这些斜线太多,它可能会吓倒新用户甚至是经验丰富的用户。
当文件名中有反斜杠时,它会变得更加混乱。然后你会看到双反溅。
这就是为什么您应该尽量避免在文件名中使用空格或其他特殊字符的原因。要分隔文件名中的单词,请使用下划线。
touch a_very_long_file_name_with_too_many_words
这使文件名更易于阅读,您不必花费额外的精力来处理文件名中的这些空格。