如何创建一个“base”供其他别名引用并启用 cd base/x 命令目录?

如何创建一个“base”供其他别名引用并启用 cd base/x 命令目录?

我有.bash_aliases

alias c1='cd /home/me/code/php'
alias c2='cd /home/me/code/jquery'
alias c3='cd /home/me/code/ruby'
alias c4='cd /home/me/code/c'

我怎么能够干燥这样就可以放松与整个目录结构的耦合?

我努力了:

alias code_base='/home/me/code/'
alias c1='cd code_base/php'
alias c2='cd code_base/jquery'
alias c3='cd code_base/ruby'
alias c4='cd code_base/c'

c1但当我尝试使用through时,出现错误“是一个目录” c4

我也尝试过:

alias c1='cd `code_base`/php'

但这没有用;它给了我:

bash: cd: /php: 没有这样的文件或目录

我尝试alias c1='cd '+工作+'/php',但是也出现了目录错误。

答案1

而是使用变量来定义基目录。

CODE_BASE="/home/me/code/"
alias c1="cd $CODE_BASE/php"
alias c2="cd $CODE_BASE/jquery"
alias c3="cd $CODE_BASE/ruby"
alias c4="cd $CODE_BASE/c"

答案2

除了 mgorven 的答案之外,您还可以使用该CDPATH变量。从男人狂欢:

   CDPATH The  search  path for the cd command.  This is a colon-separated
          list of directories in which the  shell  looks  for  destination
          directories  specified  by  the  cd  command.  A sample value is
          ".:~:/usr".

如果您将其设置为,CDPATH=.:$HOME/code/则只需运行即可cd php将目录更改为$HOME/code/php(如果目录存在)。

另一个解决方案是如果您使用的是散列目录zsh,例如:

hash -d code_base=/home/me/code/

之后您可以使用cd ~code_base/directory更改到特定目录。

相关内容