NFsec Logo

Control-R – moje ulubione polecenie w powłoce bash

19/05/2014 w Administracja Brak komentarzy.  (artykuł nr 449, ilość słów: 328)

C

ontrol+R jest chyba najczęściej używanym poleceniem (lub skrótem klawiaturowym – będąc technicznie bardziej dokładnym) przy poruszaniu się w powłoce bash pomiędzy wieloma serwerami z jednej stacji roboczej. Pozwala szybko przeszukiwać całą historię wydanych poleceń, ponieważ każde polecenie wydane w powłoce bash zapisywane jest do pliku określonym w zmiennej HISTFILE (standardowo jest to ~/.bash_history). Ile poleceń jest trzymanych wstecz?

Przy domyślnej konfiguracji jest to 500 poleceń, które będą zapisane do pliku oraz tyle samo będzie pamiętane przez polecenie history. Zmieniając wartości HISTFILESIZE oraz HISTSIZE na przykład na liczbę 10000 jesteśmy w stanie znacznie powiększyć bazę danych poleceń na naszej stacji. Zanim jednak użyjemy Crtl+R jest kilka innych sposobów, aby przeszukać historię:

  • Ostatnio wydane polecenie: “strzałka” w górę; !!; !-1; Ctrl+P
  • Wykonanie konkretnego polecenia z historii: !5
  • Wykonanie ostatniego polecenia z słowem kluczowym: !ssh

OK – w przeciągu 10.000 poleceń na pewno kilka razy wydamy te same polecenia, co spowoduje, że w naszej bazie pojawią się duplikaty. Możemy ich uniknąć ustawiając wartość erasedups dla zmiennej HISTCONTROL – w ten sposób wszystkie duplikaty poleceń w całym pliku zostaną usunięte. A jak podstawić różne parametry z innych poleceń w historii do aktualnych komend? Kilka przykładów:

# Argument z ostatniego polecenia
$ ls /etc/file
$ chmod !!:$
# Pierwszy argument z ostatniego polecenia
$ cp /etc/config /etc/file
$ chmod !^
# Drugi argument z polecenia zawierającego cp
$ cp /etc/config /etc/file
$ chmod !cp:2
# Ostatni argument z polecenia zawierającego cp
$ cp /etc/config /etc/file
$ chmod !cp:$

Wracając do Ctrl+R – powiedzmy, że za pomocą ssh zalogowaliśmy się do pięciu różnych serwerów i chcemy ponownie zalogować się do trzeciego z nich. Wydajemy kombinację Control+R, która uruchamia tryb “wstecznego wyszukiwania przyrostowego” (ang. backward incremental search) i wpisujemy bez używania klawisza Enter: “s”, “s”, “h” – oraz ponownie powtarzamy tak długo kombinację Ctrl+R, aż znajdziemy całe polecenie odnoszące się do adresu trzeciego serwera, do którego dzisiaj się łączyliśmy i dopiero wciskamy Enter.

Więcej informacji: man bash, Ograniczenia z poziomu powłoki, Czas wydawania poleceń w bash history, Lepsze wyszukiwanie w bashu

Kategorie K a t e g o r i e : Administracja

Tagi T a g i : , , ,

Komentowanie tego wpisu jest zablokowane.