Вибірна історія команд у терміналі?


9

У межах терміналу, коли ви натискаєте на клавіатурі, ви бачите попередні команди, які ви йому раніше дали для порядку. Мені було цікаво, чи існував спосіб побачити лише команди в минулому, починаючи з, наприклад, "ls -l". Таким чином, якщо список команд:

  1. лс -л -а
  2. cmake
  3. cd ~ / Настільний
  4. cmake

Спосіб просто записати "ls" та вкладку або будь-яку комбінацію натискань клавіш, необхідних для спливаючої минулої команди, що передається в термінал, починаючи з "ls"

Дякую,

Відповіді:


14

Він не показуватиме лише речі, починаючи з цього ls, але ви можете зробити Ctrl-R lsпошук назад за допомогою історії. Повторіть, Ctrl-Rщоб знайти наступний матч.


Дякую за команду CTRL+Rшвидкого доступу.
Клебер С.

8

Іноді це корисно мати ...

Приклад

Підключення до іншої машини за допомогою ssh:

почніть вводити текст

ssh

Використовуйте PgUpклавішу, і ваш ssh закінчується останнім використаним ... натисніть PgUpще раз, і він надасть вам наступний тощо. Люблю це?

Ви можете скористатися цим:

Відредагуйте .bashrc ( vi /home/<yourfolder>/.bashrc) та додайте це:

$if Bash
    # Search history back and forward using page-up and page-down
    "\e[5~": history-search-backward
    "\e[6~": history-search-forward

    # Completion
    set match-hidden-files off
    set page-completions off
    set completion-query-items 350
    set show-all-if-ambiguous on

$endif

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


Ви можете навіть прив'язати його до клавіш зі стрілками вгору / вниз:, bind '"\e[A": history-search-backward'; bind '"\e[B": history-search-forward'зробивши це ще більш інтуїтивно зрозумілим.
Фріц

5

Щоб переглянути історію команд, використовуйте:

$ history

Якщо ви хочете бачити, як минула команда починається, наприклад, з "ls", на мою думку, я використовую:

$ history | grep ls

Звичайно, вихід буде містити щось не команда, але містить символи "ls", але я думаю, це може допомогти.


2

Найпростіший спосіб досягти того, що ви хочете, - це !<whatever-command>. Наприклад, щоб виконати те, lsщо ви виконували останнім часом, ви можете зробити !ls. Подивіться на наступний журнал, щоб побачити, чи це те, що вам потрібно:

nits@nits-excalibur:~$ ls /mnt/Storage_1/Music/
Music I  Music II  Music III  Music IV  Music V  Music_VI
nits@nits-excalibur:~$ cd Documents/
nits@nits-excalibur:~/Documents$ top
nits@nits-excalibur:~/Documents$ !ls
ls /mnt/Storage_1/Music/
Music I  Music II  Music III  Music IV  Music V  Music_VI

1
Це запускає команду, не відображаючи її, чи є альтернатива, яка відображає її так, як вимагається ОП?
Бруно Перейра

У zsh ви можете, setopt HIST_VERIFYі команда буде поміщена у ваш вхідний буфер, де ви можете натиснути клавішу Enter, щоб прийняти її, або відредагувати її.
poolie

1

Розташована історія ~ / .bash_history Також для акуратного трюку для пошуку вашої історії башів натисніть ctrl + r, а потім введіть початок потрібної команди.

та http://ubuntuforums.org/showthread.php?t=204382 псевдоніми та підказки для зручного командного рядка

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