Está en la página 1de 104

Cursul 6

Interfat, a ı̂n linia de comandă

Utilizarea Sistemelor de Operare (USO)


13 noiembrie 2015

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 1/56


Moto

It was a mistake to think that GUIs ever would, could, or even


should, eliminate CLIs.

Jeffrey Snover (Architect of Windows PowerShell)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 2/56


Sistem de fis, iere, utilizatori, procese

proces ier

program utilizator lename


name
username

utilizator

kernel
uid uid uid

pid inode

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 3/56


Prehistoric File System

http://crazyhyena.com/funny-file-system-is-the-prehistoric-google_en

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 4/56


Suport de curs

I Suport (Introducere ı̂n sisteme de operare)


I Capitolul 12 – Shell scripting
I Sect, iunile 12.1, 12.2, 12.6, 12.7

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 5/56


Cuprins

Nevoia de CLI

Interfat, a cu utilizatorul

Interfat, a ı̂n linia de comandă

Shell

Facilităt, ile unui shell

Utilizare avansată a shell-ului

Sumar

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 6/56


Ana urmăres, te opt, iuni cu care să-s, i perfect, ioneze abilităt, ile

I dores, te să folosească eficient sistemul


I dores, te să aibă competent, e de folosire a unui sistem
independente de sistemul de operare/distribut, ie
I dores, te să administreze sisteme de la distant, ă
I dores, te să administreze o ret, ea complexă, cu echipamente de
ret, ea dedicate
I dores, te să proiecteze componente ı̂n AutoCAD
I dores, te să realizeze prelucrări numerice s, i statistice (Matlab,
Octave, R)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 7/56


Solut, ia este CLI. De ce?

I CLI: Command Line Interface

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 8/56


Solut, ia este CLI. De ce?

I CLI: Command Line Interface


I oferă opt, iuni de a rula rapid comenzi (combinat, ii de taste,
istoric de comenzi, completare automată)
I se pot ı̂nlănt, ui comenzi pentru a obt, ine funct, ionalităt, i noi
I se pot automatiza rapid act, iuni folosind scripting (shell
scripting este compus din comenzi shell)
I majoritatea comenzilor sunt independente de distribut, ie,
funct, ionează la fel pe Unix-uri (Linux, Mac OS X, FreeBSD,
Android)
I flexbilitate maximă: o opt, iune nouă ı̂n linia de comandă
pentru o funct, ionlitate nouă
I foarte multe aplicat, ii oferă interfat, ă ı̂n linia de comandă
I unele aplicat, ii oferă doar interfat, ă ı̂n linia de comandă
I pentru administrare de la distant, ă: servere, echipamente
dedicate
Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 8/56
Unde foloses, te Ana CLI?

I shell-ul unui sistem de operare, fie local, fie la distant, ă


I aplicat, ii dedicate: Matlab, R, Python, AutoCAD
I console de jocuri
I echipamente de ret, ea dedicate

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 9/56


Cuprins

Nevoia de CLI

Interfat, a cu utilizatorul

Interfat, a ı̂n linia de comandă

Shell

Facilităt, ile unui shell

Utilizare avansată a shell-ului

Sumar

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 10/56


De ce interfat, ă cu utilizatorul?

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 11/56


De ce interfat, ă cu utilizatorul?

I mod de interact, iune cu sistemul


I ascunderea complexităt, ii sistemului
I componente puse la dispozit, ia utilizatorului
I intuitiv, us, or de folosit

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 11/56


Cerint, e pentru interfat, ă cu utilizatorul

I us, urint, ă ı̂n utilizare (ease of use)


I eficient, a ı̂n utilizare
I acomodarea rapidă: intuitivă, naturală, să nu suprindă
I să ofere acces la resurse aplicat, iei/sistemului

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 12/56


Interfat, a cu utilizatorul

I interact, iunea utilizatorului cu aplicat, iile s, i cu sistemul de


operare
I ascunde detaliile sistemului de operare
I interact, iunea cu sistemul de calcul
I Human Machine Interface
I GUI – Graphical User Interface
I WIMP (window, icon, menu, pointing device)
I touchscreen
I CLI – Command Line Interface
I execut, ia de comenzi pentru ı̂ndeplinirea sarcinilor

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 13/56


De ce GUI?

