如何进入一个空白目录?

如何进入一个空白目录?

我有一个名为“foo bar baz blob”的目录。我该如何做?

$ cd "foo bar baz blob"

我尝试过使用引号 (" 和 ') 以及转义空格 (\ )。但是没有用。Tab 补全也不起作用。

我还必须发出包含空格的文件名参数的命令。我该怎么做?即使是 MidnightCommander (mc) 也无法做到这一点。

编辑

一年多后,我终于找到了问题的根源。我在内置 cd 中重载了一个函数,该函数可以自动列出更改目录中的文件:


$ type cd
cd ist eine Funktion.
cd () 
{ 
    if builtin cd $1; then
        ls;
    fi
}

$ cd Interner\ Speicher/
bash: cd: Interner: Datei oder Verzeichnis nicht gefunden

$ builtin cd Interner\ Speicher/

$ pwd
/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C018%5D/Interner Speicher

$ ls
Alarms   DCIM      Movies  Notifications  Podcasts   SmsContactsBackup
Android  Download  Music   Pictures   Ringtones

解决方案很简单:只需在 $1 周围加上双引号:

if builtin cd "$1"; then

噢。谢谢。

答案1

您有三个选择:

  • 使用反斜杠字符转义空格
  • 将目录名称括在双引号 ( "")中
  • 使用TAB完成

创建目录:

user@pc:~/testfolder$ ls -l
total 0
user@pc:~/testfolder$ mkdir "foo bar baz blob"
user@pc:~/testfolder$ ls
foo bar baz blob

方法 1:

user@pc:~/testfolder$ cd foo\ bar\ baz\ blob/
user@pc:~/testfolder/foo bar baz blob$ echo "This works"
This works

方法 2:

user@pc:~/testfolder$ cd "foo bar baz blob"/
user@pc:~/testfolder/foo bar baz blob$ echo "This works, too"
This works, too

方法 3:

user@pc:~/testfolder$ cd foo<TAB><ENTER>

根据您对另一个答案的评论:为了访问名为的文件,需要按如下方式进行转义:

Eric\ Burdon\ -\ Starportrait\ -\ CD\ 1\ \(flac\).cue foo\ bar\ baz\ blob/

但是,使用TAB完成可以使这个过程更容易,并且避免您必须手动转义空格。

答案2

我刚刚在 /home/abed 中创建了相同的文件夹,使用了 Tab 补全,并且成功了。参见下图。如果文件夹是在其他位置创建的,则必须先导航到该位置,然后才能通过 CD 进入文件夹。

在此处输入图片描述

这也行。见图

在此处输入图片描述

答案3

用单引号引用您的文件名。

cd 'foo bar baz literal string'

在 shell 中,单引号内没有任何内容被解释,因此您不会遇到不寻常的字符。

相关内容