Лучший способ перерыть историю оболочки

В /dev/disk/by-uuid существуют символьные ссылки, отображающие UUID каждого диска на его запись в /dev (например. /dev/sda1)

81
22.09.2019, 23:04
15 ответов

Ctrl+R обычно является лучшим способом как сказанный дескриптор. Можно также использовать !string, который выполняет новую команду, запускающуюся с string, или !?string?, который выполняет новую команду, которая содержит string.

(Я думаю, что это - единственный материал, относящийся к этому вопросу, но я покрыл намного больше команд истории в этом ответе),

76
27.01.2020, 19:30
  • 1
    , как Вы заставляете 'ctrl+r' быть похожим на это? –  xenoterracide 17.08.2010, 00:23
  • 2
  • 3
    я не понял механизм SE, принял любой HTML спасибо. –  xenoterracide 17.08.2010, 01:37
  • 4
    , который я не сделал, знал, что kbd ключевое слово интерпретирует правильно "ctrl" и "+"! Я раньше отмечал каждый ключ отдельно.спасибо! –  Olivier Dulac 15.07.2015, 03:33
  • 5
    @OlivierDulac Печально, который это не делает, это, как я раньше форматировал ключи; кто-то отредактировал мой ответ позже, чтобы заставить их разделить ключи –  Michael Mrozek♦ 15.07.2015, 08:16

Не уверенный, если это поможет, но мне нравится использовать ctrl-r и затем начинать вводить команду. Это должно перейти Вашу историю и подарить Вам первое соответствие. Переключить через соответствия просто ctrl-r хита снова.

18
27.01.2020, 19:30
  • 1
    Извините, забыл о zsh. Вам, возможно, придется добавить эту привязку клавиш к Вашему ~/.zshrc: bindkey '^R' history-incremental-search-backward –  decriptor 16.08.2010, 22:49

При использовании Bash введите Управление-R и затем начните вводить. Ввод Управления-R неоднократно после ввода некоторого текста будет класть обратно Вас в соответствии командным строкам.

32
27.01.2020, 19:30

Если Вы добавляете следующее к ~/.inputrc

"\e[5~": history-search-backward
"\e[6~": history-search-forward

и Bash перезапуска, можно начать вводить и затем использовать Page Up и Page Down, чтобы переместиться назад и передать через историю строк, запускающихся с того же префикса, который Вы просто ввели.

