我在macOS X上使用Bash,我想创建一个简单的可执行脚本文件,该文件在运行时将更改为另一个目录。但是,该目录的路径中有空格。您如何做到这一点?这就是我所拥有的...
档案名称: cdcode
文件内容:
cd ~/My Code
现在,这不是一个长路径名,但我的实际路径名是五个目录深,其中四个目录在路径中有空格。
顺便说一句,我已经试过cd "~/My Code"
与cd "~/My\ Code"
和这些都不奏效。
我在macOS X上使用Bash,我想创建一个简单的可执行脚本文件,该文件在运行时将更改为另一个目录。但是,该目录的路径中有空格。您如何做到这一点?这就是我所拥有的...
档案名称: cdcode
文件内容:
cd ~/My Code
现在,这不是一个长路径名,但我的实际路径名是五个目录深,其中四个目录在路径中有空格。
顺便说一句,我已经试过cd "~/My Code"
与cd "~/My\ Code"
和这些都不奏效。
Answers:
当双引号路径时,您将停止波浪号扩展。因此,有几种方法可以做到这一点:
cd ~/"My Code"
cd ~/'My Code'
这里没有引用波浪号,因此波浪线扩展仍将运行。
cd "$HOME/My Code"
您可以在双引号字符串内扩展环境变量。这基本上就是波浪号扩展所做的
cd ~/My\ Code
您还可以使用反斜杠转义特殊字符(例如空格)。
eval
。
eval
。
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中运行脚本,尽管大多数人只是为此使用别名。空格可能是红色鲱鱼。
在Linux下工作时,以下语法正确:
cd ~/My\ Code
但是,在执行文件时,请使用以下语法:
$ . cdcode
(仅是“。”而不是“ ./”)
使用双引号
go ()
{
cd "$*"
}
.bashrc
文件中功能的有用补充,用于在将包含空格的目录名称粘贴到命令行时更改目录,而不必随后转义空格或引用整个内容。cds
是一个更好的名字。
go
使其等同于cd
,即cd到主目录吗?
执行此操作的非常简单的方法是-
$ cd My\ Folder
在bash中,运行DIR命令,在结果中,您将看到这样的结果中已经写入了文件夹或路径名,它们之间有空格-
$dir
My\ Folder
New\ Folder
我现在正在使用bash脚本转储一些数据,所以我遇到了类似的问题。我最终在脚本文件夹中创建了一个符号链接,其中没有任何空格。然后,我将脚本指向符号链接,效果很好。
创建您的链接。ln -s [目标目录或文件] ./ [快捷方式]
茂或可能没有用。