I eye-candy
I us, or de folosit, intuitivă
I ascunderea complexităt, ii
I personalizabilă (customizable)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 14/56


De ce CLI?

I consecventă, arată peste tot la fel


I eficientă
I us, or de adăugat o opt, iune nouă
I un argument fat, ă de un buton nou
I automatizarea sarcinilor
I resurse consumate reduse

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 15/56


Cazuri de utilizare GUI s, i CLI

I GUI
I multimedia
I grafică 3D
I jocuri
I Internet browsing
I CLI
I administrare sistem: utilizatori, sistem de fis, iere, ret, ea, procese
I scripting/automatizare, eficientizare
I aplicat, ii s, i dispozitive dedicate
I ı̂n general vom folosi ambele tipuri de interese, depinzând de
nevoie

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 16/56


Cuprins

Nevoia de CLI

Interfat, a cu utilizatorul

Interfat, a ı̂n linia de comandă

Shell

Facilităt, ile unui shell

Utilizare avansată a shell-ului

Sumar

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 17/56


Exemple de CLI

I consola GRUB (bootloader)


I consola Python
I consola de configurare de echipamente de ret, ea (Cisco IOS,
Juniper JunOS)
I consola Matlab, AutoCAD, R
I consolă de jocuri (FPS)

Consola Python
user@host$ python
Python 2.7.8 (default, Oct 7 2014, 17:59:21)
[GCC 4.9.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 4**9
262144
>>> hex(157)
’0x9d’
>>> 0x9d
157

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 18/56


Cum arată o interfat, ă ı̂n linia de comandă?

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 19/56


Cum arată o interfat, ă ı̂n linia de comandă?

I prompt
I poate fi un caracter precum $, %, #, >
I la prompt se introduc comenzi

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 19/56


Cum arată o interfat, ă ı̂n linia de comandă?

I prompt
I poate fi un caracter precum $, %, #, >
I la prompt se introduc comenzi
I comenzile sunt s, iruri de caractere

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 19/56


Cum arată o interfat, ă ı̂n linia de comandă?

I prompt
I poate fi un caracter precum $, %, #, >
I la prompt se introduc comenzi
I comenzile sunt s, iruri de caractere
I numele comenzii oferă intuit, ie legat de ce face comanda

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 19/56


Cum arată o interfat, ă ı̂n linia de comandă?

I prompt
I poate fi un caracter precum $, %, #, >
I la prompt se introduc comenzi
I comenzile sunt s, iruri de caractere
I numele comenzii oferă intuit, ie legat de ce face comanda
I comenzile pot avea argumente (opt, iuni pentru comandă)
I argumentele se separă prin spat, ii

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 19/56


Funct, ionare linie de comandă

I depinzând de linia de comanda, este posibil un pas de


autentificare
I se introduce comanda s, i argumentele
I se apasă ENTER
I interpretorul de comenzi analizează comanda s, i execută o
act, iune
I interpretorul de comenzi face act, iunea dictată de comandă

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 20/56


Facilităt, i CLI

I command completion
I ajutor, documentare
I istoric de comenzi
I scurtături de taste pentru editare rapidă de comenzi: s, terge
cuvânt, mergi la ı̂nceput de comandă etc.

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 21/56


Cuprins

Nevoia de CLI

Interfat, a cu utilizatorul

Interfat, a ı̂n linia de comandă

Shell

Facilităt, ile unui shell

Utilizare avansată a shell-ului

Sumar

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 22/56


Shell

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 23/56


Shell

I aplicat, ie care permite accesul la resursele sistemului de operare

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 23/56


Shell

I aplicat, ie care permite accesul la resursele sistemului de operare


I poate fi grafic (GUI) sau ı̂n linia de comandă (CLI)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 23/56


Shell

I aplicat, ie care permite accesul la resursele sistemului de operare


I poate fi grafic (GUI) sau ı̂n linia de comandă (CLI)
I ı̂n Windows shell-ul este Explorer (GUI)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 23/56


Shell

I aplicat, ie care permite accesul la resursele sistemului de operare


I poate fi grafic (GUI) sau ı̂n linia de comandă (CLI)
I ı̂n Windows shell-ul este Explorer (GUI)
I ı̂n Unix
I shell GUI: X Window System +
KDE/GNOME/Xfce/Awesome/Fluxbox
I shell-uri CLI: bash, tcsh, zsh, dash

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 23/56


Shell

I aplicat, ie care permite accesul la resursele sistemului de operare


I poate fi grafic (GUI) sau ı̂n linia de comandă (CLI)
I ı̂n Windows shell-ul este Explorer (GUI)
I ı̂n Unix
I shell GUI: X Window System +
KDE/GNOME/Xfce/Awesome/Fluxbox
I shell-uri CLI: bash, tcsh, zsh, dash
I ı̂n general un shell este un caz particular de CLI

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 23/56


Shell

I aplicat, ie care permite accesul la resursele sistemului de operare


I poate fi grafic (GUI) sau ı̂n linia de comandă (CLI)
I ı̂n Windows shell-ul este Explorer (GUI)
I ı̂n Unix
I shell GUI: X Window System +
KDE/GNOME/Xfce/Awesome/Fluxbox
I shell-uri CLI: bash, tcsh, zsh, dash
I ı̂n general un shell este un caz particular de CLI
I Cum putem rula o sesiune de shell ı̂n Linux?

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 23/56


Shell

I aplicat, ie care permite accesul la resursele sistemului de operare


I poate fi grafic (GUI) sau ı̂n linia de comandă (CLI)
I ı̂n Windows shell-ul este Explorer (GUI)
I ı̂n Unix
I shell GUI: X Window System +
KDE/GNOME/Xfce/Awesome/Fluxbox
I shell-uri CLI: bash, tcsh, zsh, dash
I ı̂n general un shell este un caz particular de CLI
I Cum putem rula o sesiune de shell ı̂n Linux?
I terminal virtual (ALT+CTRL+F1...F6)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 23/56


Shell

I aplicat, ie care permite accesul la resursele sistemului de operare


I poate fi grafic (GUI) sau ı̂n linia de comandă (CLI)
I ı̂n Windows shell-ul este Explorer (GUI)
I ı̂n Unix
I shell GUI: X Window System +
KDE/GNOME/Xfce/Awesome/Fluxbox
I shell-uri CLI: bash, tcsh, zsh, dash
I ı̂n general un shell este un caz particular de CLI
I Cum putem rula o sesiune de shell ı̂n Linux?
I terminal virtual (ALT+CTRL+F1...F6)
I emulator de terminal (konsole, gnome-terminal, xterm etc.)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 23/56


Shell

I aplicat, ie care permite accesul la resursele sistemului de operare


I poate fi grafic (GUI) sau ı̂n linia de comandă (CLI)
I ı̂n Windows shell-ul este Explorer (GUI)
I ı̂n Unix
I shell GUI: X Window System +
KDE/GNOME/Xfce/Awesome/Fluxbox
I shell-uri CLI: bash, tcsh, zsh, dash
I ı̂n general un shell este un caz particular de CLI
I Cum putem rula o sesiune de shell ı̂n Linux?
I terminal virtual (ALT+CTRL+F1...F6)
I emulator de terminal (konsole, gnome-terminal, xterm etc.)
I conexiune de la distant, ă

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 23/56


Shell

I aplicat, ie care permite accesul la resursele sistemului de operare


I poate fi grafic (GUI) sau ı̂n linia de comandă (CLI)
I ı̂n Windows shell-ul este Explorer (GUI)
I ı̂n Unix
I shell GUI: X Window System +
KDE/GNOME/Xfce/Awesome/Fluxbox
I shell-uri CLI: bash, tcsh, zsh, dash
I ı̂n general un shell este un caz particular de CLI
I Cum putem rula o sesiune de shell ı̂n Linux?
I terminal virtual (ALT+CTRL+F1...F6)
I emulator de terminal (konsole, gnome-terminal, xterm etc.)
I conexiune de la distant, ă
I terminalul este (pseudo)dispozitivul ı̂n care rulează shell-ul

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 23/56


Shell

I aplicat, ie care permite accesul la resursele sistemului de operare


I poate fi grafic (GUI) sau ı̂n linia de comandă (CLI)
I ı̂n Windows shell-ul este Explorer (GUI)
I ı̂n Unix
I shell GUI: X Window System +
KDE/GNOME/Xfce/Awesome/Fluxbox
I shell-uri CLI: bash, tcsh, zsh, dash
I ı̂n general un shell este un caz particular de CLI
I Cum putem rula o sesiune de shell ı̂n Linux?
I terminal virtual (ALT+CTRL+F1...F6)
I emulator de terminal (konsole, gnome-terminal, xterm etc.)
I conexiune de la distant, ă
I terminalul este (pseudo)dispozitivul ı̂n care rulează shell-ul
I ı̂n continuare, shell = shell CLI

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 23/56


Terminal vs. shell

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 24/56


Terminal vs. shell

I terminal = dispozitiv

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 24/56


Terminal vs. shell

I terminal = dispozitiv
I shell = proces

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 24/56


Terminal vs. shell

I terminal = dispozitiv
I shell = proces
I terminal – cadru, interfat, ă pentru rularea unui shell

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 24/56


Terminal vs. shell

I terminal = dispozitiv
I shell = proces
I terminal – cadru, interfat, ă pentru rularea unui shell
I fizic (tastatură, monitor)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 24/56


Terminal vs. shell

I terminal = dispozitiv
I shell = proces
I terminal – cadru, interfat, ă pentru rularea unui shell
I fizic (tastatură, monitor)
I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 24/56


Terminal vs. shell

I terminal = dispozitiv
I shell = proces
I terminal – cadru, interfat, ă pentru rularea unui shell
I fizic (tastatură, monitor)
I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6
I emulator de terminal – pts/0, pts/1, . . .

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 24/56


Terminal vs. shell

I terminal = dispozitiv
I shell = proces
I terminal – cadru, interfat, ă pentru rularea unui shell
I fizic (tastatură, monitor)
I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6
I emulator de terminal – pts/0, pts/1, . . .
I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
proces

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 24/56


Terminal vs. shell

I terminal = dispozitiv
I shell = proces
I terminal – cadru, interfat, ă pentru rularea unui shell
I fizic (tastatură, monitor)
I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6
I emulator de terminal – pts/0, pts/1, . . .
I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
proces
I daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 24/56


Terminal vs. shell

I terminal = dispozitiv
I shell = proces
I terminal – cadru, interfat, ă pentru rularea unui shell
I fizic (tastatură, monitor)
I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6
I emulator de terminal – pts/0, pts/1, . . .
I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
proces
I daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenzi

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 24/56


Terminal vs. shell

I terminal = dispozitiv
I shell = proces
I terminal – cadru, interfat, ă pentru rularea unui shell
I fizic (tastatură, monitor)
I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6
I emulator de terminal – pts/0, pts/1, . . .
I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
proces
I daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenzi
I prompt, comenzi, operatori shell

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 24/56


Terminal vs. shell

I terminal = dispozitiv
I shell = proces
I terminal – cadru, interfat, ă pentru rularea unui shell
I fizic (tastatură, monitor)
I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6
I emulator de terminal – pts/0, pts/1, . . .
I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
proces
I daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenzi
I prompt, comenzi, operatori shell
I bash, zsh, tcsh

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 24/56


Structura unui sistem de calcul

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 25/56


Comenzi s, i argumente

Promptul unui shell


ana@host:~$ whoami
ana

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 26/56


Comenzi s, i argumente

Promptul unui shell


ana@host:~$ whoami
ana

I comenzile pot avea argumente (opt, iuni pentru comandă)


I argumentele se separă prin spat, ii

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 26/56


Comenzi s, i argumente

Promptul unui shell


ana@host:~$ whoami
ana

I comenzile pot avea argumente (opt, iuni pentru comandă)


I argumentele se separă prin spat, ii
I Keep it simple!
I nume simple, uneori neintuitive: cp, rm, ls, vi, ps

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 26/56


Documentarea ı̂n shell

I command --help: opt, iuni s, i argumente ale comenzii


I whatis command: ce face comanda
I apropos concept: comenzi care au legătură cu acel concept
I man command: pagina de manual a comenzii
I q pentru ies, ire
I / pentru căutare ı̂nainte, ? pentru căutare ı̂napoi
I n: next match, N: previous match
I Google (,,tutorial”, ,,faq”, ,,how to”, ,,example”, ,,usage”)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 27/56


Funct, ionarea unui shell

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 28/56


Funct, ionarea unui shell

I se introduce o comandă (ls)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 28/56


Funct, ionarea unui shell

I se introduce o comandă (ls)


I shell-ul identifică executabilul asociat (/bin/ls)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 28/56


Funct, ionarea unui shell

I se introduce o comandă (ls)


I shell-ul identifică executabilul asociat (/bin/ls)
I este creat un nou process shell (/bin/bash) (fork)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 28/56


Funct, ionarea unui shell

I se introduce o comandă (ls)


I shell-ul identifică executabilul asociat (/bin/ls)
I este creat un nou process shell (/bin/bash) (fork)
I procesul creat se ,,transformă” conform cu noul executabil

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 28/56


Funct, ionarea unui shell

I se introduce o comandă (ls)


I shell-ul identifică executabilul asociat (/bin/ls)
I este creat un nou process shell (/bin/bash) (fork)
I procesul creat se ,,transformă” conform cu noul executabil
I intrarea standard este controlată de noul proces

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 28/56


Funct, ionarea unui shell

I se introduce o comandă (ls)


I shell-ul identifică executabilul asociat (/bin/ls)
I este creat un nou process shell (/bin/bash) (fork)
I procesul creat se ,,transformă” conform cu noul executabil
I intrarea standard este controlată de noul proces
I după execut, ia comenzii, procesul se ı̂ncheie s, i controlul revine
shell-ului

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 28/56


Cuprins

Nevoia de CLI

Interfat, a cu utilizatorul

Interfat, a ı̂n linia de comandă

Shell

Facilităt, ile unui shell

Utilizare avansată a shell-ului

Sumar

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 29/56


Facilităt, i shell

I command completion
I folosirea tastei TAB sau a apăsării de două ori TAB TAB
I completarea comenzii s, i a argumentelor acesteia
I istoricul comenzilor
I history: vizualizarea istoriei
I Ctrl+p (sau tastă sus), Ctrl+n (sau tastă jos): anterioara s, i
următoarea comandă
I Ctrl+r: reverse search, căutare ı̂napoi
I biblioteca readline (libreadline)
I keyboard shortcuts (eficient, ă ı̂n utilizare)
I documentare: man bash s, i căutare după Commands for

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 30/56


Extinderea comenzilor shell

Redirectarea intrării/ies, irii: >, <


ana@host:~$ seq 1 100 > out.txt
ana@host:~$ wc -l < out.txt
100

Comunicarea ı̂ntre procese: |


ana@host:~$ svn log | less

Rularea unui proces ı̂n background: &


ana@host:~$ du -hs &
[1] 15766
ana@host:~$ jobs
[1]+ Running du -hs &

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 31/56


Extinderea comenzilor shell (cont.)

Secvent, ierea comenzilor: ;


root@asgard:~# apt-get update ; apt-get upgrade ; apt-get dist-upgrade

Secvent, ierea condit, ională: &&, ||


ana@host:~$ id ana &> /dev/null && echo "da" || echo "nu"
da
ana@host:~$ id atilla &> /dev/null && echo "da" || echo "nu"
nu

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 32/56


Comenzi utile ı̂n shell-ul Unix

I head, tail: afis, ează doar primele/ultimele linii din fis, ier
I wc: numără liniile din fis, ier
I grep: extrage liniile care cont, in o anumită expresie
I tr: transformă caractere ı̂n alte caractere
I cut: extrage doar anumite coloane
I sort: sortează liniile primite la intrare
I uniq: unicizează liniile de la intrare (elimină duplicatele);
intrările trebuie să fie sortate
I seq: generează numere ı̂ntre anumite intervale

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 33/56


Redirectare s, i comunicarea ı̂ntre procese

I ı̂n cazul redirectării, operatorii sunt > (redirectarea ies, irii


standard), < (redictarea intrării standard) s, i 2 > (redirectarea
ies, irii de eroare standard)
I la redirectare forma este command operator file
I spunem că redirectăm ı̂ntr-un/dintr-un fis, ier
I ı̂n cazul comunicării ı̂ntre procese forma este command1 |
command2
I spunem că redirectăm ies, irea standard a comenzii command1
ı̂n intrarea standard a comenzii command2

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 34/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

I /dev/urandom – generator de caractere aleatoare

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

I /dev/urandom – generator de caractere aleatoare


I < /dev/urandom – redictează intrarea standard din fis, ierul /dev/urandom

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

I /dev/urandom – generator de caractere aleatoare


I < /dev/urandom – redictează intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comandă shell de tip filtru de text)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

