转义-使用路径名空格将Bash脚本cd保存到目录中
虽然在macOS X上使用了Bash,但我想创建一个简单的可执行脚本文件,在运行时将其更改到其他目录。 但是,此目录的路径包含空格。 你怎么这么做? 这就是我拥有的东西……。
文件名: cd '~/My Code '
文件内容:
CD~/my代码
被许可了。 这不是长路径名,但实际路径名为5个深度目录,其中4个目录在路径中有空间。
顺便说一下,我尝试了cd '~/My Code '和CD'~~/mycode ',但是这些都没有成功。
Benjamin w.asked 2019-04-15t 10336055336002 z
12个解决方案
71电压
用双引号括住路径将停止波浪号扩展。 有几种方法可以实现这一点
cd ~/'My Code '
cd ~/'My Code '
因为这里没有引用波浪号,所以波浪号扩展仍然会执行。
cd '$HOME/My Code '
环境变量可以用双引号字符串展开。 这基本上是奇尔达扩张在做的事情
光盘(/my )代码
也可以使用反斜杠转义特殊字符,如空格。
derobertanswered 2019-04-15t 10336055336033 z
31电压
在此页面上找到了以下解决方案:
x='test me '
eval cd $x
(双引号文本常数和eval(CD之前)的组合,动作像魅力一样!
user 365757 answered 2019-04-15t 10336056336004 z
8电压
可以使用以下选项之一:
cd ~/'My Code '
cd ~/M'y Code '
cd ~/My' Code '
你不能用:
CD ()/my代码)。
第一个工作原因是shell将/扩展到$ HOME /,并将其添加到我的代码中而没有双引号。 第二个失败是因为名为“”(双引号)的用户未映射到~ '。
jonathanleffleranswered 2019-04-15t 10336056336043 z
6电压
光盘(/my )代码
似乎对我有用.如果删除引号或保留斜线都不起作用,可以发出示例代码吗?
andrewflanagananswered 2019-04-15t 10336057336015 z
4电压
单个反斜杠对我有帮助:
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
#! 感性摩托车/sh
光盘(/my )代码
问题是,我确信您的shell脚本不是在子shell中更改了目录,但完成后是否返回到主shell (和原始目录)? 通过使用避免了。 尽管很多人只使用别名,但他们会在当前shell上运行脚本。 这些空间可能是红色鲱鱼。
ry4anbraseanswered 2019-04-15t 10336057336054 z
3电压
避开脚本; 用$ HOME代替。
chrisf.a.Johnson answered 2019-04-15t 10336058336020 z
2电压
在Linux上工作时,以下语法是正确的:
光盘(/my )代码
但是,在运行文件时,请使用以下语法:
$.CD代码
(只是)。 不是“”. /”)
alterlifeanswered 2019-04-15t 10336059336017 z
2电压
这样做是一个非常简单的方法
$ cd My Folder
在bash中运行DIR命令时,可以看到结果中包含以下空格的文件夹或路径名写入到结果中-
$dir
My Folder
新文件夹
mayukhdattaanswered 2019-04-15t 10336059336052 z
2电压
在努力解决同样的问题之后,我尝试了两种不同的解决方案:
解决方案1 :最简单的方法只有双引号变量。 如前面的答案your path escaped=$ (printf % q ' $ yourpathwithblankspace ' )所示
解决方案2 :要根据此答案Unix命令退出空间,可以剥离空间以利用Eval,如下所示:
your path escaped=$ (printf % q ' $ yourpathwithblankspace ' ) eval cd $yourPathEscaped
Hannibal 90 answered 2019-04-15t 11336000336044 z
1电压
因为使用bash脚本转储数据,所以现在发生了同样的问题。 最终在脚本文件夹中创建了符号链接。 没有空间。 然后,把我的脚本指向符号链接,运行正常。
创建链接。 ln-s [ targetdirectoryorfile ]./[ shortcut ]
Mau或者可能没用。
answered 2019-04-15t 11336001336029 z
1电压
使用双引号
go () ) ) )。
{
cd '$* '
}
boboanswered 2019-04-15t 11:01336058 z
0电压
使用单引号。 示例:
myPath=~/'my dir '
cd $myPath
jadiananswered 2019-04-15t 11:02336027 z