Odpowiedź Jona Reinholda jest świetna, ale zaproponuję o wiele potężniejsze rozwiązanie. Mam również komentarz na temat gotcha w odpowiedzi Jona, ale nie mam wystarczającej reputacji, aby móc komentować bezpośrednio, więc @Jon Reinhold, jeśli to czytasz, proszę skieruj mój komentarz poniżej.
Bash zawiera polecenie fc
, które przyjmuje jako parametry numery linii listy historii bash. Następnie otwiera domyślny edytor z tymi wierszami jako tekstem. W tym momencie możesz opcjonalnie edytować linie. Następnie, po wyjściu z edytora, bash wykonuje te linie!
Przykładem zmiany, którą możesz chcieć wprowadzić, jest dołączenie do wszystkich wierszy, z wyjątkiem ostatniego, czegoś takiego jak „; czytaj -p„ next ... ”. Spowoduje to, że bash wykona każdą linię i wyświetli monit przed kontynuowaniem.
Komentarz dla Jona Reinholda: Świetna odpowiedź, ale powinieneś ją zakwalifikować, ponieważ jeśli użytkownik ustawił zmienną bash HISTCONTROL do włączenia
erasedups
, to po wykonaniu C-o
użytkownik będzie zdezorientowany, ponieważ zamiast oczekiwanej następnej komendy w historii, następna komenda zostanie wyświetlone. Wynika to z faktu, że bash usunął pierwotne wystąpienie wykonanego polecenia, a zatem wszystkie polecenia przesunęły się w górę o jedną linię, tj. do jednego niższego numeru indeksu na liście historii.