如何创建像 HOME 这样的目录符号 ~?

如何创建像 HOME 这样的目录符号 ~?

我有一个目录路径,我想为其创建一个快捷方式,例如~用户主目录。

我已经尝试了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 函数,cdppdpcdp我使用 来更改目录,因此我执行类似 的操作cdp foo,它将转换为cd ~/projects/foopdp工作原理类似,但使用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 中使用“命名目录”即可实现。

最后,你可以找到一些有趣的提示这里

相关内容