cd没有转义空格


2

我将如何创建一个类似的命令cd,但您不需要转义空格?(假设一行中永远不会有多个空格。)

用法示例:

cds some directory

cd some\ directory


您可以将路径括在引号中以避免每个字符的转义,但我不认为您可以在没有特别努力的情况下改变空间字符解释这样的基本行为。
安德鲁兰伯特

您也可以完全依赖制表符完成。将以下内容添加到您的.bashrc.bash_profile制作选项卡循环选项而不是列出它们:bind '"\t":menu-complete'
Daniel Beck

Answers:


7

如果您正在使用bash,请将其放在〜/ .bashrc中:

cds() { cd "$*"; }

另一个解决方案是键入目录名的第一个字母,然后点击Tab键并让shell为您完成名称。


1
这是问题的最佳答案,但除了单个空格(例如&符号,分号,......)之外,它对包含任何有趣字符的目录名称没有帮助。真的,OP会更好地学习引用/逃逸/等等; 像这样的克隆只会让他养成坏习惯。(无论如何,答案都是+1。)
Gordon Davisson

1

这就是shell的工作方式。它用空格分隔参数。如果你创建了这样一个命令,你就是在教自己不要正确地逃避空间,这可能迟早会导致问题。


如果您只是想要cd一个目录而不需要转义,请使用引号启动命令:

$ cd 's ......现在按Tab...... ome directory'/

如您所见,没有使用转义,您的报价也将自动关闭。


如果你自动完成,无论如何都会逃离空间。
Daniel Beck

当然可以。这取决于OP真正想要达到的目标(我个人认为引用更美)
slhck

一般我同意,但我在一个环境变量中有一个目录,我经常进入。但它的路径上有空格,所以我必须加倍引用它。
Thomas Eding
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.