ярлыки каталога удара

Я нахожу, что нажатия клавиш удара понимания приводят к более эффективному окружению, и что многие из них являются прямыми от emacs, разъясняет их использование (т.е. что meta-XXX версия старшего брата ctrl-XXX управляйте обычно).

"meta" ключ обычно является ключом "высокого звука", но может также быть "esc" ключом. например. meta-f может быть получен с также alt-f или esc f.

Чтобы отображения клавиши Alt работали, Вам, вероятно, придется сбросить "ключи доступа к меню" или его эквивалент в консольных опциях. В основном, если Вы нажимаете alt-f и получаете подсказку меню файла, выключаете меню доступа клавиши Alt.

ctrl-a / ctrl-e : move to start / end of line основы Вы не можете обойтись без

ctrl-f, meta-f : forward char/word нажимающий alt-f переходит, Вы передаете "1 слово", которое на командной строке является в значительной степени командой или аргументом

ctrl-b, meta-b : backwards char/word то же как alt-f, но назад переходить назад через командную строку

ctrl-d, meta-d : delete char/word нажимающий alt-d удалит (к концу) текущее слово под курсором. намного быстрее затем содержание удаляет вниз для 30 secs. Полезный, когда Вы - вкладка, завершающаяся посреди чего-то, и хотите передать, удаляют в конец слова.

ctrl-k : kill line удаляет в конец строки

ctrl-u : undo например, вводя пароль, и Вы знаете, что имеете его неправильно где-нибудь, вместо того, чтобы поразить клавишу Backspace 20 раз, просто поражаете ctrl-u. также очищает текущую командную строку.

meta-# : insert comment здорово для хранения Вашей командной строки Вы растете как комментарий прежде, чем выполнить его, если необходимо сделать что-то еще сначала. это войдет в Вашу историю команд, но не работать.

ctrl-r : reverse search поиск назад через историю оболочки (повторенный ctrl-r для следующего соответствия)

ctrl-g : abort если Вы находитесь в середине ctrl-r и хочу просто возвратиться туда, где Вы вводили, просто прерываете свой поиск с ctrl-g

meta-space / ctrl-x ctrl-x : set mark and jump to mark если необходимо быстро перейти к позиции в командной строке, сначала установите метку, то перейдите назад к ней с ctrl-x ctrl-x. Обратите внимание, что Вам, вероятно, придется использовать esc-space установить метку как alt-space часто связывается с переводом в нерабочее состояние консольного меню.

ctrl-] <char> : quick jump to <char> переходы передают символу, введенному после ctrl-] на командной строке. Старший брат Meta-ctrl-] <char> переходы назад.

29
01.09.2010, 19:10
7 ответов

Путем я раньше делал, это должно создать каталог, который содержит символьные ссылки на каталоги, Вы хотите ярлыки, делают и добавляют что каталог к Вашему CDPATH. CDPATH управляет где cd будет искать, когда Вы переключаете каталоги, поэтому если тот каталог символьных ссылок находится в Вашем CDPATH, Вы можете cd к любому из symlinked каталогов немедленно:

mkdir ~/symlinks
ln -s /usr/bin ~/symlinks/b
export CDPATH=~/symlinks
cd b   # Switches to /usr/bin

Оборотная сторона, конечно - это, не будет работать, если будет каталог в Вашем текущем каталоге, названном "b" - который имеет приоритет по CDPATH


Мне обычно не нравятся ответы, в которых говорится "сначала, что необходимо переключить оболочки", но эта точная функция существует в ZSH, если Вы готовы использовать это вместо этого; это назвало названные каталоги. Вы экспортируете переменную foo, и когда Вы обращаетесь к ~foo это решает к значению $foo. Это особенно удобно, потому что это работает в командах, кроме того, cd:

echo hi > /tmp/test
export t=/tmp
cat ~t/test   # Outputs "hi"
40
27.01.2020, 19:38
  • 1
    В том, какие пути делают эту функцию ZSH, отличается от выполнения: отзовитесь эхом привет>/tmp/test; экспортируйте t =/tmp; $t/test кошки, По крайней мере, на моей машине, это работает просто великолепно. Единственной разницей является символ, который необходимо ввести. –  Steven D 01.09.2010, 19:37
  • 2
    , отсылающий op к zsh, является правильным поступком. я не пропустил ту функцию однажды за 15 лет. походит на вид вещи, некоторые люди действительно одержимы о том, в то время как другие не заботятся. вот почему существует больше чем одна оболочка. –   01.09.2010, 20:06
  • 3
    @Steven Это довольно подобно, но ZSH знает, что это - именованный каталог в этом случае, таким образом, это может рассматривать его особенно в быстрых расширениях и окружить встроенный –  Michael Mrozek♦ 01.09.2010, 21:34
  • 4
    [я главным образом сделал бы это использование emacs M-x оболочка (так как именно тогда я использую терминал), я предполагаю, что это исключает решения ZSH]... –  Seamus 02.09.2010, 03:13
  • 5
    Добавленный это к моему .zshrc и это работало. –  Seamus 03.09.2010, 21:14

Вы могли записать функцию обертки для cd и назовите это "CD" (в конечном счете, функция будет звонить builtin cd - использование builtin ключевое слово). Вы могли использовать символ префикса, что Bash не подробно остановится на командной строке, прежде чем Ваша функция будет видеть его, и это вряд ли появится как начальный символ в Ваших именах каталогов, возможно ":". Вы хотели бы сделать это более устойчивым, но здесь являетесь простой схемой:

