Deprecated: Function split() is deprecated in /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/auth.php on line 146 Warning: Cannot modify header information - headers already sent by (output started at /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/auth.php:146) in /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/auth.php on line 236 Warning: Cannot modify header information - headers already sent by (output started at /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/auth.php:146) in /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/actions.php on line 128
Ca început:
a) Ce este consola?
Este modul de a controla calculatorul folosind doar tastatura şi monitorul, fără mouse, touchpad, ... \ b) cum se ajunge în consolă?
Apăsati Alt-Ctrl-F1, F2, ... iar cu Alt-Ctrl-F7 se revine în interfaţa grafică, numită server X. Sau Alt-F2, şi scrieţi xterm, konsole, gnome-terminal, xfce-terminal acolo şi daţi Enter. Sau căutaţi în meniuri Terminal, Console, ... aţi prins ideea.
c) cum se numeşte acest mod de a lucra cu calculatorul?
Se numeşte CLI - command line interface - interfaţa în linie de comandă. Sună ciudat, dar de fapt numele e logic: controlaţi calculatorul dându-i comenzi, câte una pe linie. Ca atare: “linie de comandă”
Aţi văzut că am pus probabil o mică explicaţie despre rezolvarea problemelor Midnight Commander în Mrxvt (aici: click).
Erau presăraţi pe acolo nişte termeni magici: PATH, LANG, export,... /bin/bash.
Introducere
Haideţi să-i luăm pe rând să-i lămurim. Când lucraţi grafic, ca în Windows sau KDE, Gnome, ce se întâmplă în sistem vă este ascuns, şi dacă aveţi probleme, nu ştiţi ce să faceţi. De aceea e bine să ştiţi ce e sub capotă.
Presupun că prima parte o ştiţi: - calculatorul are două “părţi”: hardware şi software; hardware-ul e “metalul”, iar software-ul sunt programele care pun “metalul” în acţiune - software-ul se împarte în: sistem de operare şi aplicaţii - sistemul de operare e împărţit în nucleu (în engleză kernel), interpretor de comenzi (în engleză shell) şi utilitare
Nucleul “controlează” hardware-ul. El spune procesorului ce să facă, ţine evidenţa memoriei, în principiu face toată munca “de jos”. Deasupra lui vine shell-ul. Acesta este “interpretorul”, cel care “traduce” comenzile omului în comenzi pricepute de nucleu. Pe lângă shell, programele pot “discuta” cu kernelul şi prin funcţii specifice, dar acesta este domeniul programatorilor, şi nu priveşte subiectul acestui articol.
Acum vine partea interesantă pentru utilizatorul normal, fie el om care vrea să vadă de ce nu merge o aplicaţie, administrator de sistem, sau pur şi simplu utilizator băgăcios
Compunerea unei comenzi
Shell-ul este locul unde puteţi da comenzi direct sistemului. Ca atare, este puternic, dar şi mai greu de înţeles şi de folosit decât o interfaţă grafică. Cum arată o comandă? Cam ca o propoziţie mai simplă şi tâmpiţică: Subiect Predicat Complemente: Calculator Fă Asta Aşa. (sper că n-aţi chiulit de la gramatică, e de bază aici )
- Subiectul este mereu calculatorul, aşa că nu este specificat: Calculator - nu mai e nevoie să îl zicem, e implicit - Predicat: comanda efectivă - calculatorul trebuie să ştie ce să facă - Complemente: cu ce să facă? ce să le facă exact? unde? ....
Ok, model de comandă: Code: mv fisier1 fisier2 mv - vine din engleză, de la “move” - mută fisier1 - ce să mute? fisier2 - unde să mute?
Apoi vin opţiunile: Code: mv -l fisier1 fisier2 Ce este -l? Manualul cp (man cp), ne zice cam aşa: Quote from: man cp
link files instead of copying deci -l zice calculatorului să facă legături către fişiere, nu să mute fişierele.
La fel se procedează pentru fiecare comandă: - se caută comanda dorită - se caută manualul comenzii: man nume_comandă - se aleg opţiunile dorite.
Mare atenţie când scrieţi. Calculatorul nu înţelege comenzi greşite!
De asemenea, literele mari sunt diferite de cele mici. “Automatix” nu e egal cu “automatix”.
Acum că am lămurit în mare ce trebuie să scrieţi, şi acum, haideţi să intrăm în lucruri de fineţe
Cum găseşte calculatorul comanda respectivă?
Trebuie să dăm o comandă. Dar acea comandă înseamnă de obicei executarea unui program. Mai precis, rularea executabilului (echivalentul .exe din Windows). Şi cum ştie calculatorul care e acea comandă? Păi, logic, ştie după adresa şi numele programului (numele de fapt e parte a adresei). Cum arată o adresă? Păi cam aşa: /usr/bin/program, /home/gigi/program. / de la început înseamnă (root) rădăcina, adică rădăcina arborelui de directoare din calculator. Când sunteţi în /, sunteţi practic în punctul din care puteţi vedea orice fişier de pe hard disk, trebuie doar să navigaţi spre el folosind cd (change directory): cd /home/gigi Între / (slash) găsiţi numele de directoare, iar în directoare sunt fişierele. Cu menţiunea că slash-ul fix de la începutul şirului înseamnă mereu root.
Variabile de mediu (environment variables)
Acum să zicem că vreau să pornesc xmms. Alt-F2: /usr/bin/xmms. Cam enervant, nu? N-ar fi mai simplu să zic direct xmms? De aceea au apărut variabilele de mediu. Acestea sunt nişte reglaje pentru opţiuni des folosite. Una dintre opţiunile des întâlnite e PATH (calea). Aici se pun directoarele în care se vor căuta automat programe când vreţi să porniţi ceva. Ca să vedeţi cum arată: Code: echo $PATH (PATH este o variabilă, de aceea are la început $). O să vedeţi că probabil PATH arată cam aşa: Code: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games deci /usr/bin este în el. Excelent! Acum pot porni xmms fără să dau /usr/bin/xmms. Foarte comod, mai ales pentru căi lungi.
Fişiere de configurare
Ca orice variabilă de mediu, este trecută în fişierul de configurare a shell-ului vostru. Acest fişier de configurare se numeşte de obicei nume_programrc, şi este fie în /etc: /etc/bashrc, fie în /home/nume_utilizator: /home/nume_utilizator/.bashrc . În “căsuţa” voastră reglajele sunt cu punct în faţă, ca să fie ascunse: .bashrc. Uneori este denumit profile, exemplu: /etc/profile. Depinde de shell-ul folosit, personal folosesc zsh, care are zshrc.
Reţineti principiile, sunt important: a) majoritatea programelor au fişiere de configurare, care pot fi găsite în /etc, sau în $HOME (variabila de mediu care zice unde este “căsuţa” utilizatorului, se mai notează şi aşa: ~), în $HOME fiind ascunse - au punct în faţă b) configurările din $HOME sunt pentru un singur utilizator, cele din /etc sunt globale; ca prioritate, cele locale sunt mai tari c) fişierele de configurare se termină de obice cu rc, dar nu e obligatoriu: căutaţi tot ce ar putea avea legătura cu programul, pentru a fi siguri
Nu vă speriaţi de fişierele de configurare.
1) Multe dintre ele sunt comentate. Ce înseamnă asta? Programul citeşte ce scrie în fişier şi ia totul drept comenzi. Dar pentru că acel fişier e citit şi de oameni, s-a făcut o convenţie: un rând care începe cu un anumit caracter e ignorat de program, fiind doar o descriere pentru omul care citeşte, un comentariu. La shell-uri şi multe programe acel caracter e #. Deci în această situaţie: Code: # setez variabila X X=1 primul rând nu e citit de program, ci e pentru oamenii care se uită la configurări. Al doilea e în schimb citit.
2) Apoi, multe dintre fişierele de configurare au manuale. man nume_fisier vă arată cam ce trebuie să scrieţi, de exemplu: Code: man fstab vă descrie cum arată un fstab corect scris (fişierul pentru montarea sistemelor de fişiere la pornirea calculatorului).
3) Distribuţiile serioase au documentaţie bună pentru fişierele de configurare. Aşa că de multe ori e mai rapid să editezi fişierul de configurare decât să lansezi progrămelul care configurează
4) Programele scriu configurările în aceste fişiere. Îndată ce te înveţi cu acest mod de lucru, vei şti unde să cauţi, nu vei mai depinde de multe programe - vor deveni inutile, şi vei şti ce trebuie salvat/copiat, când schimbi calculatorul, pentru a nu pierde reglajele făcute de tine
Loguri
Logurile sunt nişte fişiere text unde programele scriu activitatea lor. Ca atare, în funcţie de reglaje, acolo veţi vedea cum a pornit un program, cum s-a oprit/a fost oprit, dacă dă vreo eroare, de ce nu porneşte... Cum se folosesc logurile? Păi, relativ simplu, se citesc şi se caută mesaje “speciale”: error, warning, !!!, ... Unde se găsesc logurile? Păi de obicei sunt în /var/log/, şi se termină în .log. De exemplu, dacă nu vă porneşte interfaţa grafică din cauza driverelor ATI sau NVIDIA, de obicei e Xorg.0.log. În general, e bine să aruncaţi un ochi pe aici. Dacă sunteţi în consolă, le vedeţi cu cat, more, less. cat e ineficient pentru fişiere mari, more nu ştie să mearga înapoi, deci less e cel mai bun. less Xorg.0.log, notaţi ce pare mai bizar, şi încercaţi să căutaţi pe net eroarea.
Shell-ul în sine
Shell-ul e el însuşi un program, şi vă oferă diferite facilităţi/opţiuni/reglaje. Care sunt mai importante?
- tab completion - autocompletare cu Tab Să zicem că avem fişierul ion.gigi în /home/eu/. Sunt în /home/eu, şi vreau să redenumesc ion.gigi în avionu. Cum fac? mv ion[Tab] avionu Când tastaţi [Tab], dacă în directorul curent nu mai e nici un fişier care să înceapă cu ion, în afara de ion.gigi, shell-ul va adăuga .gigi la nume, rezultând ion.gigi. Rapid, comod, eficient, mai ales când sunt nume lungi de fişiere. Dacă sunt mai multe, nu va face nimic, dar dacă daţi încă o dată Tab, va pune lista fişierelor care se potrivesc. - redirectare Majoritatea programelor comunica ceea ce fac utilizatorului. Sau chiar daca nu o fac implicit, pot fi fortate (vezi optiunea -v → verbose - “galagios”). Tot ceea ce spun ele utilizatorului este trimis catre ceva numit stdout, care reprezintă practic monitorul. Erorile sunt trimise catre stderr, care e tot monitorul. De multe ori, ceea ce ne intereseaza este doar o bucatica din ce se vede, si uneori e greu de gasit. De aceea este mai util sa trimitem ce ar aparea in mod normal pe monitor catre altceva - eventual un fisier. Cum facem asta? Să luăm un exemplu: Code: $ ls georgel ionel mitică/ $ ls > listă_fişiere.txt “>” a trimis lista: georgel ionel mitică/ în fişierul listă_fişiere.txt. Dacă nu mă credeţi, daţi ls în directorul vostru home şi trimiteţi outputul (ceea ce ar trebui să apară pe ecran), către un fişier, folosind > nume_fişier. Apoi uitaţi-vă în fişierul nou creat: bingo! Este lista acolo
- wildcarduri si alte caractere speciale * TO DO
Erori
Sunt situatii in care se intampla pur si simplu ca programul sa nu mai mearga, sa se blocheze, sau pur si simplu sa nu porneasca. In acest caz trebuie investigat motivul pentru care nu merge. Trebuie lansat din consola, pentru ca majoritatea programelor UNIX care se respecta vor afisa erorile intampinate acolo. Apoi, in functie de ceea ce se observa in mesajul de eroare, trebuie procedat in consecinta. Daca mesajul nu este inteles - e prea ciudat, e neclar - una dintre cele mai simple metode de a rezolva problema este cautarea erorii pe internet, folosind www.google.ro/linux . Daca sunt prea multe rezultate, scrieti si numele programului in cautare, daca sunt prea putine, fiti atentie la elementele distinctive: scoateti caile (/home/gigi/program), numele de utilizator (gigi), alte elemente ce tin doar de calculatorul vostru, si nu de program in sine - din textul pentru cautare. Daca asa nu gasiti nici o solutie, incercati sa identificati producatorul programului si sa-i dati un mail, sau sa postati pe forum sau mailinglistul acestuia, mentionand eroarea primita si conditiile in care ati primit-o. Este util sa trimiteti un raport si catre mantainerii distributiei folosite. Probabil ca va va ajuta sa rezolvati problema, cu conditia sa va exprimati politicos. Descrieri conditiile in care s-a produs problema, ce versiune a programului folositi, ce distributie folositi.
Comenzi de baza
Lista comenzilor posibile e infinită. Asta si pentru ca orice program poate fi apelat din consola. Totusi, exista un set de comenzi care sunt intalnite pe majoritatea UNIX-urilor, si va salveaza din multe necazuri. Voi enumera dintre cele mai importante: cd - pentru trecerea in alt director Code: cd director_nou ls - pentru a vedea ce fişiere sunt într-un director Code: ls mv - pentru mutarea fisierelor, sau redenumirea lor Code: mv fisier_sursa fisier_destinatie rm - pentru ştergerea fişierelor Code: rm fişier1 fişier2 mkdir - pentru crearea directoarelor Code: mkdir nume_director less - pager, adică permite vizualizarea unei pagini de text, util pentru a vedea repede text Code: less nume_fişier touch - creare fişier Code: touch nume_fişier Mare atenţie cu rm, şterge fără să întrebe, iar mv mută peste un fişier deja existent (suprascriindu-l, deci veţi pierde ce conţinea el înainte), fără jenă.
Fisiere
În primul rând, ce e un fişier? Este o colecţie de date structurată, aflată pe hard disk. Adică date puse pe hard disk, dar organizat. Nu trebuie să ştiţi prea multe despre fişiere, decât două chestii: ce tipuri există, şi cum se manevrează.
Tipuri de fişiere:
a) text b) binare a) Fişierele text sunt cele pe care le puteţi deschide cu un editor de text gen Notepad, Gedit, Kate, şi puteţi citi conţinutul. Sunt în format ASCII sau Unicode. ASCII şi Unicode sunt metode de a “codifica”, adică de a nota simbolurile alfabetului, în binar, astfel încât să poată lucra calculatorul cu ele. b) Fişierele binare sunt celelalte fişiere. Ele ţin date în alte formate decât ASCII sau Unicode. Acum vine întrebarea: eu deschid curriculumvitate.doc cu OpenOffice, şi văd text - .doc nu e fişier text? Nu. E un fişier care conţine text, dar deschideţi-l cu Notepad, Gedit, Kate, ... şi o să vedeţi puţin text şi multe gunoaie. Asta pentru că .doc e text adnotat (”marcat”) - conţine şi descrierea paginii, a fontului, a culorii fundalului, şi multe altele, într-un format propriu. Invers, deschid index.html cu Notepad & co, şi văd text - HTML e text? Da, e text. Şi el notează acele detalii despre pagină, font, culoare fundal, dar foloseşte ca marcaj text.
Pentru a afla de ce gen este un anumit fişier, folosiţi comanda file: Code: file nume_fişier Vă va da detalii despre de ce tip este un anumit fişier, folosind anumite detalii de la începutul fişierului (un element numit “magic markerul”). Foarte util, când aveţi un fişier primit din surse obscure, şi nu ştiţi ce e de fapt.
Dacă pe Windows eraţi obişnuiţi cu un sistem, aici e altul. Nu există partiţii văzute ca atare. Există doar fişiere. Fişiere de multe feluri, dar fişiere. Fişierele menţionate mai sus sunt fişierele normale. Pe lângă acestea mai există: directoarele (foldere) - le ştiţi din Windows. Socket-uri - sunt nişte fişiere speciale, folosite de programe pentru a comunica prin reţea. Pipe-uri - alte fişiere speciale, folosite de programe pentru a comunica între ele. Legăturile - linkuri (soft sau hard).
Link-urile
Link-urile sunt un fel de echivalent al shortcut-urilor Windows, dar mult mai capabile. De câtva timp încoace, Windows a început să imite UNIX-ul, şi noile versiuni de Windows au şi ele un fel de linkuri, chiar dacă nu chiar de nivelul UNIX. Ce se poate face cu un link? Păi se poate pune pe desktop o scurtătură către o partiţie de pe calculatorul cuiva din Australia. Se poate pune o scurtătură către un fişier aflat în vreun colţ greu de găsit al hard disk-ului, pentru a ajunge uşor la el.
Structura sistemului de fisiere
Permisiuni
Utilizatori şi privilegii
| Publicaţi pe acest Wiki doar conţinut original, nu se acceptă copierea articolelor de pe alte site-uri. Se recomandă folosirea link-urilor in acest caz. | ||
|
|
|
|