Jak mogę dodać polecenie do historii Bash bez wykonywania go?

32

Od czasu do czasu dobrze byłoby dodać polecenie bezpośrednio do historii w Bash bez wykonywania go. Jak dotąd zamkniętą rzeczą, którą znalazłem, jest dodanie #przed nią i uderzenie w powrót. Czy są lepsze sposoby?

Grumbel
źródło

Odpowiedzi:

39

history -s dowództwo

Spiff
źródło
Nigdy nie wiedziałem o tej funkcji. Nie mogę wymyślić natychmiastowego zastosowania, ale dobrze wiedzieć.
Doug Harris
7
Czy wiesz, czy możliwe jest uruchomienie podobnego polecenia ze skryptu? Mam skrypt, ./resize-images.shktórego ostatnia linia wskazuje polecenie, które należy uruchomić, aby cofnąć zmiany, byłoby naprawdę przydatne, gdyby zamiast tego skrypt mógł dodać polecenie do mojej historii, więc po prostu uderzyłem, up-entergdybym musiał cofnąć
Ben Page
1
@BenPage: Spójrz na obie odpowiedzi tutaj: unix.stackexchange.com/questions/112354/… .
RustyTheBoyRobot
9

history -s dowództwo

Możesz nawet przypisać naciśnięcie klawisza, aby zrobić to za Ciebie. Możesz wprowadzić to po wyświetleniu monitu Bash:

bind '"\C-q": "\C-a history -s \C-j"'

lub dodaj to do ~/.inputrc:

"\C-q": "\C-a history -s \C-j"

następnie możesz coś wpisać i nacisnąć Ctrl- qa zostanie on dodany do historii bez wykonania. Spacja przed „historią” powoduje, że historysama komenda nie jest dodawana do historii, jeśli HISTCONTROLzmienna zawiera ignorespacelub ignoreboth. Zamiast „\ Cq” można wybrać kolejne naciśnięcie klawisza.

Wstrzymano do odwołania.
źródło
3

Trudno wymyślić coś krótszego niż „polecenie” jednej postaci, więc naprawdę musimy przejść na poziom naciśnięcia klawisza. Z moją konfiguracją bash i klawiaturą amerykańską to, co teraz robisz:

  1. Idź na początek linii: CTRLAinstrukcja +1, +2 naciśnięcia klawiszy
  2. Dodaj #(potrzebuje SHIFT): instrukcja +1, naciśnięcie klawisza +2
  3. Dołączanie do historii za pomocą ENTER: instrukcji +1, naciśnięcia klawisza +1

więc łącznie 3 instrukcje, 5 naciśnięć klawiszy.

Używanie ALT#robi to samo w 1 instrukcji, 2 naciśnięciach klawiszy.

YMMV w zależności od układu klawiatury i konfiguracji bash.

Benjamin Bannier
źródło
3
Problemem nie jest liczba naciśnięć klawiszy, ale to, że „#command” jest zapisywane w historii, zamiast zamierzonego „polecenia”.
Grumbel
1
Fajnie, że „#command” jest zapisywane w pliku historii, ponieważ informuje, że polecenie nie zostało faktycznie wykonane. Może to być przydatne, jeśli chcesz później sprawdzić, jakie polecenia wpisałeś, aby znaleźć problem.
Marnix A. van Ammers
2
@Grumbel, @Marnix: Zgadzam się, nie odpowiedziałem na pytanie, ale pokazałem, jak zrobić to, co robi teraz, jeszcze szybciej. Osobiście uważam, że używanie #commandjest znacznie szybsze niż history -s command, a także bardzo łatwe w użyciu, jeśli history-search-backward/-forwardpoprawnie mapujesz. Ale to kwestia gustu.
Benjamin Bannier