怎样在 Linux 中处理带有空格的文件名

您会注意到 Linux 中的文件通常不包含名称的一件事。 您的老师或同事在文件和目录名称中使用下划线而不是空格。

并不是说 Linux 终端中的文件名中不能使用空格。 只是它会造成额外的痛苦,这就是为什么你应该尽可能避免它。

为什么? 让我用例子来说明这一点。 您知道 Linux 命令的通用语法:

command [options] argument1 argument2

在这里,参数用空格分隔。 如果您尝试直接使用带空格的文件名,它将被视为单独的参数,而不仅仅是一个参数。

在上面的截图中,当我尝试使用 cat agatha books 命令,它不明白 agatha books 是单个参数。 它对待 agathabooks 作为不同的文件名。

那么怎样处理文件名中的空格呢? 有两种方式:

将整个文件名括在引号之间:

"file name withn spaces"

使用反斜杠键转义每个空格:

file name with spaces

我会详细展示它。

制表符补全通常也适用于空格。 如果您按文件名的 Tab 键,您的终端可能会显示带有空格的文件名,并用反斜杠转义。

读取文件名中包含空格的文件

要使用包含空格的文件名,您可以将其用引号括起来,如下所示:

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
在 Linux 中创建名称中带有空格的新文件

处理文件夹名称中的空格

您可以像创建文件一样创建名称中带有空格的目录。

mkdir "new dir"

现在,如果你想切换到这个目录,你会有一个带空格的路径。

但这对你来说应该不再是问题了。 要 cd 进入有空格的目录,请再次使用引号或反斜杠。

cd "new dir"
cd new dir

基本上,每当您必须处理名称中的空格时,您都可以使用引号或反斜杠键。

假设你必须复制一个文件 my file 由此 new dir. 您可以执行以下操作:

cp new dir/my file
在 Linux 中处理名称中带有空格的文件夹

现在它开始变得有点混乱,对吧? 有反斜杠和正斜杠。 如果这些斜线太多,它可能会吓到新用户甚至是经验丰富的用户。

当文件名中有反斜杠时,它会变得更加混乱。 然后你会看到双重后挡板。

这就是为什么您应该尽量避免在文件名中使用空格或其他特殊字符的原因。 要分隔文件名中的单词,请使用下划线。

touch a_very_long_file_name_with_too_many_words

这使文件名更易于阅读,并且您不必额外努力处理文件名中的这些空格。

相关阅读:

Posted in: Linux