I /dev/urandom – generator de caractere aleatoare


I < /dev/urandom – redictează intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comandă shell de tip filtru de text)
I -d – delete (s, terge)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

I /dev/urandom – generator de caractere aleatoare


I < /dev/urandom – redictează intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comandă shell de tip filtru de text)
I -d – delete (s, terge)
I -c – complement (set complementar)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

I /dev/urandom – generator de caractere aleatoare


I < /dev/urandom – redictează intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comandă shell de tip filtru de text)
I -d – delete (s, terge)
I -c – complement (set complementar)
I -c ’A-Za-z0-9’ – orice nu este literă sau cifră

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

I /dev/urandom – generator de caractere aleatoare


I < /dev/urandom – redictează intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comandă shell de tip filtru de text)
I -d – delete (s, terge)
I -c – complement (set complementar)
I -c ’A-Za-z0-9’ – orice nu este literă sau cifră

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

I /dev/urandom – generator de caractere aleatoare


I < /dev/urandom – redictează intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comandă shell de tip filtru de text)
I -d – delete (s, terge)
I -c – complement (set complementar)
I -c ’A-Za-z0-9’ – orice nu este literă sau cifră

→ s, terge orice nu este literă sau cifră dintr-un s, ir infinit generat aleator

I head – extrage primele elemente

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

