mediul de programe unix: descrieri, exemple.
duminică, 24 iun. 2012, 17:32
Un aspect pe care l-am omis când am analizat interacțiunea cu calculatoarele ca act de comunicare este acela că modul text are și el interfețele lui pseudo-grafice. Astfel pentru a distinge între linia de comandă și interfețele text folosim sintagma „Text-User Interface” sau TUI. Acestea sunt prezente în lumea calculatoarelor încă de la începuturile acesteia, fiind incluse și în DOS și Windows {1,2,3}.0 [i], având însă un grad mare de răspândire în lumea *nix.
Povestea pleacă de la faptul că la un moment dat a existat nevoia ca terminalele virtuale să fie independente de mașina fizică pe care rulează. Astfel au apărut bibliotecile terminfo și termcap, peste care au fost dezvoltate curses și mai apoi ncurses. Ultimele două au un API care îl ajută pe programator să aranjeze textul și să deseneze chestii cum dorește dânsul, dând astfel naștere unei interfețe care să fie mai intuitivă pentru utilizator decât CLI-ul.
Ceea ce mulți utilizatori Unix [ii] nu știu sau nu vor să știe e că traiul zilnic poate fi dus la fel de bine înafara modului grafic, ceea ce e mai ales util în cazul în care nu vrem să fim deranjați de chestii frumos colorate. Prin urmare vom purcede la a face o listă a programele de bază care alcătuiesc sau pot alcătui după pofte și nevoi mediul zilnic al unui utilizator Unix – cu mențiunea că unele din ele s-ar putea să fie disponibile decât pe GNU/Linux, din motivul că utilizatorii de BSD sunt probabil prea preocupați să-și miroasă bășinile pentru a le porta; glumesc, dar adevărul e pe undeva prin zonă.
1. Shell-ul
Shell-ul este acel program care definește o interfață între utilizator și sistemul de operare, interfață cu ajutorul căruia utilizatorul poate apela alte utilitare, cum ar fi ls
sau ps
sau orice alt program exemplificat mai jos. Echivalentul său în modul grafic e explorer-ul din Windows sau Gnome Shell/Nautilus din Gnome. Majoritatea shell-urilor sunt bazate pe Bourne shell, cel mai cunoscut derivat al acestuia fiind bash
.
Puteți însă la fel de bine să folosiți csh
, ksh
, zsh
, tcsh
sau dash
. Multe din ele sunt instalate implicit pe diverse varietăți de Linux sau BSD și sunt mai mult sau mai puțin portabile față de sh
-ul original. Fiecare din ele are dezavantaje și avantaje în care nu are rost să intrăm, variind de la consumul de resurse la expresivitatea scripting-ului, însă cel mai important e că toate permit automatizarea.
Dacă vreți să vă bateți cuie în talpă puteți firește să folosiți Python, Ruby sau GHCi ca shell.
O extensie importantă a shell-ului – care poate eventual să devină indispensabilă – este multiplexorul de terminale. Cu alte cuvinte shell-ul poate fi lansat din cadrul unor aplicații precum GNU screen sau mai nou tmux, care permit chestii gen split-uri și ferestre, plus alte funcționalități extrem de utile [iii]. Uitați astfel de workspace-uri, tab-uri și ferestre, multiplexorul de terminal e baza.
2. Editorul text
Acesta e al doilea ca importanță în mediul Unix, dat fiind faptul că în Unix majoritatea chestiilor care fac sistemul să meargă se bazează pe fișiere text, adicătelea text pur, nu documente Word sau alte tâmpenii. nano e un editor foarte simplu în mod text. vi/vim sunt mai puternice și pot eventual fi scriptate dar au o curbă de învățare mai abruptă.
GNU emacs e un exemplu demn de propriul paragraf deoarece e un sistem de operare superb și tot ce-i mai lipsește e un editor text decent. xkcd numărul 378 descrie mai bine filosofia din spatele emacs.
3. Clientul de mail
Dacă existați pe această lume atunci e foarte probabil că trimiteți și citiți mail-uri. Dacă folosiți exclusiv mail-uri în format HTML, atunci părăsiți imediat acest articol. Altfel puteți folosi ceva de genul pine sau mutt. Dacă folosiți emacs ca editor text, atunci probabil că v-ar interesa gnus.
A se nota că clientul de mail e doar un shell. El nu se ocupă efectiv de trimiterea și primirea mail-urilor, ci se folosește de alte programe pentru a putea face asta. De obicei distribuțiile îl interfațează automat cu sendmail
, iar citirea IMAP-ului se face direct prin conectare la server sau local prin folosirea unor unelte cum ar fi offlineimap
. Poate face eventual fetch la mail-uri dintr-un cont POP3, dar astea-s deja detalii.
4. Clienții de chat, web și alte bălării
Pentru IRC și eventual XMPP veți dori să folosiți irssi sau weechat, cel din urmă lăudându-se pe bună dreptate cu un sistem de plugin-uri și script-uri foarte tare. Dacă doriți să folosiți Yahoo puteți eventual să încercați libpurple
împreună cu varianta text a lui Pidgin, adică Finch. Dacă folosiți emacs, atunci probabil că v-ar interesa ERC.
Pentru web aveți la dispoziție lynx, links sau elinks. Nu știu exact care-s diferențele între cele trei și îmi e prea lene să caut, cert e că oricare din ele merge pentru pagini normale de web. Dacă folosiți emacs, atunci să vă fie de bine. Adică cu alte cuvinte puteți încerca Emacs/W3.
Alte bălării ar putea include un player de muzică cum ar fi mpd sau cmus sau eventual niște jocuri. Dacă vreți Diablo atunci duceți-vă pe Windows, pentru că în caz că nu știați bunicul lui Diablo se numește nethack și are interfață ASCII. Dar serios, dacă vreți ceva mai grafic mai bine renunțați la ideea modului text.
Similar pentru filme, dacă vreți să vă sângereze ochii puteți încerca mplayer
cu libcaca. Sau alternativ startx cu VLC sau orice alt media player care vă coafează.
Pentru și mai multe bălării vedeți mai jos.
5. Utilitarul de gestiune a pachetelor
În caz că folosiți o distribuție apărută în ultimii ani cel mai probabil că aveți instalat în sistem un program care face management-ul pachetelor software. Gentoo are Portage, Debian are dpkg cu frontend-ul Apt, Ubuntu la fel ca Debian, Arch Linux are Pacman, Fedora și Red Hat au Yum care-i un frontend pentru RPM iar (open)SUSE are YaST, care-i un fel de struțo-cămilă.
Fiecare din acestea poate fi folosit pentru căutarea de programe noi (în mod text sau grafice) care să vă ajute la rezolvarea diverselor probleme pe care le mai aveți voi. De obicei dacă ați ajuns să folosiți modul text e posibil să aveți nevoie de un compilator sau de un program care automatizează compilarea proiectelor, de utilitare low-level care se ocupă cu interfațarea de drivere și/sau dispozitive și așa mai departe. E foarte posibil să găsiți un astfel de program căutând cu package manager-ul, dacă nu vine instalat cu sistemul de bază.
Post Scriptum
Înainte să îmi aduceți argumente de forma „căcenevoieameu”, citiți încă o dată despre interacțiunea om-mașină ca act de comunicare. Mai mult, am exemplificat mai sus doar câteva din nevoile pe care o interfață în mod text nu le poate satisface. Plus că eu nu bag nimic pe gât nimănui, doar prezint alternative.
Dar ascultați-mă când vă zic că se poate să ajungeți în situația în care sunteți undeva departe și aveți o conexiune la Internet și tot ce puteți face e să deschideți un shell ssh undeva pe o mașină familiară vouă iar dacă nu aveți astea la îndemână ați căcat steagul. Dar le veți avea, și atunci îmi veți mulțumi că v-am deschis ochii. Sau nu.
- Care-i de fapt un TUI foarte împopoțonat și cu suport mai bun pentru mouse. [↩]
- Adică inclusiv de Linux, chiar dacă Linux e prin definiție „not Unix”. [↩]
- Spre exemplu sesiunile pot fi efectiv detașate de terminal, similar cu apăsarea CTRL + Z. [↩]
Comentariile sunt dezactivate.
Comments
Tare referința la Emacs. I loled. Mă întorc să citesc restul 😀
«Dacă folosiți exclusiv mail-uri în format HTML, atunci părăsiți imediat acest articol.» =))
Genial 😀
Na, păi m-am gândit că ar trebui să am bunul simț de a-i avertiza pe cititorii neinteresați de subiect că n-o să găsească Α și Ω aici. E doar un cu totul alt stil de utilizare al calculatoarelor, pe care unii indivizi s-ar putea să-l găsească mai potrivit. 🙂
Cam ce avantaj întrevezi? Cum faci multitasking?
Avantaje: consum redus de putere, interfață mult simplificată la nivel vizual, fără briz-briz-uri, productivitate mult crescută pentru unele task-uri. Îți asiguri un minim necesar pentru a face chestii, nu mai mult.
Am explicat mai sus cum poți face multitasking: tmux și screen sunt două multiplexoare de terminal care îți permit rularea de aplicații în paralel. În plus multă lume uită de terminalele disponibile implicit, accesibile prin Ctrl+Alt+Fi, unde i = 1..6 sau pe acolo (pot fi reconfigurate după nevoi cel mai probabil în inittab).
Recomand următorul articol despre xmonad pentru o înțelegere mai bună a filosofiei din spate, chiar dacă xmonad e un manager de ferestre în X11 și nu un utilitar pur text.
Bineînțeles, mai e și o chestie pur legată de preferințe: unii utilizatori preferă să nu dea click-uri.
Pentru a merge un pic mai departe cu raționamentul, menționez că tmux e o adevărată bijuterie pentru sesiunile remote. Poți lejer să faci o sesiune peste ssh pe alt calculator, iar dacă vrei să îți lași apoi programele deschise și să revii mai încolo, nu te oprește nimic. Pe mine m-a ajutat oarecum și offline, într-o vreme când aveam instalat un server X11 instabil și care crăpa destul de aleator. Surpriza e dată de faptul că sesiunile mele de tmux rămâneau bine mersi active, muzica rula în continuare și puteam să mă întorc la vim fără probleme.
În plus chestia cu sesiunile la distanță facilitează într-o oarecare măsură și lucrul colaborativ, având în vedere că tmux e doar un server la care se pot conecta mai mulți utilizatori din sistem. Mie mi se pare foarte puternică funcționalitatea, în rest fiecare decide dacă-i ajută cu ceva.
O scurtă elaborare asupra subiectului „de ce mail-urile în format HTML sunt la fel de rele ca ciuma” poate fi găsită pe techrepublic. Argumentele aduse acolo pot fi discutate, cert fiind că exemplul dat e destul de bun.
[…] muncitor încât să stau să explic omului pas cu pas, amănunțit, cum să își construiască un mediu de programe, Interneții oricum dând pe dinafară de așa ceva. Și nu numai asta, dar trăiesc cu nădejdea […]