# format: [semicolon] shortcut colon destination [semicolon] ...
export CDDATA='foo:/path/to/foo;bar:/path/to/bar;baz:/path/to/baz'

cd () {
    local dest=$1
    if [[ $dest == :* ]]
    then
        [[ $CDDATA =~ (^|;)${dest:1}:([^;]*)(;|$) ]]
        dest=${BASH_REMATCH[2]}
    fi
    if [[ -z $dest ]]
    then
        cd
    else
        builtin cd "$dest"
    fi
}

cd :bar    # pwd is now /path/to/bar
10
27.01.2020, 19:38

с ударом:

~foo резервируется для корневого каталога пользовательского нечто. Я не рекомендовал бы создать пользователей только для того удобства.

Можно сделать жизнь легче (или тяжелее) при изменении каталогов путем установки CDPATH переменная среды (ищут его в bash(1)).

Кроме этого, единственный способ думать состоял бы в том, чтобы установить переменные среды для тех каталогов, которые Вы хотите сократить.

$ FOODIR=/var/lib/misc
$ cp ~/bar.txt $FOODIR
7
27.01.2020, 19:38

Путь создал бы псевдоним для CD, который заменяет ~c к требуемому пути. Или просто используйте zsh ;)

0
27.01.2020, 19:38
  • 1
    Да, я думал о выполнении этого, как псевдоним ~c = "CD/daten/cvs/plugin_root", но который только помогает с CD, в то время как именованные каталоги могут использоваться с каждой командой. –  fschmitt 22.09.2010, 14:01

Для изменения каталогов Вы могли использовать wcd: Везде, где Каталог Изменения

С этим это будет похоже wcd plugin_root.

0
27.01.2020, 19:38
  • 1
    , я хотел что-то, что работает с командами кроме cd также... –  Seamus 23.09.2010, 19:37

Я имею ниже функции, которая создаст псевдоним на лету,

s () {
    if [[ "x$1" != "x" ]]
    then
        alias $1="cd $PWD;pwd"
        echo "alias $1=\"cd $PWD;pwd\""
    else
        echo "Usage: s[s] <directory bookmark name>"
        return 1
    fi
}

Когда я хочу отметить каталог, я просто ввожу s dirName. Это создает псевдоним как alias dirName="cd /my/current/directory/;pwd". таким образом, я могу возвратиться к этому каталогу, просто введя dirName. У меня есть версия, которая сохраняет его в bash_aliases также. Это работает в любой оболочке.

0
27.01.2020, 19:38

Бэш-переменные могут быть использованы для создания системы закладок. Переменные будут работать с любой командой, а закладка bash будет завершать имя переменной. В более новых версиях bash, если к имени переменной добавляется a /, то путь, который содержит переменная, также может быть заполнен с помощью закладок.

mydir=/home/chris/dir
ls $my         # Tab completion works on variable name.
ls $mydir/     # Tab completion is equivalent to that with ls /home/chris/dir/
               # (doesn't work in older versions of bash).

Для персистентности объявления переменных могут храниться в файле, источником которого является .bashrc. Так как этот файл является bash-скриптом, он может содержать декларации, которые ссылаются на другие переменные, такие как aur="${HOME}/AUR", или которые запускаются только на определенных хостах , если [[ $HOSTNAME == foo ]]; тогда bar=baz; fi, что полезно, если вы повторно используете конфигурационные файлы на нескольких хостах и у нескольких пользователей.

Следующая функция bash (для добавления в .bashrc, или исходников) позволяет добавлять и удалять закладки из файла закладок. Она достаточно новая и не гарантирует отсутствие ошибок.

bookmark_file=~/.bookmarks
source "$bookmark_file"

bm() {
usage='Usage:
bm add <name> <path>           Create a bookmark for path.
bm add <name>                  Create a bookmark for the current directory.
bm update                      Source the bookmark file.
bm remove <name>               Remove a bookmark'              

case $1 in
    add)
        local path
        if [[ $# -eq 2 ]]; then
            path=.
        elif [[ $# -eq 3 ]]; then
            if [[ -e $3 ]]; then
                path="$3"
            else
                echo "bm: ${3}: No such file or directory."
                return 1
            fi               
        else
            echo "$usage"
            return 1
        fi

        if declare | grep "^${2}=" > /dev/null; then
            echo "bm: The name $2 is in use."
            return 1
        fi
        path=$(readlink -f "$path")
        echo ${2}=\""$path"\" >> "$bookmark_file"
        eval ${2}=\""$path"\"
        return 0
        ;;
    update)
        if [[ $# -eq 1 ]]; then
            source "$bookmark_file"
            return 0
        fi
        ;;
    remove)
        if [[ $# -eq 2 ]]; then
            unset $2
            local contents=$(grep -v "^${2}=" "$bookmark_file")
            echo "$contents" > "${bookmark_file}.tmp"
            rm -f "$bookmark_file"
            mv "${bookmark_file}.tmp" "$bookmark_file"
            return 0
        fi
        ;;
esac

echo "$usage"
return 1
}
2
27.01.2020, 19:38

Теги

Похожие вопросы