I /dev/urandom – generator de caractere aleatoare


I < /dev/urandom – redictează intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comandă shell de tip filtru de text)
I -d – delete (s, terge)
I -c – complement (set complementar)
I -c ’A-Za-z0-9’ – orice nu este literă sau cifră

→ s, terge orice nu este literă sau cifră dintr-un s, ir infinit generat aleator

I head – extrage primele elemente


I -c 8 – opt caractere

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

I /dev/urandom – generator de caractere aleatoare


I < /dev/urandom – redictează intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comandă shell de tip filtru de text)
I -d – delete (s, terge)
I -c – complement (set complementar)
I -c ’A-Za-z0-9’ – orice nu este literă sau cifră

→ s, terge orice nu este literă sau cifră dintr-un s, ir infinit generat aleator

I head – extrage primele elemente


I -c 8 – opt caractere

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

I /dev/urandom – generator de caractere aleatoare


I < /dev/urandom – redictează intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comandă shell de tip filtru de text)
I -d – delete (s, terge)
I -c – complement (set complementar)
I -c ’A-Za-z0-9’ – orice nu este literă sau cifră

→ s, terge orice nu este literă sau cifră dintr-un s, ir infinit generat aleator

I head – extrage primele elemente


I -c 8 – opt caractere

→ extrage primele 8 caractere

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


