Faceți căutări pe acest blog

duminică, 11 august 2013

”Dificultate” linie de comandă

 Văd foarte mulți utilizatori de GNU/ Linux oarecum speriați de linia de comandă, aducând diverse așa-zis argumente anti-CLI, că nu e intuitivă, că e greu de folosit, durează prea mult să faci lucruri simple, e prea mult de tastat în terminal, comenzile sunt dificil de memorat, au prea multe opțiuni/ argumente, șamd.
 Trebuie să precizez în primul rând că nu-s vreun linux-guru, power-user, n-am tangență cu domeniul IT direct, nu-s sysadmin, programator sau altceva similar, sunt doar un user comun, casnic. În al doilea rînd nu am pretenția ca orice utilizator să folosească CLI, e chestie de preferință, dar m-au cam exasperat văicărelile, noile ”mituri urbane” privind linia de comandă, deci hai să vedem cum stau lucrurile, cel puțin după părerea mea!
 Nu vă impacientați, nu voi face apologia CLI, pur și simplu voi compara cele două metode (linie comandă și grafică) după câteva sarcini/ aplicații.

 Dar simultan să demolăm puțin ”argumentele” expuse anterior...
1- Linia de comandă nu e intuitivă
 Adică cum nu e intuitivă? Comenzile reprezintă numele aplicațiilor sau prescurtările denumirilor sarcinilor în limba engleză:
cp= copy= copie,
rm= remove= șterge/ înlătură 
mv= move= mută
mkdir= make directory= creează director
pwd= print working directory= arată directorul curent
ls= list= listează, afișează, arată
 Și așa mai departe... Sau dorim să pornim o aplicație, tastarea numelui aplicației deschide acea aplicație, putem pasa și ceva opțiuni, argumente (numele/ calea către un fișier audio, video, text, imagine, sau o adresă web, etc.):
audacious
apper
systemsettings
qwenview imagine
firefox yahoo.com
okular fișier.pdf
mplayer *.avi   (astfel mplayer va reda toate fișierele .avi) 
xdg-open fișier  (dacă nu cunoaștem aplicația ce deschide un fișier, indiferent de ce fel/ text, pdf, audio, video, xdg-open va deschide fișierul cu aplicația implicită)

