Bash

Bash – najpotrzebniejsze skróty klawiszowe

Pomimo prawie 30 lat na karku i milionów użytkowników niektóre bardziej zaawansowane funkcje powłoki bash dla wielu użytkowników są wciąż tajemnicą. Jedną z takich tajemnic i niewątpliwie wartą odkrycia są skróty klawiszowe. Są one przydatne tym bardziej, im dłużej w niej przebywamy.

Pomimo prawie 30 lat na karku i milionów użytkowników niektóre bardziej zaawansowane funkcje powłoki bash dla wielu użytkowników są wciąż tajemnicą. Jedną z takich tajemnic i niewątpliwie wartą odkrycia są skróty klawiszowe. Są one przydatne tym bardziej, im dłużej w niej przebywamy.

Artykuł ten dedykuję weteranom konsoli, którzy potrafią toczyć bitwy z najbardziej zjadliwymi awariami, nawigując po linii konsoli przy pomocy strzałek.

GNU Readline

Bash używa biblioteki GNU Readline do zarządzania linią komend. Sama biblioteka jest tak samo stara jak wszechświat bash. Mówimy więc o naprawdę stabilnym interfejsie. By zobaczyć, jak wygląda konfiguracja naszej linii poleceń, należy użyć polecenia bind. Jest to funkcja wbudowana w powłokę (shell builtin).

[el@localhost ~]$ type bind
bind is a shell builtin

W celu wylistowania obecnych wiązań (bind) skrótów klawiszowych używamy:

[el@localhost ~]$ bind -P
abort can be found on "\C-g", "\C-x\C-g", "\e\C-g".
accept-line can be found on "\C-j", "\C-m".
...

Z wylistowanych w ten sposób skrótów pozwolę sobie wybrać najbardziej podstawowe, ale bardzo przydatne.

Poprzednia i następna komenda. ↑ i ↓

Jak już pisałem – wielu administratorów nie używa jednego z najprostszych skrótów. ctrl + p działa jak strzałka w górę pokazując nam poprzednio wywołane polecenie. ctrl + n działa jak strzałka w dół.

gif_1

Same skróty łatwo zapamiętać.

ctrl + previous
ctrl + next

Znak do przodu i znak do tyłu. → i ←

Znów mamy do czynienia ze skrótem, który pozwala wyeliminować stosowanie strzałek.
Strzałkę w przód zastępuje ctlr + f, a za strzałkę w tył kombinacja ctrl + b.

gif_2

Tutaj znów mamy prostą mnemotechnikę na zapamiętanie tego skrótu.

ctr + forward
ctrl + backward

Home i End

Gdy używamy strzałek to wykorzystanie klawiszy home i end do nawigacji może wydawać się nie najgorszym pomysłem. Jednak, gdy już się przyzwyczaimy do trzymania rąk na tej lepszej części klawiatury, to następne skróty okażą się równie pomocne.

gif_3

Tym razem użyjemy troszkę bardziej skomplikowanej mnemotechniki:

ctrl + end
ctrl + a ponieważ a jest na początku alfabetu.

Skok o jedno słowo

Przesunięcie się o jeden znak jest przydatne, gdy musimy edytować niewielki kawałek polecenia. Jeżeli jednak chcemy szybko przeskoczyć o więcej niż jeden znak – w tym wypadku na koniec lub początek słowa – używamy następującej kombinacji: alt + forward alt + backward

gif_4

Zastosujemy tutaj identyczną mnemotechnikę jak w przypadku przechodzenia o jeden znak:

alt + forward
alt + backward

Usuwanie linii, słowa i znaku

Potrafimy się już sprawnie poruszać po linii poleceń. Wypada teraz móc ją sprawnie edytować. W tym celu nauczymy się kilku przydatnych skrótów.

ctrl + k kasuje linię od miejsca, gdzie znajduje się kursor do jej końca.

Działanie pokazują dwa poniższe przykłady

gif_5

gif_6

Skrót możemy zapamiętać w następujący sposób.

ctrl + kasuj

ctrl + u kasuje linię od miejsca, gdzie znajduje się kursor do jej początku. Tak jak poprzednio ilustrują to dwa poniższe przykłady.

gif_7

gif_8

Skrót możemy zapamiętać w następujący sposób.

ctrl + usuń

Gdy chcemy jednak skorzystać z mniej radykalnych metod, to możemy użyć:

ctrl + d kasuje pojedynczy znak pod kursorem.

gif_9

alt + d kasuje słowo od kursora do jego końca.

gif_10

Używając mnemotechniki:

ctrl + delete
alt + delete

Przeszukiwanie historii

Jak pisałem już w artykule o FISH, ta powłoka w przeciwieństwie do basha pokazuje nam historię out-of-box. Mówiąc szczerze, robi to też dużo lepiej.
By wywołać tryb przeszukiwania historii, używamy kombinacji ctrl + r.

gif_12

Bonus – napisanie skryptu, który zostanie wywołany w locie

W celu napisania skryptu w locie używamy kombinacji klawiszy (ctrl+ e) + (ctrl+x). Niestety, jeżeli nasza zmienna środowiska $EDITOR nie jest ustawiona, to zostanie wywołany domyślny edytor, na przykład emacs! Musimy więc ustawić tą zmienną. Zostanie wtedy wywołany vi(m). Po wyjściu z edytora bash uruchomi nasz skrypt.

Podgląd na ten proces może dać poniższy gif.

gif_13

Zakończenie i podsumowanie

Jak już wcześniej akcentowałem, w artykule nie zostały ujęte wszystkie dostępne skróty klawiszowe, lecz te, które uznałem za najbardziej przydatne.

Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.