我有一个目录路径,我想为其创建一个快捷方式,例如~
用户主目录。
我已经尝试了ENV
变量,我可以匹配$<something>
路径,但我不想要那个$
字母。
我猜可能是有一些.bashrc
恶作剧吧?!
答案1
我有一个方便使用的小功能:
# A function to help with creating directory aliases and providing
# completion for them.
# Taken from here:
# http://blog.caioromao.com/2010/10/10/Custom-directory-completion.html
# Tweaked to work with more than just 'cd'
_make_dir_complete() {
local aliasname=$1
local prgname="__s_${aliasname}__"
cd "$3" >/dev/null 2>&1
local dirname=$(pwd -L)
local realpath=$(pwd -P)
cd - >/dev/null 2>&1
FUNC="function $prgname() {
local cur len wrkdir;
local IFS=\$'\\n'
wrkdir=\"$realpath\"
cur=\${COMP_WORDS[COMP_CWORD]};
len=\$((\${#wrkdir} + 2));
COMPREPLY=( \$(compgen -S/ -d \$wrkdir/\$cur| cut -b \$len-) );
}"
ALIAS="$aliasname () { $2 \"$dirname/\$*\"; }"
eval $FUNC
eval $ALIAS
complete -o nospace -F $prgname $aliasname
}
然后我有一些像这样的代码来设置我的快捷方式:
test -e ~/projects &&
_make_dir_complete cdp cd ~/projects &&
_make_dir_complete pdp pushd ~/projects
这将设置两个 bash 函数,cdp
和pdp
。 cdp
我使用 来更改目录,因此我执行类似 的操作cdp foo
,它将转换为cd ~/projects/foo
。 pdp
工作原理类似,但使用pushd
代替。好处是它也可以完成,因此我可以输入cdp f
,然后按TAB
,它将用 完成cdp foo
。
答案2
我在我的 中已经进行了如下设置.bashrc
:
alias re='cd /home/terdon/research/'
因此,如果我re
在 BASH 提示符下键入,我就会直接cd
进入我的research
目录。
如果您只想切换到相关目录,这种方法就很好。另一种方法是设置一个与目录路径相呼应的别名:
alias foo='echo /path/to/bar'
然后您可以执行以下操作:
$ ls `foo`
不过,你需要引号。据我所知,$
在 BASH 中没有办法设置一个简单的字符,没有引号,或者做你想做的事情。它是在 zsh 中使用“命名目录”即可实现。
最后,你可以找到一些有趣的提示这里。