Naciskając w górę, mogę przejść przez poprzednio wprowadzone polecenia. Zauważyłem jednak, że modyfikowanie jednego z nich zmienia historię. Na przykład, jeśli napiszę:
echo a
echo b
echo c
[up][up][backspace]d[ctrl+c]
historia pokazuje teraz, że drugie polecenie echo d
nie było echo b
. Jak zachować pierwszą echo b
w historii?
Powiedzmy na przykład, że uruchamiam naprawdę długie polecenie z wieloma opcjami. potem chcę go uruchomić ponownie, z niewielką zmianą, więc wracam do historii, aby go znaleźć, wprowadzić zmiany, ale potem uświadamiam sobie, że tak naprawdę nie muszę go ponownie uruchamiać, po prostu pomyślałem o innej opcji zrobić zamiast tego. potem chcę wrócić i przypomnieć sobie, jakie polecenie wykonałem - ale poczekaj, historia pokazuje teraz niewłaściwą rzecz!
To pojawia się bardzo rzadko, ale kiedy tak się dzieje, uważam to za naprawdę irytujące. Czy istnieje sposób na automatyczne zachowanie oryginalnej historii?
źródło
history
możesz zobaczyć wszystkie polecenia. Po możesz wybrać to, czego potrzebujesz. Z której powłoki korzystasz teraz?echo c
.Odpowiedzi:
Spróbuj włożyć swój
~/.inputrc
W niektórych przypadkach można go znaleźć w wartości domyślnej (Wyłącz).
Powinien wymusić
readline
cofnięcie wszystkich zmian w wierszach historii przed powrotem, gdyaccept-line
zostanie wykonany. (więcej informacji wman bash
).Edycja:
CTRL+c
iset revert-all-at-newline on
działa dobrze od tego czasubash-4.3.30
.Ale:
źródło
nano
:-)Zazwyczaj:
zrobię to.
Oryginalne polecenie zostanie zapamiętane, jeśli wykonasz zmodyfikowane polecenie. Oczywiście nie chcesz tak naprawdę wykonywać, więc możesz komentować linię za pomocą
#
.W przykładzie, byś potem mieć w swojej historii:
echo a
,echo b
,echo c
,# echo d
.źródło
alt-shift-3
aby skomentować bieżący wiersz poleceń, jeśli używasz bashreadline
./insert-comment
wman 3 readline
(lubman bash
), aby uzyskać więcej informacji.