Налаштуйте стрілку вгору, щоб переглядати команди з тими самими початковими символами, а не всі попередні команди


15

У bashкомандному рядку дає мені попередню команду. У командних рядках у numpyабо matlab, коли я набираю кілька символів, подається мені раніше введена команда, починаючи з цих символів . Як я можу включити саме таку поведінку bash?

Мені відомо про більш досконалі способи пошуку через історію командного рядка, але іноді простий спосіб є більш зручним.

Відповіді:


18

Команди для читання, які ви шукаєте, це history-search-*команди:

search-search-forward
Пошук вперед через історію для рядка символів між початком поточного рядка та поточним положенням курсору (точки). Це непроцентний пошук.
історія-пошук-назад
Шукайте назад за історією для рядка символів між початком поточного рядка та крапкою. Це непроцентний пошук.

Пов’язування цих у ваших .inputrc, як так:

"\e[A": history-search-backward            # arrow up
"\e[B": history-search-forward             # arrow down

дозволить вам ввести перші символи команди, а потім використовувати клавіші Upі Downдля переміщення лише тих команд у вашій команді, .bash_historyякі починаються з цього рядка.

Наприклад, введення viта the Upпереведе вас до першої попередньої команди, що починається з vi, як vim somefile. Введення Upперенесе вас до наступного попереднього екземпляра тощо.

Більш детально про всі прив'язки читати ви можете прочитати тут: http://linux.about.com/library/cmd/blcmdl3_readline.htm


10

Додайте до свого .inputrc в ~ /, щоб зробити те, що ви запропонували:

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

Можливо, ви також можете додати таке .bash_profile:

export INPUTRC=~/.inputrc

Чи можете ви детальніше розповісти, навіщо робити цей "експорт"?
текстовий

2

Додайте "!" до команди, яку ви шукаєте. Якщо ви хочете замінити функціональність стрілок вгору та вниз, зміна файлу inputrc (як і інші відповіді пропонують) - це шлях.

Якщо "команда" - це команда, яку ви шукаєте, введіть це:

!comm

Ви повинні отримати "команду" як вихід.

Так само, якщо ви хочете знайти команду, яка включає (але може не починатися з) частини команди, натисніть ctrl + r, а потім введіть частину команди.

Ви також можете ввести "вкладку" для автоматичного завершення введеного тексту (сюди також входять файли). Це корисно, якщо ви шукаєте команду, яка не є вашою історією (або у вас немає файла історії)

Докладніше про "оволодіння" файлом історії ви можете прочитати тут: http://www.thegeekstuff.com/2008/08/15-examples-to-master-linux-command-line-history/

Це можливий дублікат /programming/1030182/how-do-i-change-bash-history-completion-to-complete-whats-already-on-the-line


Інші відповіді коректно відповідають на моє запитання, але дякую за вказівник на SO (див. Також meta.stackexchange.com/q/4708/172266 ).
Герріт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.