Làm cách nào để tạo biểu tượng thư mục như ~ cho HOME?


4

Tôi đã có một đường dẫn thư mục mà tôi muốn tạo một lối tắt, như ~ cho một thư mục nhà người dùng.

Tôi đã thử ENV các biến và tôi có thể khớp $<something> cho một con đường, nhưng tôi không muốn điều đó $ lá thư.

Tôi đoán có lẽ với một số loại .bashrc kẻ lừa đảo?!

Câu trả lời:


1

Tôi có một chức năng nhỏ tiện dụng mà tôi sử dụng:

# 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
}

Và sau đó tôi có một số mã như thế này để thiết lập các phím tắt của mình:

test -e ~/projects &&
    _make_dir_complete cdp cd ~/projects &&
    _make_dir_complete pdp pushd ~/projects

Điều này sẽ thiết lập hai hàm bash, cdppdp. cdp Tôi sử dụng để thay đổi thư mục, vì vậy tôi làm một cái gì đó như cdp foo, sẽ dịch thành cd ~/projects/foo. pdp hoạt động tương tự, nhưng sử dụng pushd thay thế. Phần hay là nó cũng hoàn thành, vì vậy tôi có thể gõ cdp f, sau đó nhấn TABvà nó sẽ hoàn thành với cdp foo.


0

Tôi đã thiết lập điều này trong .bashrc:

alias re='cd /home/terdon/research/'

Vì vậy, nếu tôi gõ re tại dấu nhắc BASH, tôi trực tiếp cd trong tôi research danh mục.

Điều này hoạt động tốt nếu bạn chỉ muốn thay đổi vào thư mục trong câu hỏi. Một cách khác là đặt một bí danh lặp lại đường dẫn thư mục:

alias foo='echo /path/to/bar'

Sau đó, bạn có thể làm, ví dụ:

$ ls `foo`

Bạn sẽ cần các dấu phẩy đảo ngược mặc dù. Theo tôi biết, không có cách nào để thiết lập một nhân vật đơn giản, không có trích dẫn hay $ để làm những gì bạn muốn trong BASH. Nó có thể trong zsh với "thư mục được đặt tên".

Cuối cùng, bạn có thể tìm thấy một số lời khuyên thú vị đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.