# Komando lerroko interfaze

Komando lerroko interfazea (ingelesez, eta nazioartean oso hedatua, command-line interface, CLI) erabiltzaile bati testu-lerro baten bidez programa informatiko bati aginduak ematea ahalbidetzen dion metodoa da. CLI, shell eta terminal-emuladore kontzeptuak ez dira gauza bera; CLI metodo bat da, beste biak, berriz, programa informatikoak dira.
CLIak erabili ohi dira interaktiboki testu sarrera batean edo modu askoz automatizatu batean (batch fitxategia) instrukzioak idazteko eta script fitxategi batetik ordenak irakurtzeko. Interfaze hau konputazioaren ia hasieratik existitzen da eta hura baino zaharragoak soilik txartel zulatuak eta antzeko mekanismoak daude. Programa eta sistema eragile eta funtzionalitate desberdinentzako existitzen dira.
CLIaren kontrako alderdia erabiltzaile-interfaze grafikoa (GUI) da. GUIak hobetutako estetika eta sinplifikazioa handiagoa eskaintzen ditu, errekurtso konputazionalen kontsumo handiagoa eta funtzionalitate eskuragarriaren murrizketa eraginez. Halaber, zaurgarritasun handiagoko arazoa agertzen da bere konplexutasunaren ondorioz.
CLIak programatzaile eta sistema administratzaile askorengandik erabiltzen dira lehen mailako erreminta bezala zientziako eta ingenieriako ingurunetan, bereziki Unix-en oinarritutako sistema eragileetan.

## Historia

Konputagailuen lehen urteetan, 60ko hamarkadan, eta mainframes deituriko konputagailuen aroan zehar, exekuzioen kontrola toki espezifiko batetik egiten zen, zeinetik administratzaileak zuzenenean makina maneiatzen zuen. Aginduak teklatuan idazten ziren eta erantzuna paperean inprimatuta jasotzen zen.
Teletipoetan oinarritutako sistema hauek konputagailuekin elkar eragiteko modu eraginkor bati hasiera eman zioten: testu-lerro sinpleak.
1970eko hamarkadaren hasieran Unix sistema eragilearen etorrerarekin, komando lerroaren erabilera estandar bihurtu zen. Kanalizazio-hodietan oinarritutako exekuzio arauak, fitxategiak filtratzea komodinak erabiliz eta testu interfazeak sortzea ahalbidetzen zuten funtzionalitate guztiak kanonizatu ziren. Ondoren etorri ziren sistema eragileak (CP/M, DOS) ezaugarri horiek berezko gisa hartu zituzten.
Ordenagailu pertsonalaren ezagutaraztearekin 1980ko hamarkadan, aplikazioak agertoki berri batean sartu ziren, non sistemako baliabideak ez ziren beste erabiltzaileekin partekatu behar. Erabiltzaile bakoitzak bere makina zuen eta horrekin modu askoz pertsonalizatuagoan aritzen zen. Apple-k eta ondoren Microsoft-ek arrakastaz abian jarri zituzten Alan Kay-k eta bere PARC taldeak garatutako kontzeptu bisual guztiak ustiatzen zituzten sistemak. Sistema hauek interfaze grafiko bat garatu zuten non ordenagailua sagu baten bidez kontrolatzen zen.
Orain arte, GUIak interfaze nagusi gisa jarraitzen dute eta CLIak bigarren mailako interfaze gisa. Hala ere, Alan Kay doktoreak "interfaze mota berri bat garatzea" beharrezkoa dela esan zuen gizakien eta ordenagailuen arteko harremana optimizatzeko.

## Funtzionamendua