Ce efect are comanda de mai jos?

ana@host:~$ < /dev/urandom tr -d -c ’A-Za-z0-9’ | head -c 8 ; echo

I /dev/urandom – generator de caractere aleatoare


I < /dev/urandom – redictează intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comandă shell de tip filtru de text)
I -d – delete (s, terge)
I -c – complement (set complementar)
I -c ’A-Za-z0-9’ – orice nu este literă sau cifră

→ s, terge orice nu este literă sau cifră dintr-un s, ir infinit generat aleator

I head – extrage primele elemente


I -c 8 – opt caractere

→ extrage primele 8 caractere

→ extrage primele 8 caractere tipăribile (literă sau cifră) dintr-un s, ir generat aleator;
la final afis, ează un caracter newline

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 35/56


One liner

I o ı̂nlănt, uire de mai multe comenzi shell


I ı̂ncape pe o singură linie ı̂n shell
I oferă o nouă funct, ionalitate
I foloses, te operatori de redirectare s, i de secvent, iere
I quick’n’dirty: scriem comenzi ı̂nlănt, uite s, i le rulăm
I pentru funct, ionalităt, i avansate e recomandată scrierea de
scripturi shell

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 36/56


Caractere speciale shell

I operatori
I redirectare: >, <, &>, >>, <<
I secvent, iere, ı̂nlănt, uire: ;, ||, &&, |, &
I expandare: $
I comentare: #
I citare (escaping): ’, ", \
I separare: blank (spat, iu)
I globbing: ?, *, [, ], {, }

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 37/56


