Історія команд Unix - швидке знаходження команди


0

Чи є спосіб (або окрема оболонка) переміщатися по історії таким чином: припустимо, що два тижні тому я написав таку команду:

scp ../../../file.txt ../../../...

Я не хочу використовувати стрілки для пошуку команди, оскільки це займе багато часу. Замість цього я б хотів набрати scp звузити можливості, а потім переглянути історію.


2
Зауважимо, що це функція вашої оболонки (bash, tcsh, zsh, fish ...), а не "unix" в загальному сенсі. Якщо ви не маєте поняття, що я говорю, відповідь bash відповідь нижче, ймовірно, працюватиме на вас. Або спробуйте printenv SHELL.
dmckee

Відповіді:


4

Для Ctrl-r (зворотний пошук) при кожному натисканні Ctrl-r Ви повертаєтеся до наступного раннього матчу в історії, тому це, ймовірно, найкращий варіант.

Однак є й інші варіанти, як і ! оператора. Якщо остання команда була унікальною ( scp з того часу не виконувався знову) можна використовувати !scp який виконає останню команду, що почалася з scp у вашій історії. Також, якщо ви робите history | grep scp підхід можна використовувати ! щоб виконати номер команди. Наприклад:

$ history | egrep scp
 268  scp foo@bar:/home/foo/file .
$ !268

Це !268 виконає команду 268 саме так, як вона з'являється в history вихід без попереднього числа.


Також, !scp дасть вам найсвіжішу історію, що починається з "scp"
glenn jackman

3

я використовую

history | grep scp 

а потім скопіювати, вставити і редагувати (якщо потрібно) або просто ! <command number>


Дякую. Це дійсно просто, я повинен був подумати про це ... Я буду використовувати Ctrl + r варіант, це швидше.

3

Спробуйте Ctrl+r для пошуку історії. Ви повинні отримати відповідь на такий запит:

(reverse-i-search)`':


2

У мене є

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

у $ HOME / .inputrc, і я вважаю, що це пов'язує поведінку, яку ви хочете, з клавішами зі стрілками вгору та стрілками. Щоб детально зупинитися, "man readline" повідомляє нам, що в історії пошуку - {вперед, назад} буде враховано поточний рядок, введений в командному рядку:

   history-search-forward
          Search  forward  through  the history for the string of characters between the start of the current line
          and the current cursor position (the point).  This is a non-incremental search.
   history-search-backward
          Search backward through the history for the string of characters between the start of the  current  line
          and the point.  This is a non-incremental search.

Я купив його для клавіш Pg-Up і Page-Down.
ott--

0

Використовуйте vi навігація:

set -o vi
[Esc]/scp[Enter]

Хіт n , щоб перейти до наступного матчу, або N до попереднього матчу. i , щоб вставити текст, A додати

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.