我想创建一个 bash 别名来执行以下操作:
假设我在以下路径:
/dir1/dir2/dir3/...../dirN
我想不使用 cd ..
直接进入 dir3。我将只编写 cdd dir3
,它应该直接转到 /dir1/dir2/dir3
。 cdd
是我的别名。
我写了以下别名,但它不起作用:
alias cdd='export newDir=$1; export myPath=`pwd | sed "s/\/$newDir\/.*/\/$newDir/"`; cd $myPath'
简单地说,它应该获取当前的完整路径,然后删除新目标目录之后的所有内容,然后 cd 到这个新路径
我的命令的问题是 $1
没有得到我对命令 cdd
最佳答案
这是一个稍微简单的函数,我认为它可以实现您想要做的事情:
cdd() { cd ${PWD/$1*}$1; }
解释:
${PWD/$1*}$1
获取当前工作目录并在传递给它的字符串(目标目录)之后剥离所有内容,然后将该字符串添加回去。然后将其用作 cd
的参数。我没有费心添加任何错误处理,因为 cd
会自行处理。
例子:
[atticus:pgl]:~/tmp/a/b/c/d/e/f $ cdd b
[atticus:pgl]:~/tmp/a/b $
它有点丑,但它有效。
关于linux - 使用命令输入的 Bash 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21196359/