Linux terminal - zestaw przydatnych trików

Przy okazji ostatniego wydanie Ubuntu 20.04 jak zwykle w komentarzach rozgorzała dyskusja (albo walki troli jak kto woli) o wyższości jednego systemu nad drugim. Mam wrażenie graniczące z pewnością, że większość czytelników dużo lepiej zna Windows niż Linux i mierzy go miarą swoich przyzwyczajeń i znajomości tego pierwszego.

W związku z powyższym chciałem przybliżyć nieco jeden z mocniejszych aspektów systemów *nix tj. siłę terminala a konkretnie pokazać kilka trików terminalowych ułatwiających życie. Celowo piszę *nix ponieważ w większości porady poniżej można wykorzystać na innym znanym systemie z pnia Unix czyli MacOS

Oto lista komend która pozwoli lepiej wykorzystać siłę terminala.

  1. [ strzałka góra i doł ] odszukiwanie komendy w historii. Ok odpaliliśmy okienko terminala. Załóżmy że całkiem niedawno wykonywaliśmy już jakąś dosyć skomplikowaną komendę i chcemy ją wykonać jeszcze raz - strzałka do góry i w dół pozwoli nam ją odszukać w historii i wykonać ponownie komendę którą już raz wywołaliśmy
  2. [ ctrl + strzałka lewo lub prawo ] wpisujemy długą komendę i orientujemy się że gdzieś w środku jest zły parametr będąc już na końcu wywołania.
    Wciskając ctrl+ strzałka lewo możemy słowo po słowie dotrzeć do miejsca błędnego wpisu i go zmodyfikować.
  3. [ ctrl + r ] odszukiwanie rekursywne podobnie jak w poprzednim punkcie ale znamy już nazwę komendy przynajmniej częściowo w tym wypadku należy użyć skrótu ctrl+r pojawi się informacja o trybie wyszukiwania komendy w historii:
    (reverse-i-search) - teraz wpisując kolejne znaki wyszukamy komendę z historii (wybieramy poprzez enter). Dodatkowo w tym trybie także możemy używać strzałek gór dół aby wybrać komendę z już zawężonej do wyszukania listy.
  4. [ ctrl + k ] usunięcie wpisywanej linii od kursora do końca linii.
  5. [ ctrl + u ] usunięcie wpisywanej komendy od kursora do początku linii
  6. [ ctrl + x i ponownie ctrl+x] Zaczynamy pisać wyjątkowo długą komendę i przypominamy sobie że trzeba ją poprzedzić komendą sudo. W miejscu którym jesteśmy wciskamy ctrl + x przeskakujemy do początku linii wpisujemy to co potrzeba. Następnie wracamy do miejsca gdzie byliśmy przez ponowne naciśnięcie ctrl + x
  7. [q lub ctrl + d lub ctrl + c lub ctrl + x ] odpaliliśmy przez przypadek jakiś program i nie wiemy jak z niego wyjść :) Oprócz literki q są trzy komendy które prawdopodobnie pozwolą nam go zakończyć to ctrl + d lub ctrl + c lub ctrl + x
  8. [ ssh username@nazwahosta -p port ] W świecie windows króluje wizualny klient terminali rdp. W świecie unix najczęstszym sposobem łączenia się z innym serwerem jest klient i serwer ssh. Warto dodać że tego typu połączenie w przeciwieństwie do ftp jest szyfrowane.
  9. xdg-open nazwa_pliku ] otwieranie pliku graficznego lub innego w terminalu
  10. [ zapisanie hostów ssh w pliku ~/.ssh/config ] Jeśli łączycie się ze dużą ilością serwerów przez ssh warto zapisać ich adresy pod aliasami w pliku ~/.ssh/config
    Tutaj znajdziecie pełniejszy opis jak dodać listę swoich hostów. Podstawowa składnia zapisu jak poniżej. Teraz wystarczy wpisać: ssh mycustomerhost aby połączyć się z serwerem z wszystkimi parametrami zdefiniowanymi w pliku config.

host mycustomerhost
 HostName some.domain.net 
 Port 50022
 User superuser
 LocalForward 9999 127.0.0.1:8001
 LocalForward 8889 127.0.0.1:15672

host other
 HostName example.com
 Port 7878
 User tertulian

Powyższa lista nie jest w żaden sposób kompletna ani w żadnym razie nie jest listą najważniejszych komend terminala a jedynie podzbiór tych które autor uważa za wyjątkowo przydatne w swojej codziennej pracy.

Jeśli macie swoje ulubione skróty zachęcam do podzielenia się nimi w komentarzu!

W następnym wpisie chciałbym krótko omówić listę kilku bardzo przydatnych terminalowych narzędzi takich jak multiplekser tmux i file manager lf.

EDIT!

W komentarzach dodaliście sporo dodatkowych trików/komend/podpowiedzi.
O części z nich w ogóle nie słyszałem, inne tak weszły mi w krew że aż o nich zapomniałem. Oto krótka lista tych najbardziej oczywistych wyciągnięta ze zbiorowej mądrości czytelników:

  1. [ tab ] - załóżmy że chcemy skopiować plik: 
    o_bradzo_dlugiej_i_skomplikowanej_nazwie.txt
    zaczynamy pisać:
    > cp o_bar
    i w tym miejscu wciskamy tabulator. Istnieje spora szansa że nazwa pliku zostanie autouzupełniona jeśli nazwa pliku jest unikalna. Jeśli nie jest unikalna, system pokaże pasujące dopasowania.
  2. [ ctrl + a oraz ctrl + e ] przejście odpowiednio do początku i końca linii
  3. [dodanie aliasów w pliku.bashrc] jeśli używasz powłoki bash (domyślna w ubuntupochodnych) to edytując plik .bashrc można zadeklarować własne skróty komend. Np. domyślnie już wpisany w Ubuntu alias listowania plików z dodatkowymi informacjami ll zadeklarowany jako: alias ll='ls -alF'
    lub inny podobny alias la='ls -A'