2- Comenzile sunt greu de memorat
 Cu puțin efort ne vom aminti numele comenzilor: ne gândim la ce anume face acea comandă, la numele în engleză, cum s-ar prescurta și gata. Nu? Apăsarea tastei TAB ne oferă toate comenzile disponibile, e edevărat că sunt multe, dar dacă cunoaștem 1-2 litere numărul scade semnificativ...
 Este bine să avem o listă cu cele mai folosite comenzi, să învățăm să citim manualul (man comandă, de exemplu man rm sau man touch, etc), nu știu sigur cum fac cei foarte avansați, dar eu citesc de multe ori manualele comenzilor, nu pot reține tot, important e să știm comanda și cam ce face ea, apoi manualul  sau ajutorul/ help (comandă -h sau comandă --help, de exemplu ls --help) ne va da opțiunile utile. REȚINEȚI: nu-i neapărată nevoie să știm toate comenzile pe de rost, important e să citim man și help, așa ne descurcăm! Asta nu înseamnă că nu trebuie să știm comenzile uzuale, de bază, de exemplu opțiunile managerului de pachete CLI (pacman, apt-get, urpmi, etc)!

 Tocmai mi-am amintit un subiect similar (http://forum.ubuntu.ro/viewtopic.php?id=11101), unde bravul @Pixelut (ieșean de-al meu, user de Ubuntu, fost user de Mandriva, un tip extrem de simpatic, adversar convins al CLI, contibutor la KDE, linuxist mult mai vechi ca mine, tip care demonstrează că poți folosi Linux numai din interfața grafică!) își exprima indignarea față de CLI. I-am răspuns cu o glumă, localizarea shell-ului, dar uneori mă gândesc că poate-ar fi o chestie interesantă pentru unii, crearea unor aliasuri de genul:
alias fădirector='mkdir'
alias dumă-n='cd'
alias arată='ls -al'
alias făfișier='touch'
 Dacă nici așa comenzile nu sunt intuitive și ușor de memorat... :(

 Ok, e o glumă, dar puteți vedea adaptabilitatea, puterea și complexitatea liniei de comandă, e o unealtă mult prea bună pentru a fi ignorată, sau mai rău, blamată!

3- Prea mult de tastat
 E adevărat că multe comenzi pot fi destul de lungi, pot avea multe argumente, obiectul ”țintă” poate avea un nume lung, dar există multe posibilități de-a ușura lucrul în terminal:
- aliasuri: putem crea în .bashrc aliasuri prescurtînd comenzile (alias tva="pactl set-card-profile 0 output:hdmi-stereo", alias ttyc='ffmpeg -f fbdev -r 30 -i /dev/fb0 tty-capt.avi', etc): http://stressat.blogspot.ro/2011/12/alias.html
- funcții bash: adăugate tot în .bashrc:  http://stressat.blogspot.ro/2011/12/functii-bash.html
- tasta Tab, așa cum arătam anterior;
- wildcard/ metacaractere (* înlocuiește orice/ oricâte caractere,? înlocuiește un caracter, etc: http://stressat.blogspot.ro/2011/09/metacaractere-wildcards.html
 O problemă comună, des întâlnită o reprezintă spațile din numele fișierelor. Soluția este simplă, scrierea numelui între " ("nume-fișier"= "Music/Videoclipuri/Whigfield - Sexy Eyes.mp4") sau ' ('nume-fișier'= 'Music/Videoclipuri/Whigfield - Sexy Eyes.mp4') sau adăugarea simbolului \ înainte de spații (Music/Videoclipuri/Whigfield\ -\ Sexy\ Eyes.mp4). Autocompletarea cu Tab funcționează și aici (și-n  orice situație...), deci dacă scriem 2-3 litere putem apăsa Tab și se va autocompleta numele dacă este o singură variantă sau ne vor fi prezentate toate variantele posibile, mai tatăm 2-3 caractere și apăsam iar Tab, etc.

4- Timpul îndelungat pentru realizarea unei sarcini
 Sigur că pentru începători poate dura ceva mai mult, dar un începător va căuta și-n meniu o aplicație pînă-i vine rău. Dacă mai știe cîte ceva va folosi un lansator gen krunner pentru rapiditate și ușurință.
 Ok, va porni aplicația dorită, mai rămâne să și facă ceva util cu aceasta, hai să vedem câteva exemple, sarcini uzuale.
  1- Screenshot
 GUI: krunner- ksnapshot- alege modul (ecran complet, fereastră, regiune dreptunghiulară, etc)- eventuala temporizare-  fă captură nouă- salvează în (alege locația, numele screenshotului). Ksnapshot are alocat implicit un hotkey, deci putem sări primii pași, dar nu și restul.
 CLI: scrot nume-screenshot.png, dacă vrem și temporizare folosim opțiunea -d număr-secunde (-d 3 va face captura după 3 secunde), eventual și -c (count, numărătoare), putem alege fereastra/ zona cu -s (selecție), putem crește calitatea cu -q (implicit e setată la 75, putem opta între 0-100). Wow, uite că au dreptate cei ce spun că-s prea multe opțiuni/ argumente, nu? Dacă folosim des o aplicație, să spunem scrot, vom crea un alias: alias scrot="scrot -q 100 -t 35". -t se referă la thumbnail (miniatură), putem avea imaginea la dimensiune normală și o miniatură (-t 25 = 25% din imagine, -t 50 = jumătate din dimensiunea imaginii, etc).
 Egalitate.
CLI 1-1 GUI

 2- Upload imagine pe web
GUI: deschidem un browser, intrăm pe http://imgur.com/, selectăm imaginea de pe calculator, așteptăm să se încarce.
CLI: imgurbash nume-imagine.
 CLI e mai rapid și simplu.
CLI 2-1 GUI
  
3- Conversie
 Să presupunem că dorim să convertim formatele câtorva fișiere, imagini, audio, video, etc.
 GUI: în interfața grafică putem folosi aplicații care trebuie căutate, deschise, verificate meniurile, opțiunile, căutate fișierele sursă, setat nume pentru fișierele convertite, aleasă locația unde vor fi salvate.
 CLI:
convert imagine.png imagine.jpg  (= conversie png> jpg) 
convert -resize 800x600 imagine1.png imagine2.png  (= redimensionare la 800x600)
ffmpeg -i fișier-video.avi fișier-video.mpg  (= conversie avi> mpg)
ffmpeg -i fișier-video.mkv fișier-audio.mp3  (= extragere stream audio dintr-un fișier video, astfel avem melodia respectivă în format .mp3)
Câștigă CLI.
CLI 3-1 GUI

ACTUALIZARE: după cum bine grăiește maestrul symbianflo în comentarii (mulțumesc pentru avertizare!), pentru a face conversiile sus- zise trebuie să aveți instalate anumite pachete precum imagemagick, ffmpeg, mencoder.

4- Ștergere/ mutare/ copiere
 Nu cred că doriți să aveți zeci sau sute de screeshoturi, deci le ștergeți sau eventual le mutați într-un director dedicat.
GUI: deschideți file managerul (Dolphin să zicem), bifați toate imaginile- clic dreapta- Remove (sau Shift- Del)- confirmați operația.
CLI:
rm *.png  (= ștergere)
mv *.png Pictures/Screenshots  (= mutare) 
 Cli e mai rapid.  
CLI 4-1 GUI

5- Creare directoare/ fișiere
GUI: Poate nu aveți directorul Screenshots din Pictures, poate nici măcar directorul Pictures, deci deschideți Dolphin- clic dreapta- crează director nou (Pictures)- intrați în noul director- clic dreapta- crează nou director- tastați numele Screenhots.
CLI: 
mkdir -pv Pictures/Screenshots  (crează ambele directoare, sau oricâte e nevoie, de exemplu mkdir -pv 1/2/3/4/5/6 va crea toate acele directoare, -p se referă la ”directoarele părinte”, -v vă va anunța crearea fiecărui director.
 Câștigă CLI.
 CLI 5-1 GUI


6- Navigare în/ între directoare/ fișiere
 Nu cunoașteți locația și numele exact al tuturor directoarelor și fișierelor deci folosiți managerul de fișiere, Dolphin, e mai simplu. Da, dar există și managere de fișiere CLI, mc, ranger, etc. Puteți naviga folosind tastele săgeți sau mouse-ul, puteți da dublu clic pentru a deschide un fișier sau Enter, este foarte similar cu un file manager grafic. Dacă setați bine mc sau ranger vor fi deschise fișiere audio, video, imagini, arhive, pdf-uri, text, linkuri la un simplu Enter sau clic stânga. Deci vizionarea unui film/ videoclip/ playlist sau ascultarea unor melodii este la fel de simplă.
http://stressat.blogspot.ro/2012/07/mc-midnight-commander.html
 Egalitate între GUI și CLI.
CLI 6-2 GUI
 
7- Administrare utilizatori
 Poate primele sarcini vi se par prea simple, hai să vedem ceva mai ”complicat” (pentru unii...), administrarea conturilor de utilizatori, adăugare, ștergere, redenumire, etc. Putem folosi aplicațiile grafice dedicate, kuser sau o simplă comandă.
GUI: Alt+F2- scriem kuser- punem parola de root- alegem dintre opțiuni creare, editare, ștergere- facem ceea ce dorim.
CLI: Adăugare cont utilizator:
useradd -m -g grup -G grupuri -s shell utilizator && passwd utilizator
useradd -m -g users -G root,local,video,audio,tty,wheel -s /bin/bash dan && passwd dan
Ștergere cont utilizator:
userdel -r utilizator
userdel -r dan 
Adăugare user într-un grup:
gpasswd -a utilizator grup
gpasswd -a dan vboxusers 
Crearea mai multor conturi simultan:
http://stressat.blogspot.ro/2012/08/adaugare-conturi-multiple-utilizatori.html
 CLI este din nou mai rapidă.
CLI 7-2 GUI


 MEA CULPA
 Mai sus am dat câteva exemple, am urmărit oarecum un anumit fir logic, de execuție, aș putea continua cu multe alte exemple (mplayer, nvlc, moc, youtube-viewer, tvmaxe-cli, etc), dar cred că-i suficient. După cum cred că v-ați prins, am ”trișat” puțin arătând punctul de vedere al unui utilizator mediu, nu al unui începător... Nu de alta, dar mulți n00bi unii începători nu se descurcă nici cu aplicațiile grafice prea grozav... :(
 Din punctul meu de vedere CLI câștigă detașat, din punctul de vedere al unui n00b GUI e mai intuitiv, rapid și simplu comparativ cu CLI, bănuiesc că adevărul e oarecum la mijloc, egalitatea între cele două, și evident că-n funcție de cunoștințe și preferințe fiecare are favoritul său!


 CONCLUZIE:
CLI și GUI nu sunt dușmani, sunt complementare, putem folosi una din ele sau pe amândouă după plac și după situație, dacă suntem într-un shell n-are rost să pornim Dolphin sau Audacious pentru a edita un fișier sau pentru a urmări un film sau asculta muzică, după cum dacă suntem în Dolphin n-are rost să deschidem un terminal pentru a edita un fișier pe care-l avem sub cursorul mouse-ului!
 Important e să folosim sistemul cât mai comod pentru noi și să-i lăsăm și pe ceilalți să facă la fel.
 Iar primirea suportului în linie de comandă este inevitabilă, să zicem că solicitantul folosește Unity, sau Gnome3, iar cel ce-i răspunde Kde sau Openbox, nu au amândoi aceleași aplicații, unelte, setări, etc (nu-i poți explica cum se face ceva în systemsettings sau Dolphin din moment ce el are Nautilus), dar linia de comandă este universal valabilă!

8 comentarii:

  1. in sfirsit shogunelu... chair asteptam un articol de genul asta...
    Citeva precizari:
    punctul3 conversii- ptr imagini se presupune ca ai imagemagick instalat si ptr filmate o aplicatie care face asta ( ffmpeg, mencoder etc).
    Si as mai face o corectie , de data asta la CONCLUZIE, corect CLI si GUI sint complementare , doar ca in lumea unix orice aplicatie are o interfata text, ( cu asta vin dezvoltate toate aplicatiile) si doar anumite aplicatii din astea vin distribuite si cu un GUI (nativ sau third party, nu conteaza aici), ce vreau sa zic e ca orice binar ,in linux are o interfata CLI, cit despre GUI numai parte din ele , sau unele chiar mai multe GUI-uri ptr acelasi binar in CLI, vezi cite GUI are ffmpeg, sau mplayer etc, deci e clar ca daca folosesti o aplicatie din interfata nativa ,ai o viteza si o precizie , si cind o folosesti cu un intermediar se schimba tot... intervine "middle-men"
    ceva de genul cumperi gaina direct din ograda tranului sau o iei din supermarket... cu aia dela taran trebuie
    sa muncesti un pic pina sa ai zama, dar cind ai invatat sa o pregatesti e mult mai buna si sanatoasa decit aia dela abator....

    RăspundețiȘtergere
    Răspunsuri
    1. Șefule, nu te supăra, io știu c-ai dreptate, dar încerc să vorbesc pe înțelesul userilor normali, că nu-s nebun să-mi închipui c-aș putea să spun ceva nou unor useri ca tine...
      Și (haotic cum e blogul meu...) fac chestii intenționate, aștept să-mi spună cineva: băi băiatule, you sucks, am dat comenzile tale și nu merg, huo! :D

      Că tinerii nu vor folosi consola e treaba (și paguba lor), dar unii chiar vin tare din spate!

      Ștergere
  2. https://plus.google.com/u/0/b/112715657133716462225/112715657133716462225/posts

    te-am adaugat si pe rosalinux.ro sper ca nu te superi ...

    RăspundețiȘtergere
    Răspunsuri
    1. Să trăiești șefule, mulțam, iaca mai trebe să pun o berică la datorie...

      Ștergere
  3. la ce e mai bun GUI?
    - web browser
    - editare text
    - editare media

    RăspundețiȘtergere
    Răspunsuri
    1. Shogun vrea sa fie diplomatic ...eu nu ... raspunsul la intrebarea ta e :
      LA NICI UNA DITRE OPTIUNILE MENTIONATE.
      Daca intrebai "care e mai usor de folosit ptr un utilizator incepator " atunci putem vorbi pina-i umplem blogul la shogunelu' :D

      Ștergere
  4. E bun la toate GUI, ca și CLI, eu le apreciez și le folosesc pe amândouă. :D

    RăspundețiȘtergere

Back to top