O interfata de linie de comanda (CLI) proceseaza comenzile catre un program de computer sub forma de linii de text. Programul care gestioneaza interfata se numeste interpret de linie de comanda sau procesor de linie de comanda. Sistemele de operare implementeaza o interfata de linie de comanda intr-un shell pentru acces interactiv la functiile sau serviciile sistemului de operare.
Un astfel de acces a fost furnizat in primul rand utilizatorilor de terminale de calculator, incepand cu mijlocul anilor 1960 si a continuat sa fie utilizat pe parcursul anilor 1970 si 1980 pe sistemele VAX / VMS, sistemele Unix si computerele personale, inclusiv DOS, CP / M si Apple DOS.
Astazi, multi utilizatori se bazeaza pe interfete grafice de utilizator si interactiuni bazate pe meniu. Cu toate acestea, este posibil ca unele sarcini de programare si intretinere sa nu aiba o interfata grafica cu utilizatorul si sa foloseasca in continuare o linie de comanda.
Alternative la interfata liniei de comanda includ meniurile interfetei de utilizator bazate pe text (de exemplu, IBM AIX SMIT), comenzile rapide de la tastatura si diverse comenzi pentru desktop centrate pe pointer (de obicei controlate cu un mouse). Exemple de acest lucru includ Microsoft Windows, DOS Shell si Mouse Systems PowerPanel.
Interfetele de linie de comanda sunt adesea implementate in dispozitivele terminale care sunt, de asemenea, capabile de interfete de utilizator orientate pe ecran, care utilizeaza adresarea cursorului pentru a plasa simboluri pe un ecran de afisare.
Programele cu interfete de linie de comanda sunt in general mai usor de automatizat prin scriptare.
Multe sisteme software implementeaza interfete de linie de comanda pentru control si operare. Aceasta include medii de programare si programe utilitare.
Comparatie cu interfetele grafice de utilizator
In comparatie cu o interfata grafica pentru utilizator, o interfata de linie de comanda necesita mai putine resurse de sistem pentru a fi implementata. Deoarece optiunile pentru comenzi sunt date in cateva caractere in fiecare linie de comanda, un utilizator experimentat poate gasi deseori optiunile mai usor de accesat.
Automatizarea sarcinilor repetitive este simplificata prin editare de linii si mecanisme pentru stocarea secventelor utilizate frecvent; aceasta se poate extinde la un limbaj de scriptare care poate lua parametri si optiuni variabile. Se poate pastra un istoric al liniei de comanda, permitand revizuirea sau repetarea comenzilor.
Un sistem de linie de comanda poate necesita manuale pe hartie sau manuale online pentru referinta utilizatorului, desi adesea o optiune „ajutor” ofera o revizuire concisa a optiunilor unei comenzi. Este posibil ca mediul din linia de comanda sa nu ofere imbunatatiri grafice, cum ar fi diferite fonturi sau ferestre de editare extinse gasite intr-o interfata grafica.
Poate fi dificil pentru un utilizator nou sa se familiarizeze cu toate comenzile si optiunile disponibile, in comparatie cu pictogramele si meniurile derulante ale unei interfete grafice de utilizator, fara referiri repetate la manuale.
Interfete din linia de comanda a aplicatiei
Programele de aplicatii (spre deosebire de sistemele de operare) pot avea, de asemenea, interfete de linie de comanda.
- Parametri: Majoritatea sistemelor de operare accepta un mijloc de a transmite informatii suplimentare unui program atunci cand este lansat. Cand un program este lansat dintr-un shell din linia de comanda a sistemului de operare, textul suplimentar furnizat impreuna cu numele programului este transmis programului lansat.
- Sesiuni interactive de linie de comanda: Dupa lansare, un program poate oferi operatorului un mijloc independent de a introduce comenzi sub forma de text.
- Comunicare intre procese: Majoritatea sistemelor de operare accepta mijloace de comunicare intre procese (de exemplu, fluxuri standard sau conducte denumite). Liniile de comanda din procesele client pot fi redirectionate catre un program CLI printr-una dintre aceste metode.
- Unele aplicatii accepta doar o CLI, prezentand un prompter CLI utilizatorului si actionand pe liniile de comanda pe masura ce sunt introduse. Alte programe accepta atat un CLI, cat si un GUI. In unele cazuri, o interfata grafica este pur si simplu o imagine creata in jurul unui fisier executabil CLI separat. In alte cazuri, un program poate furniza un CLI ca alternativa optionala la GUI-ul sau. CLI-urile si interfetele grafice accepta adesea functionalitati diferite. De exemplu, toate caracteristicile MATLAB, un program de computer de analiza numerica, sunt disponibile prin CLI, in timp ce MATLAB GUI expune doar un subset de caracteristici.
- Primele jocuri Sierra, cum ar fi primele trei jocuri King’s Quest (1984–1986), foloseau comenzi dintr-o linie de comanda interna pentru a muta personajul in fereastra grafica.
Istorie
Interfata liniei de comanda a evoluat dintr-o forma de dialog realizata odata de oameni prin intermediul masinilor de teleimprimare (TTY), in care operatorii umani au schimbat informatii de la distanta, de obicei cate o linie de text la un moment dat. Primele sisteme informatice foloseau adesea masinile de teleprinter ca mijloc de interactiune cu un operator uman.
Calculatorul a devenit un capat al modelului de teleimprimanta de la om la om. Deci, in loc ca un om sa comunice cu un alt om prin intermediul unei teleimprimante, un om a comunicat cu un computer.
Teleimprimanta mecanica a fost inlocuita cu un „tty de sticla”, o tastatura si un ecran care emuleaza teleprinterul. Terminalele „inteligente” permiteau functii suplimentare, cum ar fi deplasarea cursorului pe intregul ecran sau editarea locala a datelor de pe terminal pentru transmiterea catre computer.
Pe masura ce revolutia microcomputerelor a inlocuit arhitectura traditionala – minicomputer + terminale – de partajare a timpului, terminalele hardware au fost inlocuite de emulatoare de terminale – software pentru PC care interpretau semnalele terminale trimise prin porturile seriale ale computerului.
Acestea au fost de obicei utilizate pentru a interfata noile PC-uri ale unei organizatii, cu computerele lor mini sau mainframe existente sau pentru a se conecta la PC. Unele dintre aceste computere ruleaza software-ul Buletin Board System.
CLI-urile timpurii ale sistemului de operare au fost implementate ca parte a programelor de monitorizare rezidente si nu au putut fi inlocuite cu usurinta. Prima implementare a shell-ului ca componenta inlocuibila a facut parte din sistemul de operare Multics de partajare a timpului.
In 1964, Louis Pouzin, membru al personalului Centrului de calcul al MIT, a dezvoltat instrumentul RUNCOM pentru executarea scripturilor de comanda, permitand in acelasi timp substituirea argumentelor. Pouzin a inventat termenul „shell” pentru a descrie tehnica utilizarii comenzilor precum un limbaj de programare si a scris o lucrare despre cum se poate implementa ideea in sistemul de operare Multics.
Pouzin s-a intors in Franta natala in 1965, iar primul shell Multics a fost dezvoltat de Glenda Schroeder.
Primul shell Unix, shell-ul V6, a fost dezvoltat de Ken Thompson in 1971 la Bell Labs si a fost modelat dupa Shroeder’s Multics shell. Shell-ul Bourne a fost introdus in 1977 ca inlocuitor pentru shell V6.
Desi este utilizat ca interpret interactiv de comanda, a fost conceput si ca limbaj de scriptare si contine majoritatea caracteristicilor care sunt considerate in mod obisnuit necesare pentru a produce programe structurate. Bourne a dus la dezvoltarea KornShell (ksh), a Almquist (cenusa) si a popularului shell Bourne-again (sau Bash).
Microcomputerele timpurii se bazau pe o interfata de linie de comanda, cum ar fi CP / M, DOS sau AppleSoft BASIC. In anii 1980 si 1990, introducerea Apple Macintosh si a Microsoft Windows pe PC-uri a acceptat interfata liniei de comanda ca fiind interfata principala a utilizatorului inlocuita de Interfata grafica pentru utilizator.
Linia de comanda a ramas disponibila ca o interfata de utilizator alternativa, adesea utilizata de administratorii de sistem si de alti utilizatori avansati pentru administrarea sistemului, programarea computerelor si procesarea in serie.
In Noiembrie 2006, Microsoft a lansat versiunea 1.0 a Windows PowerShell (denumita anterior Monad), care combina caracteristicile shell-urilor traditionale Unix cu propriul lor cadru .NET orientat spre obiect. MinGW si Cygwin sunt pachete open-source pentru Windows care ofera o CLI de tip Unix. Microsoft furnizeaza implementarea ksh a MKS Korn pentru Windows prin programul de completare Servicii pentru UNIX.
Din 2001, sistemul de operare Macintosh macOS se bazeaza pe un sistem de operare asemanator Unix, numit Darwin. Pe aceste computere, utilizatorii pot accesa o interfata de linie de comanda asemanatoare Unix executand programul terminal emulator numit Terminal, care se gaseste in sub-folderul Utilitati din folderul Aplicatii sau conectandu-se de la distanta la aparat, folosind ssh. Z shell este shell-ul implicit pentru macOS; bash, tcsh si KornShell sunt, de asemenea, furnizate. Inainte de macOS Catalina, bash era implicit.
Utilizare
O CLI este utilizata ori de cate ori un vocabular mare de comenzi sau interogari, impreuna cu o gama larga (sau arbitrara) de optiuni, poate fi introdus mai rapid ca text decat cu un GUI pur. Acesta este de obicei cazul cu shell-urile de comanda ale sistemului de operare.
CLI-urile sunt utilizate si de sistemele cu resurse insuficiente pentru a suporta o interfata grafica cu utilizatorul. Unele sisteme de limbaj computerizat (cum ar fi Python, Forth, LISP, Rexx si multe dialecte ale BASIC) ofera un mod interactiv de linie de comanda pentru a permite evaluarea rapida a codului.
CLI-urile sunt adesea folosite de programatori si administratori de sisteme, in medii ingineresti si stiintifice si de catre utilizatori de calculatoare personale avansate din punct de vedere tehnic. CLI-urile sunt, de asemenea, populare in randul persoanelor cu dizabilitati vizuale, deoarece comenzile si raspunsurile pot fi afisate folosind afisaje Braille reimprospatabile.