BASH脚本将其转换为path名中带空格的目录

Argggg。 我一直在这个愚蠢的问题挣扎了好几天,我找不到答案。

我在Mac OS X上使用BASH,我想创build一个简单的可执行脚本文件,当它运行时会更改为另一个目录。 但是,该目录的path中有空格。 你怎么这样做? 这是我的…

文件名称: cdcode

文件内容: cd ~/My Code

现在被授予,这不是一个很长的path名,但是我的实际path名是五个深度目录,其中四个目录在path中有空格。

顺便说一句,我试过cd "~/My Code"谈会cd "~/My Code"cd "~/My\ Code" ,这些都没有工作。

当你重复一个path时,你会停止代字符扩展。 所以有几种方法可以做到这一点:

 cd ~/"My Code" cd ~/'My Code' 

代字号不在这里引用,因此代字号扩展仍然会运行。

 cd "$HOME/My Code" 

您可以扩展双引号string中的环境variables; 这基本上是波浪扩展正在做的事情

 cd ~/My\ Code 

您也可以使用反斜杠转义特殊字符(如空格)。

嘿! 我在http://www.askdavetaylor.com/can_my_path_include_directory_names_with_spaces.html中看到了这一点;

x =“testing\我”
eval cd $ x

在双引号文本常量和“cd”之前的“eval”中的组合\使其工作就像一个魅力!

您可以使用以下任何一种:

 cd ~/"My Code" cd ~/M"y Code" cd ~/My" Code" 

你不能使用:

 cd ~"/My Code" 

第一个作品,因为shell展开〜/ $ HOME /,然后用不带双引号的“我的代码”。 第二个失败,因为没有用户称为" ”(双引号) ~"映射到。

 cd ~/My\ Code 

似乎为我工作…如果删除引号,但保持斜杠不起作用,你可以发布一些示例代码?

一个反斜杠适用于我:

 ry4an@ry4an-mini:~$ mkdir "My Code" ry4an@ry4an-mini:~$ vi todir.sh ry4an@ry4an-mini:~$ . todir.sh ry4an@ry4an-mini:My Code$ cat ../todir.sh #!/bin/sh cd ~/My\ Code 

你确定问题不是你的shell脚本在其子shell中改变了目录,但是当你完成后你又回到了主shell(和原始目录)? 我通过使用避免了。 在当前shell中运行脚本,尽pipe大多数人只会使用别名。 空间可能是一个红色的鲱鱼。

在Linux下工作时,下面的语法是正确的:

cd ~/My\ Code

但是,当你执行你的文件时,使用下面的语法:

$ . cdcode

(只是“。”而不是“./”)

我有一个类似的问题,现在我正在使用bash脚本来转储一些数据。 我最终在脚本文件夹中创build了一个符号链接,其中没有任何空格。 然后,我指出我的脚本符号链接,这工作正常。

创build你的链接。 ln -s [目标目录或文件] ./[SHORTCUT]

莫或可能没有用。

使用双引号

 go () { cd "$*" } 

避免〜在脚本中; 改用$ HOME。

这样做的简单方法是 –

  $ cd My\ Folder 

在bash中,运行DIR命令,在结果中你会看到在它们之间有空格的文件夹或path名已经被写入结果中 –

 $dir My\ Folder New\ Folder