Bere formarik sinplenean, CLIa aginduak idatzi daitezkeen eremu bat da (normalean, prompt batekin adierazita). Erabiltzaileak agindu bat tekleatu eta exekutazten du hurrengo lerrora pasatzeko, Enter edo Intro tekla sakatuz. CLIari emandako aginduak forma hauek dituzte maiz:
PROMPT>aplikazioa [parametroak] fitxategiak edo URIa...
Amaitzerakoan eta agindua ematerakoan Sartu (Enter edo Intro) tekla sakatuz, aginduak interpretatzen duen modulu batek jasotako karakteretako sekuentzia analizatzen du eta, aginduaren sintaxia egokia bada, agindua programaren testuinguruaren edo kokatuta dagoen sistema eragilearen barruan exekutatzen du. Lan mota hau sekuentziala da eta pausoz pausoko programazio mota baten baliokidea da.
Erabiltzaileak bere argibideen prozesatzea ekintza moduan hautematen du. Erabiltzaileari prozesatze informazio hori testu sinple moduan bidaltzen bazaio, irteera estandarra edo «stdout» deitzen zaio. Erabiltzaileak testuen akatsen txostena ere jaso dezake «stderr» deituriko kanal espezializatu batean. Ia shell guztiek "stdout" eta "stderr"-en bistaratzea gailu berean inplementatzen dituzte, kasu gehienetan pantaila.
Scriptak erabiltzea ere posible da, hau da, gordetako argibideak dituzten fitxategiak momentuan idazten ariko balira bezala. Errore kasuan, scriptaren exekuzioa bertan behera utzi daiteke. Modu honetan, komando lerroa prompt-arekin borrokatu gabe eta monitore edo teklatuaren aurrean egon gabe erabili daiteke.

## Inplementazioa

Ia edozein programa diseinatu daiteke erabiltzaileari nolabaiteko instrukzio interpretatzailea eskaintzeko. Adibidez, PCko lehen pertsonako bideo-joko batzuek agindu-interprete bat integratua dute, «kontsola» bezala ezagututa (ez da bideokontsolarekin nahastu behar), diagnostikorako eta administrazio lanetarako erabiltzen dena. Quake, Unreal Tournament, Ragnarok Online edo Battlefield dira adibide batzuk. Batzuetan, bide bakarra arazoak konpontzeko kontsola da.
Sistema eragile baten kernelarekin elkar eragiten duen programa bati buruz hitz egiten denean, maiz shell izendatzen da. Adibide batzuk Unix-en shell osagarriak dira, CP/M historikoa, eta DOSaren command.com, azken bi hauek RSTS eta RSX-11 CLIetan oinarritzen dira, DECaren PDP-11 sistema eragileak. Windows Vista sistema eragileak Windows PowerShell izeneko CLI bat agintzen zuen, zeinek Unix-en shell tradizionalen ezaugarriak konbinatzen zituen .NET objektuetara bideratutako frameworkarekin. Garapen hau berez ez zen integratu sistema eragilean, batez ere bere hasierako segurtasun arriskuak zirela eta.
Interpretatutako lengoaien inplementazioek ere CLIan oinarritutako lan-ingurunea eskaintzen dute. Leku hauetan, makina birtualaren instantzia bat sortzen da erabiltzailearekin elkarreragiteko.
Aplikazio batzuek bai CLI bat bai GUI bat eskaintzen dute. Adibide bat CADaren AutoCAD programa da. Zenbakizko informatikaren Matlab paketeak ez du GUIrik ematen kalkulu batzuentzako, baina CLIak edozein kalkulu egiteko gai da. Hiru dimentsiotako modelaziorako Rhinoceros 3D programak CLI bat ematen du. Ingurune informatiko batzuetan, hala nola Smalltalk edo Oberon erabiltzaile interfazean, pantailan agertzen den testu gehiena aginduak emateko erabil daiteke.

## Interakzio adibideak

Fitxategiak zerrendatzeko argibideak hainbat ingurutan:
| Programa edo sistema eragilea | Agindua | Programa mota |
| Bourne | ls | Unix Shell |
| CMD | dir | Windows Shell |
| NewShell | list o dir | AmigaDOS (AmigaOS/MorphOS/AROS shell) |
| Matlab | dir | Prozesatze matriziala |
| Quake | /dir | PCarentzako bideo-jokoa |
| TACL | FILEINFO | Guardián Shell |
| Python Shell | os.listdir('.') | Python, maila altuko programazio-lengoaia |

## Kanpo estekak

* Datuak: Q189053
* Multimedia: Command-line interface / Q189053