linux bash:cd 到有空格的目录

linux bash:cd 到有空格的目录

如果目录名称为“my dir”。我可以使用以下命令访问该目录:

~: cd my\ dir

或者

~: cd "dy dir" 

但我发现如果我这样做:

~: export my_dir=my\ dir

或者

~: export my_dir="my dir"

然后

~: cd $my_dir

它不起作用,cd 总是将其参数获取为“my”并报告错误。

有人知道如何解决这个问题吗?

谢谢!

答案1

当在引号外使用变量时,shell 会根据空格拆分变量。请cd "$my_dir"改为这样做。

答案2

正在做

cd "$my_dir"

可以,但是您必须始终记住,对于 my_dir,您需要使用“my_dir”。另一种解决方案是您可以执行以下操作:

ln -s my\ dir my_dir
export my_dir="my_dir"

现在你应该能够做到:

cd $my_dir

因此基本上创建一个指向带有空格的目录的符号链接,然后导出符号链接而不是实际目录。

答案3

alias cdmydir="cd my\ dir"

您将无法将其用于任何其他功能,例如指定路径,但它可以用于此立即用途。

我尝试了export my_dir=my\\\ direxport my_dir="\"my dir\"",这样环境变量分别为my\ dir"my dir"。但是 bash 必须对环境变量进行与常规命令行不同的解析:我得到了my\和的错误“没有这样的文件或目录”错误"my

答案4

c(){cd“$1$2$3$4”;}

在您认为应该使用的任何 bash 文件中。 Tab 键添加 / 以转义空格,从 GUI 中拖动它也是如此。

相关内容