Selektywna historia poleceń w terminalu?

9

W terminalu, po naciśnięciu klawisza w górę, zobaczysz poprzednie polecenia, które mu wcześniej podałeś. Zastanawiałem się, czy w przeszłości można było zobaczyć tylko polecenia, zaczynając od -for na przykład „ls -l”. W ten sposób, jeśli lista poleceń to:

  1. ls -l -a
  2. cmake
  3. cd ~ / Desktop
  4. cmake

Sposób, aby po prostu napisać „ls” i tab, lub dowolną kombinację klawiszy potrzebną do wyskakiwania poprzedniego polecenia poddającego się terminalowi zaczynającemu od „ls”

Dzięki,

jlo
źródło

Odpowiedzi:

14

Nie będzie pokazywał rzeczy zaczynających się od ls, ale możesz zrobić Ctrl-R lswyszukiwanie historii wstecz. Powtórz, Ctrl-Raby znaleźć następny mecz.

poolie
źródło
Dziękujemy za CTRL+Rpolecenie skrótu.
Kleber S.
8

Czasami warto mieć to ...

Przykład

Łączenie z innym komputerem za pomocą ssh:

Zacznij pisać

ssh

Użyj PgUpklawisza, a ssh kończy się na ostatnim używanym ... naciśnij PgUpponownie, a otrzymasz następny i tak dalej. Lubię to?

Możesz użyć tego:

Edytuj .bashrc ( vi /home/<yourfolder>/.bashrc) i dodaj to:

$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

Dodaje to tylko terminal użytkownika. Będziesz musiał edytować również ten root, aby mieć to samo: możesz wykonać ten samouczek z wiki, nie ma sposobu, aby zrobić to źle, jest też wiele dodatkowych rzeczy, które poprawią twoje wrażenia z terminalu ...

maniat1k
źródło
Możesz nawet powiązać go ze strzałkami w górę / w dół: bind '"\e[A": history-search-backward'; bind '"\e[B": history-search-forward'dzięki czemu jest jeszcze bardziej intuicyjny.
Fritz
5

Aby zobaczyć historię poleceń, użyj:

$ history

Jeśli chcesz, aby poprzednie polecenie zaczynało się na przykład od „ls”, moim zdaniem używam:

$ history | grep ls

Z pewnością wynik będzie zawierał coś, co nie jest poleceniem, ale zawiera znaki „ls”, ale myślę, że może to pomóc.

neo0
źródło
2

Najłatwiejszym sposobem na osiągnięcie tego, czego chcesz, jest !<whatever-command>. Na przykład, aby wykonać to ls, co ostatnio wykonałeś, możesz zrobić !ls. Spójrz na następujący dziennik, aby zobaczyć, czy tego potrzebujesz:

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
Nitin Venkatesh
źródło
1
To uruchamia polecenie bez wyświetlania go, czy istnieje alternatywa, która wyświetla je zgodnie z żądaniem PO?
Bruno Pereira
W Zsh możesz, setopt HIST_VERIFYa polecenie zostanie umieszczone w buforze wejściowym, w którym możesz nacisnąć Enter, aby je zaakceptować lub edytować.
poolie
1

Historia znajduje się ~ / .bash_history Również, aby znaleźć ciekawą sztuczkę polegającą na przeszukaniu historii bash, naciśnij ctrl + r, a następnie wpisz początek szukanego polecenia.

oraz http://ubuntuforums.org/showthread.php?t=204382 w przypadku przydatnych aliasów i sztuczek wiersza polecenia

Ringtail
źródło