linux - 使用命令输入的 Bash 别名

标签 linux bash

我想创建一个 bash 别名来执行以下操作:

假设我在以下路径:

/dir1/dir2/dir3/...../dirN

我想不使用 cd .. 直接进入 dir3。我将只编写 cdd dir3,它应该直接转到 /dir1/dir2/dir3cdd 是我的别名。

我写了以下别名,但它不起作用:

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/

相关文章:

python - mujoco linux 包安装报错: exit status 1

linux - 交换器 :/swapfile: swapon failed: Function not implemented When enabling swap

bash - sh -c : Unterminated quoted string error in groovy call

linux - 变量没有被回显

MySQL命令行导入导致sql文件变空

c - Linux C,waitpid() 被具有返回值 -1 和 errno 5 的已处理信号解除阻塞

c++ - 如何使用 CMake 部署 ICU 库?

ios - 确认命令未找到错误

linux - 将变量与数字进行比较

python - 如何在 python 中运行 bash 脚本并使用该脚本中定义的变量