Cuprins

Nevoia de CLI

Interfat, a cu utilizatorul

Interfat, a ı̂n linia de comandă

Shell

Facilităt, ile unui shell

Utilizare avansată a shell-ului

Sumar

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 38/56


Facilităt, i avansate

I ret, inerea anumitor valori/informat, ii (ı̂n variabile)


I afis, area caracterelor speciale
I operat, ii pe mai multe intrări dintr-o dată

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 39/56


Variabile shell

Init, ializare variabile ı̂n shell


ana@host:~$ a=10
ana@host:~$ b=ana
ana@host:~$ c="ana are mere"
ana@host:~$ d="$b $a"
ana@host:~$ echo $a, $b, $c, $d
10, ana, ana are mere, ana 10

I nu se foloses, te spat, iu ı̂nainte s, i după egal la init, ializare


I s-ar considera comandă cu argumente
I folosirea valorii unei variabile se realizează prin prefixarea cu
simbolul $ (dollar )
I variabilele shell nu au tip (ı̂ntreg, s, ir, pointer)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 40/56


Variabile speciale shell

I documentat, ie: man bash, s, i căutare după Special Parameters


I $? – valoarea de retur a ultimei comenzi
I $$ – PID-ul procesului shell curent
I $! – PID-ul ultimului proces (job) lansat ı̂n background
I $_ – ultimul argument al ultimei comenzi

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 41/56


