暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux 系统下,如下文件名中含有空格,该如何处理?

TIAP 2023-02-09
1569

经常使用 Linux 系统的同学应该会注意到一个问题,就是在系统中的文件(包括文件夹)名称中,一般都不含有空格,即便有时候需要,那也会使用下划线来代替。

为什么会这样呢?不是因为不能用空格,而是因为如果使用空格的话,会比较麻烦。举个例子,我们应该熟悉在命令行中,一般的语法结构是下面这个样子的:
    command [optionjs] argument1 argument2 ...
    也就是说,命令、选项、参数之间都是用空格隔开的,如果参数是某个文件,而这个文件的文件名中含有空格,那么文件名被空格隔开的部分都会被视为单独的参数,这就会带来问题。
    比如,在我当前工作目录下,有这样一个文件 tiap comm.txt,如果我使用 cat 命令查看文件内容:cat tiap comm.txt,系统就会报错,如下图所示:

    那假如文件名中,含有空格,应该怎么办呢?

    一般来说,有如下两种方式:

    1)将文件名放到引号中;

    2)使用反斜杠 \ 来转义空格。

    上面两种方法中,建议使用第一种,原因我们在下面章节中介绍。

    使用引号来处理含有空格的文件名

    前文中提到,如果要查看某个文件中的内容,但是该文件的文件名含有空格,可以将文件名放在双引号中,如下所示:
      cat "tiap comm.txt"

      另外,也可以使用单引号:

        cat 'tiap comm.txt'
        关于双引号和单引号的区别,大家可参考我们先前的文章:

        Bash Shell 中单引号和双引号的区别

        创建文件或文件夹,如果文件名需要包含空格,处理方式也是一样:
          mkdir "folder name"
          cd "folder name"
          touch "new file"

          使用反斜杠处理名称含有空格的文件

          如果文件或文件夹的名称中含有空格,使用反斜杠来转义其中的空格,需要注意的是,文件名中的每一个空格,都需要使用反斜杠来转义,比如:
            cat file\ name\ with\ space

            还是先前的例子:

              cat tiap\ comm.txt

              其他例子:

                mkdir create\ new\ folder
                cd create\ new\ folder/
                touch new\ file

                前文中我们提到过,使用反斜杠来处理空格不如引号,我们举个例子来说明,假如我们当前处于路径 home/gliu/work/tiap 下:

                上面有个命令:
                  cd create\ new\ folder/two/

                  看起来是不是比较乱?

                  如果换成引号:
                    cd "new folder"/two

                    就好多了。

                    即便如此,我们建议在 Linux 系统中,文件名中不要包含空格,如果需要分割文件名中的各个单词,统一使用下划线:
                      folder_name_with_space


                      文章转载自TIAP,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                      评论