我有.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
更改到特定目录。