(Некоторые могут предпочесть использовать \e[A и \e[B, который заменит нормальное Вверх и вниз по действиям вместо того, чтобы связать новые ключи.)

17
27.01.2020, 19:30

Интерактивная подсказка, вызванная Ctrl-R, который был уже упомянут, является наиболее удобным способом. Дополнительно это популярно для переотображения ключей Стрелки вверх и вниз для поиска истории префикс в настоящее время на командной строке, однако это требует некоторых изменений в ~/.inputrc файл.

Классическое и менее интерактивное решение состоит в том, чтобы использовать расширение истории оболочки. Ввод

!foo

выполнит последнюю команду, которая запускается с foo и

!?foo

выполнит последнюю команду, которая содержит foo. Больше информации о расширении истории может быть найдено в справочнике Bash, предположив, что Ваша оболочка является Bash или совместимый.

9
27.01.2020, 19:30

Если Вы добавляете stty -ixon к Вашему ~/.bashrc файл затем Ctrl-s войдет в противоположное направление к Ctrl-r.

6
27.01.2020, 19:30
  • 1
    я хотел использовать C-s с этой целью, но мой терминал был заморожен;остерегайтесь! (Ну, я еще не нанял никого stty ixon, не уверенный, для чего это.) –  imz -- Ivan Zakharyaschev 27.04.2011, 15:26
  • 2
    @imz: C-q "разморозится". Это и C-s обычные символы программного управления потоком, которые были однажды полезны для ручного прерывания (пауза) потока вывода, когда медленные последовательные соединения использовались. Теперь вывод так быстр в большинстве случаев что, что Вы хотите видеть, когда Вы нажимаете C-s уже прокрутил. stty -ixon выключает программное управление потоком. –  Paused until further notice. 28.04.2011, 14:19
  • 3
    Фантастический! Я искал в течение многих лет способ прокрутить вперед в истории как это. –  marlar 31.12.2016, 11:11

Если Вы вводите !ls затем удар просмотрит Вашу историю и выполнит новую команду, которая начинается с "ls"

3
27.01.2020, 19:30

Я использую следующие два большую часть времени.
Но обратите внимание, что они оба ищут стартовые символы.

  1. tcsh: введите несколько символов команды затем Esc+p, это покажет, что предыдущая команда, запускающаяся с того сочетания клавиш, нажимает его снова, это покажет другую команду.
  2. ksh: использовать fc -e - <SPACE> <first few char for your previous > это придет последним команда, соответствующая той последовательности.

Я не смог найти что-то как Ctrl+R в Bash для моего ksh и tcsh.

1
27.01.2020, 19:30
  • 1
    Ctrl+r работает немного по-другому в ksh, чем Bash. Нажмите Ctrl+r затем вводят строку, которую Вы ищете и нажимаете Enter. Для поиска того же самого нажмите Ctrl+r и войдите, не имея необходимость перепечатывать строку. Это находится в set -o emacs режим, между прочим. –  Paused until further notice. 17.08.2010, 22:32
  • 2
    @Dennis: +1 :-) –  Hemant 18.08.2010, 08:18

мог бы быть zsh конкретный. В исследовании этого ответа я нашел vi-history-search-backward который позволяет искать с / в vi режиме (который я не упоминал, что был в), можно затем использовать n и N для поиска вперед и назад соответственно (после нажатия Enter).

2
27.01.2020, 19:30

Существует способ использовать Ctrl-R с tcsh. Включите следующее Ваш ~/.cshrc:

bindkey "^r" i-search-back (это - просто знак каре и буква R),

Это экономит время для меня.

1
27.01.2020, 19:30

Да это существует, по крайней мере, при использовании zsh. Только начните вводить команду и затем нажмите M-p (ESC p), и это найдет предыдущие команды, который соответствует тому, что Вы ввели. Нажмите его снова для нахождения следующего соответствия.

0
27.01.2020, 19:30
  • 1
    Этот ответ может сделать с большим количеством объяснений. –  phunehehe 06.02.2012, 17:43

Я удивлен, что это не было упомянуто - но можно выбрать vi-режим в ударе или ksh путем выполнения этого:

set -o vi

... или использование этого как содержание ~/.inputrc (для GNU readline используемый в программах, таких как удар):

set editing-mode vi

Затем после этого можно использовать Esc, чтобы ввести командный режим и использовать k для возвращения в истории и j для продвижения. Можно ли также искать использование / для поиска обычно, и? искать наоборот.

Если Вы используете ~/.inputrc, затем это будет работать не только в ударе GNU, но и в чем-либо, что использует GNU readline, такой как CLISP и возможно программы как командный процессор MySQL и как оболочка CPAN.

2
27.01.2020, 19:30

аналогичный ответ на @ephemient, но вы можете поместить в свой. bashrc

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

и введите часть фразы, а затем используйте стрелки вверх / вниз, чтобы просмотреть самые последние совпадающие параметры. Это поведение Matlab по умолчанию.

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

1
27.01.2020, 19:30

Para avanzar cuando se usa la búsqueda inversa (con Ctrl -Comando R):

  1. Abra su archivo.bashrc:
    sudo gedit ~/.bashrc

  2. agregue esta línea (la letra "f" puede ser reemplazada por otra aún no utilizada por el sistema)

    bind '"\C-f": forward-search-history' 
    
  3. Cierra tu archivo y actualiza tu.bashrc (o abre otra terminal )con el comando:
    source ~/.bashrco. ~/.bashrc

AHORA PUEDES AVANZAR EN LA HISTORIA CON EL ACCESO DIRECTO :Ctrl+f

Trabajando en Ubuntu 18.04 LTS

3
20.08.2021, 13:40

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

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
# say yes to its install prompts
~/.fzf/install

Перезапустите оболочку, вы должны получить гораздо лучший опыт поиска команд в истории (ярлык по-прежнемуCtrl-R). Для навигации по результатам поиска используйте Ctrl-Nи Ctrl-P.

1
20.08.2021, 13:40

Теги

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