Variabile de mediu

I definesc contextul de rulare a unui proces


I sunt mos, tenite de procesele copil
I exemple: PATH, HOME, PWD, USERNAME, SHELL
I operat, ii specifice cu variabile de mediu
I listare: env, printenv
I configurare variabilă ca variabilă de mediu (exportare)
I export JAVA_HOME
I export JAVA_HOME=/home/student/sun-java-jdk7 # init
and export
I persistent, a configurării (startup configuration)
I ı̂n fis, ierul ∼/.bashrc

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 42/56


Variabile de mediu (cont.)

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 43/56


Citare (escaping)

Exemple de escaping
ana@host:/tmp/uso$ ls -l
total 0
-rw-r--r-- 1 ana ana 0 2007-11-18 00:14 alfa beta.txt
-rw-r--r-- 1 ana ana 0 2007-11-18 00:14 d.txt
ana@host:/tmp/uso$ ls alfa beta.txt
ls: alfa: No such file or directory
ls: beta.txt: No such file or directory
ana@host:/tmp/uso$ ls "alfa beta.txt"
alfa beta.txt
ana@host:/tmp/uso$ ls ’alfa beta.txt’
alfa beta.txt
ana@host:/tmp/uso$ ls alfa\ beta.txt
alfa beta.txt
ana@host:/tmp/uso$ echo $a
4
ana@host:/tmp/uso$ echo "$a"
4
ana@host:/tmp/uso$ echo $a
$a
ana@host:/tmp/uso$ echo ’$a’
$a

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 44/56


Citare (escaping) (cont.)
I escaping folosind \ (backslash)
I fort, ează forma literală a caracterului următor
I rol special ı̂n cazul comenzii echo -e

ana@host:~$ echo -e "a\tb\tc"


a b c

I escaping folosind " (ghilimele, quote)


I escapează textul dintre ghilimele
I nu escapează expandarea

ana@host:~$ echo "* ; && | > $sir"


* ; && | > file.txt

I ’ (apostrof, single quote)


I escapează orice ı̂ntre apostroafe

ana@host:~$ echo ’\\\$a$bc$de’


\\\$a$bc$de

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 45/56


Expandarea ı̂n shell

Expandarea variabilelor
ana@host:-$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/PacketTracer5
ana@host:-$ echo $PATH | tr ’:’ ’\n’
/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games
/usr/local/PacketTracer5

Expandarea comenzilor
ana@host:~$ ls
ana@host:~/tmp$ touch $(seq -f "file-%02g.txt" 1 20)
ana@host:~/tmp$ touch $(seq -f "file-%02g.txt" 1 20)
ana@host:~$ ls
file-01.txt file-03.txt file-05.txt file-07.txt file-09.txt file-11.txt file-13.txt [...]
file-02.txt file-04.txt file-06.txt file-08.txt file-10.txt file-12.txt file-14.txt [...]

