
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ół.
Same skróty łatwo zapamiętać.
ctrl
+ p
revious
ctrl
+ n
ext
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
.
Tutaj znów mamy prostą mnemotechnikę na zapamiętanie tego skrótu.
ctr
+ f
orward
ctrl
+ b
ackward
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.
Tym razem użyjemy troszkę bardziej skomplikowanej mnemotechniki:
ctrl
+ e
nd
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
+ f
orward alt
+ b
ackward
Zastosujemy tutaj identyczną mnemotechnikę jak w przypadku przechodzenia o jeden znak:
alt
+ f
orward
alt
+ b
ackward
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
Skrót możemy zapamiętać w następujący sposób.
ctrl
+ k
asuj
ctrl
+ u
kasuje linię od miejsca, gdzie znajduje się kursor do jej początku. Tak jak poprzednio ilustrują to dwa poniższe przykłady.
Skrót możemy zapamiętać w następujący sposób.
ctrl
+ u
suń
Gdy chcemy jednak skorzystać z mniej radykalnych metod, to możemy użyć:
ctrl
+ d
kasuje pojedynczy znak pod kursorem.
alt
+ d
kasuje słowo od kursora do jego końca.
Używając mnemotechniki:
ctrl
+ d
elete
alt
+ d
elete
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
.
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.
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.