8 greșeli de tipar pe care chiar trebuie să le evitați pe Linux
Publicat: 2023-01-15Linia de comandă Linux oferă o putere mare. Problema este că utilizarea corectă a acestei puteri depinde de acuratețea tastării. Iată opt greșeli de scriere pe care nu vrei să le faci niciodată.
Linia de comandă Linux
1. Nu uitați de -a
2. Folosind identificatorul de unitate greșit cu dd
3. Folosind identificatorul de unitate greșit cu mkfs
4. Nu ștergeți fișierul crontab
5. Repetarea istoriei
6. Calamitatea spațiilor
7. Folosind > În loc de >>
8. Redirecționare în direcția greșită
Cum să evitați greșelile de tipar în linia de comandă
Linia de comandă Linux
Linia de comandă Linux este un portal către o mare putere, dar o greșeală de tipar este tot ce este nevoie pentru ca această putere să se întoarcă împotriva ta. Cu toții am auzit despre comanda pe care nu ar trebui să o rulați niciodată. Ceea ce vorbim aici sunt comenzi pe care doriți să le executați, dar în cazul în care o scăpare poate însemna un dezastru.
Când apăsați „Enter”, tot ceea ce ați tastat este procesat de shell. Aliasurile și variabilele sunt extinse. Comenzile, opțiunile și parametrii sunt identificate. Aceasta se numește parsing. Următorul pas predă intrarea dvs. analizată comenzilor care urmează să vă execute instrucțiunile.
Dacă faceți o greșeală când introduceți comenzile, este posibil ca aceasta să fie prinsă ca o eroare de sintaxă. Dar dacă greșeala ta creează o altă linie de comandă validă, aceasta va fi executată.
O greșeală simplă poate fi cu adevărat distructivă. Nivelul de distrugere depinde de comandă și de greșeală. S-ar putea să pierzi timpul. Este posibil să pierdeți un fișier. Este posibil să pierdeți un întreg sistem de fișiere.
LEGATE: Ce este Bash Shell și de ce este atât de important pentru Linux?
1. Nu uitați de -a
S-ar putea să fie nevoie să adăugați pe cineva la un grup pentru a-i permite, de exemplu, să folosească o anumită bucată de software. De exemplu, VirtualBox solicită utilizatorilor să facă parte din grupul „vboxusers”. Putem face asta cu usermod
.
Comanda groups
listează grupurile unui utilizator.
grupuri
Vom adăuga utilizatorul dave
la un grup nou. -a
(adăugați) adaugă noul grup la lista de grupuri existente în care se află utilizatorul. Opțiunea -G
(grupuri) identifică grupul.
sudo usermod -a -G vboxusers dave
Noul grup este văzut după ce utilizatorul se conectează și se deconectează.
grupuri
Acum se află în grupul „vboxusers”. Cu toate acestea, dacă uitați să utilizați opțiunea -a
(adăugați), toate grupurile existente ale utilizatorului sunt eliminate. Singurul grup în care vor fi, este noul grup.
Aceasta este comanda incorectă :
sudo usermod -G vboxusers dave
Când se conectează în continuare, vor descoperi că fac parte dintr-un singur grup.
grupuri
Dacă aveți un singur utilizator configurat și îi faceți acest lucru, veți avea probleme serioase. În primul rând, utilizatorul nu mai este membru al grupului „sudo”, așa că nu puteți folosi sudo
pentru a începe corectarea lucrurilor.
RELATE: Adăugați un utilizator la un grup (sau al doilea grup) pe Linux
2. Folosind identificatorul de unitate greșit cu dd
Comanda dd
scrie blocuri de date în sistemele de fișiere. Este adesea folosit pentru a scrie imagini ISO pe stick-uri de memorie USB.
Schema de denumire Linux pentru dispozitivele de stocare folosește o singură literă pentru identificare. Primul hard disk se numește „/dev/sda”, al doilea este „/dev/sdb”, al treilea este „/dev/sdc” și așa mai departe. Partițiile sunt identificate prin număr. Prima partiție de pe primul hard disk este „/dev/sda1”, a doua este „/dev/sda2” și așa mai departe.
Dacă inscripționați o imagine pe un stick de memorie USB, trebuie să cunoașteți identificatorul unității stick-ului de memorie USB. Vom găsi asta prin lsblk
prin grep
, căutând intrări cu „sd” în ele.
lsblk | grep sd
Putem vedea că hard diskul „/dev/sda” este o unitate de 32 GB cu trei partiții. Una dintre partiții este partiția „/boot”, iar partiția „/dev/sda3” este montată la „/”, care este rădăcina sistemului de fișiere.
Unitatea de hard disk „/dev/sdb” este raportată ca o unitate de 7,5 GB. Este montat la „/media/dave/Pink”. În mod evident, unitatea „/dev/sda” este hard disk-ul principal de pe acest computer, iar „/dev/sdb” este stick-ul de memorie USB.
Comanda pentru a scrie un fișier ISO care se află în directorul „~/Descărcări” pe stick-ul nostru de memorie USB este:
sudo dd bs=4M if=Descărcări/distro-image.iso of=/dev/sdb conv=fdatasync status=progres
Ni se solicită parola, apoi dd
intră în acțiune. Nu există „Ești sigur?” avertismente sau șanse de a da înapoi. Scrierea începe imediat.
Cu toate acestea, dacă tastați litera greșită pentru identificatorul unității și aceasta se potrivește cu un hard disk existent, veți suprascrie acea unitate în loc de stick-ul de memorie.
Aceasta este comanda incorectă :
sudo dd bs=4M if=Descărcări/distro-image.iso of=/dev/sda conv=fdatasync status=progress
I-am spus dd
să folosească „/dev/sd a ”, așa a făcut. Acțiunea de scriere este mult mai rapidă, dar se termină cu un avertisment. Tocmai ți-ai aruncat la gunoi instalarea Linux.
Verificați și verificați identificatorii unității înainte de a apăsa „Enter”.
LEGATE: Cum să inscripționați un fișier ISO pe o unitate USB în Linux
3. Folosind identificatorul de unitate greșit cu mkfs
Există și alte comenzi care preiau identificatorii de unitate ca parte a liniei lor de comandă, cum ar fi instrumentele mkfs
. Aceste unități formatează prin crearea de sisteme de fișiere pe partiții.
Pe acest computer avem o unitate de 25 GB și una de 10 GB.
Dacă dorim să creăm un sistem de fișiere Ext4 pe prima partiție a unității de 10 GB, am folosi aceste comenzi.
sudo umount /dev/sdb1
sudo mkfs.ext4 /dev/sdb1
Dar dacă facem greșeala de a folosi un „a” în loc de un „b” în identificatorul unității, vom șterge una dintre partițiile de pe unitatea de 25 GB și vom face computerul nepornit.
Aceasta este comanda incorectă :
sudo umount /dev/sda1
sudo mkfs.ext4 /dev/sda1
Acea literă mică are un pumn, așa că asigură-te că ai pornit pe unitatea corectă.
LEGATE: Cum să utilizați comanda mkfs pe Linux
4. Nu ștergeți fișierul crontab
Daemonul cron
rulează sarcini la ore prestabilite pentru dvs. Își ia configurația dintr-un fișier crontab
. Fiecare utilizator, inclusiv root, poate avea un fișier crontab
. Pentru a edita crontab
, utilizați această comandă:
crontab -e
Fișierul crontab
este deschis într-un editor. Puteți face modificări și adăuga comenzi noi.
Dar dacă tastați greșit comanda și apăsați „r” în loc de „e”, veți șterge - ca în ștergere - fișierul crontab
.
Aceasta este comanda incorectă :
crontab -r
Data viitoare când utilizați comanda crontab -e
, veți vedea un fișier implicit, gol.
Aceasta este o greșeală ușor de făcut, deoarece „e” și „r” sunt unul lângă celălalt pe majoritatea tastaturilor. Reconstruirea unui fișier crontab
complicat nu este distractiv.
RELATE: Ce este un job Cron și cum le folosiți?
5. Repetarea istoriei
Utilizarea comenzii history
este excelentă atunci când încercați să reduceți apăsările de taste și să economisiți timp. Dacă poți scoate o comandă îndelungată din istorie, câștigi viteză și precizie. Atâta timp cât selectezi comanda potrivită din istoricul tău.
Comanda history
listează comenzile anterioare în fereastra terminalului. Sunt numerotate. Pentru a reutiliza o comandă, precedați numărul acesteia cu un semn de exclamare „ !
„, și apăsați tasta „Enter”.
istorie
Să presupunem că am clonat un depozit Git, ne-am încurcat cu el și l-am șters. Trebuie să-l clonăm încă o dată. Derulând în fereastra terminalului, putem identifica în curând comanda git clone
. Îl putem rula din nou tastând:
!60
Dar dacă ne-am uitat doar la ecran și am citit greșit numărul, s-ar putea să alegem următorul număr din greșeală:
!61
Aceasta rulează următoarea comandă din listă, rm *
. Aceasta șterge toate fișierele din directorul curent.
De asemenea, puteți folosi „ !
” semnul exclamării cu un șir de text. Prima comandă de potrivire este executată pentru dvs. Nu este afișat pentru a putea verifica că este cel la care te gândeai, se execută imediat.
Imaginați-vă scenariul în care aveți un script numit „restart.sh”. Acest script setează implicit un set de fișiere de configurare pentru unele software pe care le scrieți. Periodic, pe măsură ce dezvoltați și testați, trebuie să ștergeți lista, așa că vă apelați scriptul.
Această comandă ar trebui să fie suficientă pentru a găsi și potrivi comanda din istoricul dvs. și pentru a o executa.
!re
Dar dacă ați folosit comanda de reboot
de când ați folosit ultima dată scriptul, comanda de reboot
este găsită și executată imediat.
Pe computerul dvs. de acasă cu un singur utilizator, probabil că este doar o supărare. Pe un server partajat este o supărare și pentru mulți alți oameni.
LEGATE: Cum să utilizați comanda istoric pe Linux
6. Calamitatea spațiilor
Spațiile din numele fișierelor și căile directoarelor pot provoca ravagii. De aceea ar trebui să fie întotdeauna scăpați sau citați.
Problemele cu spațiile pot fi evitate utilizând completarea filelor. Apăsați tasta „Tab” atunci când introduceți un nume de fișier sau o cale de director, iar shell-ul va completa automat cât mai mult posibil din calea sau numele fișierului. Este posibil să fie nevoie să tastați o literă pentru a face diferența între fișierul pe care îl doriți și orice alte fișiere care partajează o parte cu același nume, dar o altă apăsare a tastei „Tab” va completa restul numelui fișierului pentru dvs.
Acest lucru economisește apăsările de taste, împiedică spațiile să se strecoare din cauza greșelilor de scriere și scapă corect de orice spații legitime, astfel încât acestea să nu cauzeze probleme.
Să presupunem că avem un director „Dezvoltare” care conține alte două directoare, „geocoder” și „bin”. Există, de asemenea, un director „bin” în directorul „geocoder”.
Pentru a șterge fișierele din directorul „geocoder/bin” și pentru a elimina directorul, ați folosi această comandă.
rm -r geocoder/bin
Acum imaginați-vă că ați adăugat din neatenție un spațiu după „geocoder/”, așa.
Aceasta este comanda incorectă :
rm -r geocoder/ bin
Bum. Directorul „Dezvoltare” este acum gol. Directoarele „Development/geocoder”, „Development/geocoder/bin” și „Development/bin” au fost toate șterse complet.
Amintiți-vă, completarea filei este prietenul dvs.
RELATE: Utilizați completarea filelor pentru a introduce comenzi mai rapid pe orice sistem de operare
7. Folosind > În loc de >>
Redirecționarea trimite rezultatul unui proces într-un fișier. Folosim semnul mai mare decât „ >
” pentru a captura rezultatul dintr-un proces. Dacă fișierul există, acesta se golește mai întâi.
Să presupunem că investigăm o scurgere de memorie. Avem un script numit „memlog.sh”. Afișează statisticile memoriei o dată pe secundă. O vom redirecționa într-un fișier numit „memory.txt”, pentru analiză ulterioară.
memlog.sh > memorie.txt
memoria capului.txt
A doua zi, vrem să continuăm investigația și repornim scenariul. De data aceasta trebuie să folosim două semne mai mari decât „ >>
” pentru ca noile date să fie atașate fișierului.
memlog.sh >> memorie.txt
Dacă folosim un singur semn mai mare decât „>”, vom pierde datele de ieri, deoarece fișierul este golit primul.
RELATE: Ce sunt stdin, stdout și stderr pe Linux?
8. Redirecționare în direcția greșită
Redirecționarea poate folosi conținutul unui fișier ca intrare într-un program.
Avem un fișier numit „placenames.sql” pe care dorim să îl importăm în sqlite3
. Fișierul cu schemă descrie cum să recreați tabelele bazei de date. De asemenea, deține datele pe care le dorim să fie stocate în baza de date. La 1,3 GB și peste 11 milioane de linii, este un fișier mare.
ls -hl placenames.sql
wc placenames.sql
Putem crea o nouă bază de date numită „places.sqlite3” cu această comandă.
sqlite3 places.sqlite3 < placenames.sql
De cele mai multe ori, atunci când redirecționăm, folosim caracterul „>”. Trebuie să te concentrezi pentru a evita să tastezi „>” din obișnuință. Dacă o faceți, orice ieșire pe care sqlite3
o generează este scrisă în fișierul dvs. de schemă, ștergându-l.
Aceasta este comanda incorectă :
sqlite3 places.sqlite3 > placenames.sql
Fișierul nostru de schemă a fost distrus, suprascris de mesajul de bun venit din shell-ul sqlite3
.
nume de locuri pisici.sql
La revedere, 1,3 GB de date.
Cum să evitați greșelile de tipar în linia de comandă
Există obiceiuri bune pe care le puteți adopta pentru a evita să faceți aceste tipuri de greșeli.
Folosiți completarea filei acolo unde este posibil. Veți evita problemele cu spațiile din căile de director și numele fișierelor.
Creați-vă propriile aliasuri scurte și memorabile pentru comenzi lungi și complicate pe care trebuie să le utilizați ocazional. În acest fel, nu vei da greșit folosind opțiuni și parametri greșiți.
Este notoriu dificil să-ți verifici propriul text, dar asta trebuie să faci pe linia de comandă. Citiți ce este cu adevărat acolo. Nu aruncați o privire la el și nu credeți că spune ceea ce ați vrut să tastați. Ce spune de fapt? Pentru că asta va face cu adevărat.
LEGATE: 8 comenzi mortale pe care nu ar trebui să le rulați niciodată pe Linux