Expandarea aritmetică
ana@host:~$ a=3
ana@host:~$ ((a++))
ana@host:~$ b=$((a+1))
ana@host:~$ echo $b
5

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 46/56


Globbing

Folosire globbing ı̂n comenzi shell


ana@host:~/code/tests$ ls
Makefile endian.c struct_bit struct_bit.o tcp_new_sock.c
endian endian.o struct_bit.c tcp_new_sock tcp_new_sock.o
ana@host:~/code/tests$ ls *.c
endian.c struct_bit.c tcp_new_sock.c
ana@host:~/code/tests$ ls end?an.c
endian.c
ana@host:~/code/tests$ ls [a-s]*.c
endian.c struct_bit.c
ana@host:~/code/tests$ ls *.c,o
endian.c endian.o struct_bit.c struct_bit.o tcp_new_sock.c tcp_new_sock.o

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 47/56


Globbing (cont.)

I pentru a rula o comandă pe mai multe fis, iere


I filename expansion (s, i altele)
I * – orice caracter de oricâte ori
I ? – orice caracter
I [abcde], [a-e] – set de caractere
I [^abc] – diferit de setul de caractere
I {jpg,png,bmp} – select, ie ı̂ntre variante

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 48/56


Cuprins

Nevoia de CLI

Interfat, a cu utilizatorul

Interfat, a ı̂n linia de comandă

Shell

Facilităt, ile unui shell

Utilizare avansată a shell-ului

Sumar

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 49/56


Facilităt, i CLI s, i shell

I prompt, comenzi, argumente


I command completion
I ajutor, documentare
I istoric de comenzi
I scurtături de taste
I redirectare
I comunicare ı̂ntre procese
I one liner
I variabile, variabile de mediu
I escaping
I globbing

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 50/56


Unix Power Tools

I edit, ia a 3-a, 2002


I enciclopedie a faciltăt, ilor Unix
I 1100 de pagini, 51 de capitole
I pentru “power users” – utilizatori avansat, i care vor să
folosească la maxim sistemul
I capitole excelente despre shell s, i shell scripting

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 51/56


Rob Pike

I parte a echipei Unix


I ulterior, dezvoltator la Plan 9 s, i Inferno
I sisteme de operare unde totul este un fis, ier
I pe Unix aproape totul este un fis, ier
I cărt, i s, i proiecte ı̂mpreună cu Ken Thompson, Brian Kernighan
I UTF-8
I lucrează la Google

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 52/56


Amazon

I Amazon.com, Inc.
I comert, electronic (online retailer)
I fondată ı̂n 1994, online ı̂n 1995
I init, ial librărie online
I Amazon Kindle
I ı̂n 2010, vânzările de e-books au depăs, it vânzările de cărt, i ı̂n
format printat
I Amazon Web Services – servicii de stocare s, i rulare, cloud
computing
I Amazon EC2 – ı̂nchiriere de mas, ini virtuale
I Amazon S3 – servicii de stocare

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 53/56


Windows PowerShell

I CLI pentru Windows


I rulează de la Windows XP SP2 ı̂n sus
I integrare cu .NET framework
I cmdlets, aplicat, ii .NET
I automatizare – scripting
I pipeline de obiecte (objects), nu de s, iruri de caractere ca ı̂n
Unix

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 54/56


Cuvinte cheie

I documentare
I interfat, ă
I libreadline
I GUI
I >, <, &, |, ||, &&, ;
I CLI
I ”, ’, \,$
I prompt
I one liner
I comandă, argumente
I variabile
I command completion
I variabile de mediu
I istoric de comenzi
I escaping
I shell
I expandare
I terminal
I globbing

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 55/56


Resurse utile

I http://en.wikipedia.org/wiki/User_interface
I http://www.gnu.org/software/bash/manual/bashref.html
I http://mywiki.wooledge.org/BashFAQ
I http://www.shelldorado.com/
I http://www.pixelbeat.org/cmdline.html

Automatica si Calculatoare Cursul 6, Interfat,a ı̂n linia de comandă 56/56

También podría gustarte