Una dintre minunile Linuxului este terminalul sau linia de comandă. În distribuțiile actuale un utilizator obișnuit poate sta luni sau chiar ani fără să fie nevoie să folosească terminalul (totul se reduce la câteva click-uri în modul GUI). Dar sunt cazuri când ajungi la terminal (dau doar exemplul conectării prin ssh la un server VPS cu Linux - TREBUIE să folosești terminalul pentru actualizare, instalare/dezinstalare pachete, sarcini cron, setări prin fișierele de configurare ale Apache, etc.).
Acest articol încearcă să aducă puțină lumină în ceea ce pare un monstru pentru cei care abia au pășit în lumea Linux. Nici eu nu știu chiar toate scurtăturile, dar dacă se repetă des intră în obișnuință.
Completarea comenzii:
Tasta TAB: shell-ul încearcă să completeze restul comenzii sau numele unui fișier după ce-ați introdus câteva caractere. dacă există o comandă sau un nume de fișier care corespunde cu ceea ce am scris până acum, shell-ul va completa restul comenzii (sau numelui de fișier) și va adăuga un spațiu la final.
Dacă cele câteva caractere introduse nu identifică în mod unic o comandă (sau nume de fișier), shell-ul va completa cu ce poate și se va opri. În funcție de shell-ul folosit și de configurație, se poate auzi un beep. Dacă vom apăsa tasta TAB din nou, sistemul va răspunde prin afișarea completărilor posibile. Putem să scriem încă unul sau 2 caractere, iar dacă nu s-a completat comanda (sau numele fișierului) apăsăm TAB din nou și procesul se reia.
Majoritatea comenzilor din Linux au nume scurte (mv, cd, ls...), dar altele au nume destul de lungi (cum ar fi traceroute); fișierele, de asemenea, pot avea până la 255 de caractere în nume. În exemplul de mai jos am scris caracterele ls și am apăsat tasta TAB, iar sistemul îmi afișează posibilitățile pe care le am:
Dacă, de exemplu, apăsam tasta TAB fără să introducem niciun caracter, shell-ul ne va întreba dacă să afișeze toate posibilitățile:
Această funcție de completare a comenzii ne poate salva o mulțime de timp - de ce să rescriem o comandă lungă, când o putem reafișa cu 2-3 taste?
Istoricul terminalului
O altă scurtătură utilă în shell este history. Shell-ul păstrează în istoric toate comenzile pe care le-am scris - mă rog, nu chiar toate, ci doar ultimele 500 de comenzi. Pentru a vedea ceea ce am scris anterior, dăm comanda:
history
Pentru a retipări sau executa o comandă din istoric, vom scrie în linia de comandă caracterul !
urmat de numărul liniei din istoric care corespunde comenzii dorite. De exemplu, vreau să repet comanda nr. 11 din istoricul meu și voi scrie:
!11
Pentru a șterge istoricul vom folosi următoarea comandă (utilă în cazul în care nu vrem să lăsăm un eventual alt utilizator al computerului pe contul nostru să vadă ce am lucrat):
history - c
De reținut că istoricul comenzilor rămâne în fișierul ascuns .bash_history din directorul home al fiecărui utilizator - este un fișier text obișnuit, care poate fi deschis cu orice editor (gedit, pluma...) sau în terminal folosind less. Nu înregistrează ce scriem ca răspuns la alte comenzi (de exemplu parole când executăm o comandă care necesită drepturi de root), ci doar strict ceea ce scriem noi în terminal.
Restabilirea unei comenzi
Cea mai simplă modalitate de a face asta este să apăsăm tasta UP (săgeată în sus) de pe tastatură: în aces fel ni se vor readuce comenzile anterioare. Apăsând această tastă în mod repetat, navigăm prin toate comenzile scrise de noi înainte. Dacă am trecut peste comanda care ne interesa și vrem să ne întoarcem, soluția este apăsarea tastei DOWN (săgeată în jos) de pe tastatură.
Echivalențe:
- pentru UP (săgeată în sus): combinația de taste CTRL+P
- pentru DOWN (săgeată în jos): combinația de taste CTRL+N
Căutarea unei comenzi
Apăsând combinația de taste CTRL+R va începe căutarea înapoi (reverse search); tastând câteva caractere, ni se va afișa comanda dorită; caracterele pe care le scrie nu trebuie în mod neapărat să fie de la începutul comenzii - ele pot să se afle oriunde în interiorul său:
Cu ENTER se va introduce comanda în shell pentru execuție.
Combinația de taste CTRL+S este folosită pentru a căuta înainte în istoricul comenzilor (search forward) - dacă, de exemplu, facem o căutare cu CTRL+R și am trecut de comanda care ne interesează, apăsarea tastelor CTRL+S ne va fi utilă.
Dacă în timpul folosirii CTRL+S linia de comandă se blochează, apăsăm CTRL+Q pentru a reveni la operațiile din terminal. Pentru a evita blocarea ulterioară la utilizarea CTRL+S, scriem stty -ixon în linia de comandă și totul va fi ok:
Dacă dintr-un motiv oarecare (nu găsim comanda sau ne-am săturat și vrem să ieșim din căutare), apăsăm tastele CTRL+G.
Editarea unei comenzi
În mod frecvent, după ce am găsit o comandă cu una din metodele de mai sus, vrem s-o edităm. Vom apăsa combinațiile de taste CTRL+A sau CTRL+E pentru a muta cursorul la începutul sau sfârșitul liniei (în acest fel, evităm mutarea cursorului caracter cu caracter folosind săgețile stânga-dreaptă și, în cazul unei linii lungi, câștigăm ceva timp).
Echivalențe la mutarea cursorului caracter cu caracter într-o linie:
- săgeată STÂNGA: combinația de taste CTRL+B
- săgeată DREAPTA: combinația de taste CTRL+F
Apăsând CTRL plus săgeata STÂNGA sau DREAPTA, ne mutăm în stânga sau dreapta cu câte un cuvânt - același efect îl obținem dacă apăsăm ESC și tasta B sau F
Ștergerea textului
Apăsând combinația de taste CTRL+D sau tasta DELETE, vom șterge primul caracter de după cursor (spre dreapta).
Tasta BACKSPACE șterge caracterul de dinaintea cursorului, spre stânga.
Apăsând combinația CTRL+K vom șterge tot textul de la cursor (spre dreapta) și până la sfârșitul liniei.
Apăsând CTRL+X și apoi BACKSPACE vom șterge tot textul de la cursor (spre stânga) și până la începutul liniei.
Inversarea textului
Apăsând combinația CTRL+T inversăm caracterul de dinaintea cursorului cu cel de după cursor. Apăsând ESC și apoi T inversăm 2 cuvinte imediat de dinaintea (sau de după) cursor.
Schimbarea literelor mari cu litere mici și invers
Apăsând ESC și apoi U convertim caracterele cuvântului din dreapta cursorului în litere mari.
Apăsând ESC și apoi L inversăm caracterele cuvântului din dreapta cursorului în litere mici.
Apăsând ESC și apoi C schimbăm în literă mare primul caracter al cuvântului din dreapta cursorului, restul literelor cuvântului rămânând nemodificate.
Este greu? Nu - trebuie doar puțin exercițiu și dorință de a învăța ceva nou. Cei care pleacă din start de la premisa că terminalul din Linux este o sperietoare, folosit doar de ciudați, vor rămâne la un prag peste care nu pot trece și vor fi lipsiți de bucuria oferită de linia de comandă. Vor putea folosi în continuare distribuția Linux preferată chiar și fără terminal.
lucian a zis
Bun tutorial.
Aici am făcut un print al terminalului - http://imgur.com/a/PNUo1
Ice Alinutza a zis
Foarte utilă mi se pare folosirea tastei "#" (comentariu) în linia de comandă. Spre exemplu dacă vreau să încep instalarea unei aplicații voi începe cu: ~ $# activez ufw / tab Enter - după care încep să dau comenzile de activare... comanda marcată cu "#" în față îmi va apărea în .bash_history ca un comentariu ex.: # activez ufw - care mă anunță la ce urmează și dacă vreau să îmi apară și faptul că am terminat acest proces închei tot cu: ~ $# am terminat instalarea ufw - și îmi va apărea și acest comentariu în /home/.bash_history. Este util mai ales când vrei să revi la un anumit ciclu de comenzi date pentru rezolvarea unui anumit aspect. 🙂
De asemenea mi se pare utilă folosirea comenzii "exit" pentru încheierea unei sesiuni în terminal...
Atenție: comenzile date ca "root user" - utilizator root #comandă - le veți găsi în /root/.bash_history care se deschide numai cu parola de administrator!
Bobses a zis
Ca să ajungi la # în shell trebuie efectiv să schimbi utilizatorul în root. Asta se face cu comanda
su
. Pentru revenire la utilizatorul normal și ieșirea din modul root se foloseșteexit
.Personal, nu recomand folosirea terminalului ca root, ci doar ca user normal cu sudo.
Ice Alinutza a zis
Sper să fi fost corect înțeles și anume că în comentariu nu mă refeream la utilizatorul "root" de forma "icealinutza-GA-MA790X-UD3P icealinutza #" ci la cel de forma "icealinutza@icealinutza-GA-MA790X-UD3P ~ $". Referirea la utilizatorul "root" am făcut-o numai în ultima frază a comentariului. Si da, nu este recomandabilă folosirea utilizatorului "root" decât cu precauție și numai atunci când chiar știi ce faci! 🙂
b a zis
Bun tutorialul...cum fac sa am doua taburi ale liniei de comanda afisate inacelsi timp? ce combinatie de taste apas?
Bobses a zis
Ai 2 posibilități:
- File - New tab
- click dreapta pe terminal și din meniul rapid alegi Open Tab
La mine combinația de taste este SHIFT+CTRL+T
Malin a zis
Ce script de MOTD folosesti? E nativ in Arch sau e ceva custom facut de tine?
Bobses a zis
Este în Arch - iți spun mâine cum se numește (acum sunt pe tabletă).
Bobses a zis
Fortune - https://wiki.archlinux.org/index.php/Fortune
Are jdemii de mod-uri cu texte și citate pe care le poți instala (din filme, cărți, etc)
Malin a zis
Interesant, multumesc!
Bobses a zis
Oricând cu plăcere. 🙂