帮酷LOGO
0 0 评论
文章标签:BASH  DIR  

问题:

我有一个名为"foo baz"的目录。 我怎么可以


$ cd"foo bar baz blob"



我尝试过引用("和'),以及转义空格( )。 它无法工作选项卡完成不能工作。

我还必须发出包含空格的文件名参数的命令。 我该怎么做? 即使 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



Ooof。谢谢。


回答 1:

你有三种选择:

  • 使用反斜杠字符转义空格
  • 用双引号( "" ) 将目录 NAME 包装起来
  • 使用制表符完成

创建目录:


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/



但是,使用制表符完成使这里过程更加容易,并且避免了手动转义空格。


回答 2:

我刚刚在/home/abed, 使用的选项卡完成中创建了相同的文件夹,它。 请参见下图。如果文件夹在不同位置创建,则必须导航到该位置才能进入文件夹。

enter image description here

也可以。请参见图像

enter image description here


回答 3:

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


cd 'foo bar baz literal string'



在 shell 中,单引号中没有解释任何内容,因此你应该安全地使用不。




文章标签:DIR  BASH  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语