Как получить доступ к истории на лету в Unix?

Например, если я

mkdir thisismyfolder912 

Я помню, что есть несколько более простой способ переключиться на thisismyfolder912 чем делать

 cd thisismyfolder912 

Каким образом и как это работает? Кроме того, каковы другие способы использования этого?

  • Печать строки с заданным смещением в файле
  • Безопасно ли отключать доступ к оболочке всем пользователям, указанным в / etc / passwd?
  • Как я могу наблюдать за графическим интерфейсом рабочего стола с оболочкой?
  • Каково значение «1» в ls (1)?
  • Чтение нескольких строк из текстовых файлов в bash
  • Linux: команда set для локальных переменных
  • В Ctrl + C убейте текущую команду, но продолжайте выполнение скрипта
  • Временная метка не работает с thinkfan
  • 8 Solutions collect form web for “Как получить доступ к истории на лету в Unix?”

    Вы говорите об классическом расширении истории или обработке Readline? cd !$ на следующей строке ввода будет заменяться последним аргументом предыдущей строки или M-. или M-_ выдержит его с помощью Readline.

    Если у вас вопрос о доступе к истории команд, попробуйте эту команду с именем

     history 

    Вы также можете попробовать Ctrl + r и начать вводить команду, которую вы пытаетесь запомнить, которую вы недавно набрали.

     (reverse-i-search)`cd ': cd mydir/data/ 

    Нажмите ESC, чтобы выбрать команду или выйти. Это работает для меня на SuSE по крайней мере; не уверен в других дистрибутивах.

    Это так же просто, как Alt + .

     $ mkdir lasdfjalsdkjf $ cd 

    Alt + .

     $ cd lasdfjalsdkjf 

    это всегда сработало для меня:

     mkdir thisismyfolder cd $_ 

    Подбирая подсказку из другого потока, если вы положили:

     bind '"\e[A"':history-search-backward bind '"\e[B"':history-search-forward 

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

    Я думаю, это не очень помогает с конкретным примером, данным в вопросе, но это одна вещь, которая помогает мне получить доступ к истории на лету.

    Если вы используете bash, я предлагаю pushd и popd . Вы можете создать стек каталога и быстро просмотреть его. См. Этот пример:

     PWD:~$ pushd /opt/google/chrome/resources/ /opt/google/chrome/resources ~ PWD:/opt/google/chrome/resources$ pushd /etc/cron.daily/ /etc/cron.daily /opt/google/chrome/resources ~ PWD:/etc/cron.daily$ pushd /opt/pac/lib/method/ /opt/pac/lib/method /etc/cron.daily /opt/google/chrome/resources ~ PWD:/opt/pac/lib/method$ popd /etc/cron.daily /opt/google/chrome/resources ~ PWD:/etc/cron.daily$ popd /opt/google/chrome/resources ~ PWD:/opt/google/chrome/resources$ popd ~ PWD:~$ 

    В соответствующей заметке я рекомендую использовать histverify в bash. Поместите это в свой ~ / .bashrc:

     shopt -s histverify 

    Это заставит bash распечатать команду после расширения! $ Или других функций истории и дать вам возможность взглянуть на нее, прежде чем снова войти в нее, чтобы запустить ее. Для меня проверка работоспособности стоит случайного дополнительного нажатия клавиши. Хотите убедиться, что я запускаю команду cd foo , а не rm -rf foo

    Я часто использую подход Ctrl-R , а также Alt-. (что хорошо подходит для описываемого вами сценария). Я буду использовать! $ Иногда.

    Это очень полезные методы общего назначения.

    Но для решения вашего конкретного вопроса:

    Создание каталога и cd'ing непосредственно в нем – такая общая комбинация, что полезно иметь функцию для ее завершения.

     function mcd { local newdir='_mcd_command_failed_' if [ -d "$1" ]; then # Dir exists, mention that echo "$1 exists..." newdir="$1" else if [ -n "$2" ]; then # We've specified a mode command mkdir -p -m $2 "$1" && newdir = "$1" else # Plain old mkdir command mkdir -p "$1" && newdir="$1" fi fi builtin cd "$newdir" # No matter what, cd into it } 

    Использование: mcd thisismyfolder

    Если ваша оболочка использует readline (это относится к bash ), вы можете сделать что-то вроде нажатия ATL + . вместе?

    Из документации GNU Readline :

    yank-last-arg (M- или M-_)

    Вставьте последний аргумент в предыдущую команду (последнее слово предыдущей записи истории). С аргументом ведут себя точно так же, как yank-nth-arg. Последовательные вызовы yank-last-arg перемещаются по списку истории, вставляя последний аргумент каждой строки по очереди.

    Linux и Unix - лучшая ОС в мире.