Cursul 6 - Interfata în linia de comanda -...
Transcript of Cursul 6 - Interfata în linia de comanda -...
Cursul 6Interfat, a ın linia de comanda
Utilizarea Sistemelor de Operare (USO)11 noiembrie 2016
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 1/53
Moto
It was a mistake to think that GUIs ever would, could, or evenshould, eliminate CLIs.
Jeffrey Snover (Architect of Windows PowerShell)
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 2/53
Sistem de fis, iere, utilizatori, procese
proces
utilizator
ier
utilizator
kernel
program
name
uid
inode
lename
username
uiduid
pid
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 3/53
Prehistoric File System
http://crazyhyena.com/funny-file-system-is-the-prehistoric-google_en
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 4/53
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 comanda 5/53
Cuprins
Nevoia de CLI
Interfat, a cu utilizatorul
Interfat, a ın linia de comanda
Shell
Facilitat, ile unui shell
Utilizare avansata a shell-ului
Sumar
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 6/53
Fie urmatoarele scenarii de utilizare/deziderate
I folosire eficienta a sistemului
I competent, e de folosire a unui sistem, indiferent de sistemul deoperare/distribut, ie
I administrare de sisteme de la distant, a
I administrare a unei ret, ele complexe, cu echipamente de ret, eadedicate
I proiectarea de piese ın AutoCAD
I prelucrari numerice s, i statistice (Matlab, Octave, R)
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 7/53
Solut, ia este CLI. De ce?
I CLI: Command Line Interface
I ofera opt, iuni de a rula rapid comenzi (combinat, ii de taste,istoric de comenzi, completare automata)
I se pot ınlant, ui comenzi pentru a obt, ine funct, ionalitat, i noi
I se pot automatiza rapid act, iuni folosind scripting (shellscripting este compus din comenzi shell)
I majoritatea comenzilor sunt independente de distribut, ie,funct, ioneaza la fel pe Unix-uri (Linux, Mac OS X, FreeBSD,Android)
I flexbilitate maxima: o opt, iune noua ın linia de comandapentru o funct, ionlitate noua
I foarte multe aplicat, ii ofera interfat, a ın linia de comandaI unele aplicat, ii ofera doar interfat, a ın linia de comanda
I pentru administrare de la distant, a: servere, echipamentededicate
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 8/53
Solut, ia este CLI. De ce?
I CLI: Command Line Interface
I ofera opt, iuni de a rula rapid comenzi (combinat, ii de taste,istoric de comenzi, completare automata)
I se pot ınlant, ui comenzi pentru a obt, ine funct, ionalitat, i noi
I se pot automatiza rapid act, iuni folosind scripting (shellscripting este compus din comenzi shell)
I majoritatea comenzilor sunt independente de distribut, ie,funct, ioneaza la fel pe Unix-uri (Linux, Mac OS X, FreeBSD,Android)
I flexbilitate maxima: o opt, iune noua ın linia de comandapentru o funct, ionlitate noua
I foarte multe aplicat, ii ofera interfat, a ın linia de comandaI unele aplicat, ii ofera doar interfat, a ın linia de comanda
I pentru administrare de la distant, a: servere, echipamentededicate
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 8/53
Unde folosim CLI?
I shell-ul unui sistem de operare, fie local, fie la distant, a
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 comanda 9/53
Cuprins
Nevoia de CLI
Interfat, a cu utilizatorul
Interfat, a ın linia de comanda
Shell
Facilitat, ile unui shell
Utilizare avansata a shell-ului
Sumar
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 10/53
Interfat, a cu utilizatorul
I interact, iunea utilizatorului cu aplicat, iile s, i cu sistemul deoperare
I ascunde detaliile sistemului de operare
I interact, iunea cu sistemul de calcul
I Human Machine InterfaceI GUI – Graphical User Interface
I WIMP (window, icon, menu, pointing device)I touchscreen
I CLI – Command Line InterfaceI execut, ia de comenzi pentru ındeplinirea sarcinilor
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 11/53
De ce GUI?
I eye-candy
I us, or de folosit, intuitiva
I ascunderea complexitat, ii
I personalizabila (customizable)
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 12/53
De ce CLI?
I consecventa, arata peste tot la fel
I eficientaI us, or de adaugat o opt, iune noua
I un argument fat, a de un buton nou
I automatizarea sarcinilor
I resurse consumate reduse
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 13/53
Cazuri de utilizare GUI s, i CLI
I GUII multimediaI grafica 3DI jocuriI Internet browsing
I CLII administrare sistem: utilizatori, sistem de fis, iere, ret, ea, proceseI scripting/automatizare, eficientizareI aplicat, ii s, i dispozitive dedicate
I ın general vom folosi ambele tipuri de interfet, e, depinzand denevoie
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 14/53
Cuprins
Nevoia de CLI
Interfat, a cu utilizatorul
Interfat, a ın linia de comanda
Shell
Facilitat, ile unui shell
Utilizare avansata a shell-ului
Sumar
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 15/53
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 consola 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 comanda 16/53
Cum arata o interfat, a ın linia de comanda?
I promptI poate fi un caracter precum $, %, #, >I la prompt se introduc comenzi
I comenzile sunt s, iruri de caractere
I numele comenzii ofera intuit, ie legat de ce face comandaI comenzile pot avea argumente (opt, iuni pentru comanda)
I argumentele se separa prin spat, ii
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 17/53
Cum arata o interfat, a ın linia de comanda?
I promptI poate fi un caracter precum $, %, #, >I la prompt se introduc comenzi
I comenzile sunt s, iruri de caractere
I numele comenzii ofera intuit, ie legat de ce face comandaI comenzile pot avea argumente (opt, iuni pentru comanda)
I argumentele se separa prin spat, ii
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 17/53
Cum arata o interfat, a ın linia de comanda?
I promptI poate fi un caracter precum $, %, #, >I la prompt se introduc comenzi
I comenzile sunt s, iruri de caractere
I numele comenzii ofera intuit, ie legat de ce face comandaI comenzile pot avea argumente (opt, iuni pentru comanda)
I argumentele se separa prin spat, ii
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 17/53
Cum arata o interfat, a ın linia de comanda?
I promptI poate fi un caracter precum $, %, #, >I la prompt se introduc comenzi
I comenzile sunt s, iruri de caractere
I numele comenzii ofera intuit, ie legat de ce face comanda
I comenzile pot avea argumente (opt, iuni pentru comanda)I argumentele se separa prin spat, ii
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 17/53
Cum arata o interfat, a ın linia de comanda?
I promptI poate fi un caracter precum $, %, #, >I la prompt se introduc comenzi
I comenzile sunt s, iruri de caractere
I numele comenzii ofera intuit, ie legat de ce face comandaI comenzile pot avea argumente (opt, iuni pentru comanda)
I argumentele se separa prin spat, ii
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 17/53
Funct, ionare linie de comanda
I depinzand de linia de comanda, este posibil un pas deautentificare
I se introduce comanda s, i argumentele
I se apasa ENTER
I interpretorul de comenzi analizeaza comanda s, i executa oact, iune
I interpretorul de comenzi face act, iunea dictata de comanda
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 18/53
Facilitat, i CLI
I command completion
I ajutor, documentare
I istoric de comenzi
I scurtaturi de taste pentru editare rapida de comenzi: s, tergecuvant, mergi la ınceput de comanda etc.
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 19/53
Cuprins
Nevoia de CLI
Interfat, a cu utilizatorul
Interfat, a ın linia de comanda
Shell
Facilitat, ile unui shell
Utilizare avansata a shell-ului
Sumar
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 20/53
Shell
I aplicat, ie care permite accesul la resursele sistemului de operare
I poate fi grafic (GUI) sau ın linia de comanda (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 CLII 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, a
I terminalul este (pseudo)dispozitivul ın care ruleaza shell-ul
I ın continuare, shell = shell CLI
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 21/53
Shell
I aplicat, ie care permite accesul la resursele sistemului de operare
I poate fi grafic (GUI) sau ın linia de comanda (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 CLII 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, a
I terminalul este (pseudo)dispozitivul ın care ruleaza shell-ul
I ın continuare, shell = shell CLI
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 21/53
Shell
I aplicat, ie care permite accesul la resursele sistemului de operare
I poate fi grafic (GUI) sau ın linia de comanda (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 CLII 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, a
I terminalul este (pseudo)dispozitivul ın care ruleaza shell-ul
I ın continuare, shell = shell CLI
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 21/53
Shell
I aplicat, ie care permite accesul la resursele sistemului de operare
I poate fi grafic (GUI) sau ın linia de comanda (CLI)
I ın Windows shell-ul este Explorer (GUI)
I ın UnixI shell GUI: X Window System +
KDE/GNOME/Xfce/Awesome/FluxboxI shell-uri CLI: bash, tcsh, zsh, dash
I ın general un shell este un caz particular de CLII 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, a
I terminalul este (pseudo)dispozitivul ın care ruleaza shell-ul
I ın continuare, shell = shell CLI
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 21/53
Shell
I aplicat, ie care permite accesul la resursele sistemului de operare
I poate fi grafic (GUI) sau ın linia de comanda (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 CLII 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, a
I terminalul este (pseudo)dispozitivul ın care ruleaza shell-ul
I ın continuare, shell = shell CLI
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 21/53
Shell
I aplicat, ie care permite accesul la resursele sistemului de operare
I poate fi grafic (GUI) sau ın linia de comanda (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, a
I terminalul este (pseudo)dispozitivul ın care ruleaza shell-ul
I ın continuare, shell = shell CLI
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 21/53
Shell
I aplicat, ie care permite accesul la resursele sistemului de operare
I poate fi grafic (GUI) sau ın linia de comanda (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 CLII 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, a
I terminalul este (pseudo)dispozitivul ın care ruleaza shell-ul
I ın continuare, shell = shell CLI
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 21/53
Shell
I aplicat, ie care permite accesul la resursele sistemului de operare
I poate fi grafic (GUI) sau ın linia de comanda (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 CLII 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, a
I terminalul este (pseudo)dispozitivul ın care ruleaza shell-ul
I ın continuare, shell = shell CLI
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 21/53
Shell
I aplicat, ie care permite accesul la resursele sistemului de operare
I poate fi grafic (GUI) sau ın linia de comanda (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 CLII 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, a
I terminalul este (pseudo)dispozitivul ın care ruleaza shell-ul
I ın continuare, shell = shell CLI
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 21/53
Shell
I aplicat, ie care permite accesul la resursele sistemului de operare
I poate fi grafic (GUI) sau ın linia de comanda (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 CLII 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, a
I terminalul este (pseudo)dispozitivul ın care ruleaza shell-ul
I ın continuare, shell = shell CLI
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 21/53
Shell
I aplicat, ie care permite accesul la resursele sistemului de operare
I poate fi grafic (GUI) sau ın linia de comanda (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 CLII 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, a
I terminalul este (pseudo)dispozitivul ın care ruleaza shell-ul
I ın continuare, shell = shell CLI
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 21/53
Shell
I aplicat, ie care permite accesul la resursele sistemului de operare
I poate fi grafic (GUI) sau ın linia de comanda (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 CLII 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, a
I terminalul este (pseudo)dispozitivul ın care ruleaza shell-ul
I ın continuare, shell = shell CLI
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 21/53
Terminal vs. shell
I terminal = dispozitiv
I shell = procesI terminal – cadru, interfat, a pentru rularea unui shell
I fizic (tastatura, monitor)I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6I emulator de terminal – pts/0, pts/1, . . .I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
procesI daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenziI prompt, comenzi, operatori shellI bash, zsh, tcsh
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 22/53
Terminal vs. shell
I terminal = dispozitiv
I shell = procesI terminal – cadru, interfat, a pentru rularea unui shell
I fizic (tastatura, monitor)I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6I emulator de terminal – pts/0, pts/1, . . .I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
procesI daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenziI prompt, comenzi, operatori shellI bash, zsh, tcsh
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 22/53
Terminal vs. shell
I terminal = dispozitiv
I shell = proces
I terminal – cadru, interfat, a pentru rularea unui shellI fizic (tastatura, monitor)I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6I emulator de terminal – pts/0, pts/1, . . .I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
procesI daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenziI prompt, comenzi, operatori shellI bash, zsh, tcsh
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 22/53
Terminal vs. shell
I terminal = dispozitiv
I shell = procesI terminal – cadru, interfat, a pentru rularea unui shell
I fizic (tastatura, monitor)I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6I emulator de terminal – pts/0, pts/1, . . .I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
procesI daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenziI prompt, comenzi, operatori shellI bash, zsh, tcsh
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 22/53
Terminal vs. shell
I terminal = dispozitiv
I shell = procesI terminal – cadru, interfat, a pentru rularea unui shell
I fizic (tastatura, monitor)
I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6I emulator de terminal – pts/0, pts/1, . . .I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
procesI daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenziI prompt, comenzi, operatori shellI bash, zsh, tcsh
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 22/53
Terminal vs. shell
I terminal = dispozitiv
I shell = procesI terminal – cadru, interfat, a pentru rularea unui shell
I fizic (tastatura, 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
procesI daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenziI prompt, comenzi, operatori shellI bash, zsh, tcsh
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 22/53
Terminal vs. shell
I terminal = dispozitiv
I shell = procesI terminal – cadru, interfat, a pentru rularea unui shell
I fizic (tastatura, monitor)I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6I emulator de terminal – pts/0, pts/1, . . .
I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unuiproces
I daemonii nu au acces la nici un terminal (nu au intrare/ies, irestandard)
I shell – permite rularea de comenziI prompt, comenzi, operatori shellI bash, zsh, tcsh
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 22/53
Terminal vs. shell
I terminal = dispozitiv
I shell = procesI terminal – cadru, interfat, a pentru rularea unui shell
I fizic (tastatura, monitor)I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6I 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, irestandard)
I shell – permite rularea de comenziI prompt, comenzi, operatori shellI bash, zsh, tcsh
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 22/53
Terminal vs. shell
I terminal = dispozitiv
I shell = procesI terminal – cadru, interfat, a pentru rularea unui shell
I fizic (tastatura, monitor)I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6I emulator de terminal – pts/0, pts/1, . . .I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
procesI daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenziI prompt, comenzi, operatori shellI bash, zsh, tcsh
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 22/53
Terminal vs. shell
I terminal = dispozitiv
I shell = procesI terminal – cadru, interfat, a pentru rularea unui shell
I fizic (tastatura, monitor)I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6I emulator de terminal – pts/0, pts/1, . . .I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
procesI daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenzi
I prompt, comenzi, operatori shellI bash, zsh, tcsh
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 22/53
Terminal vs. shell
I terminal = dispozitiv
I shell = procesI terminal – cadru, interfat, a pentru rularea unui shell
I fizic (tastatura, monitor)I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6I emulator de terminal – pts/0, pts/1, . . .I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
procesI daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenziI prompt, comenzi, operatori shell
I bash, zsh, tcsh
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 22/53
Terminal vs. shell
I terminal = dispozitiv
I shell = procesI terminal – cadru, interfat, a pentru rularea unui shell
I fizic (tastatura, monitor)I virtual (ALT+CTRL+F1. . . F6) – tty0, tty1, . . . , tty6I emulator de terminal – pts/0, pts/1, . . .I folosit pentru intrarea/ies, irea standard (stdin/stdout) a unui
procesI daemonii nu au acces la nici un terminal (nu au intrare/ies, ire
standard)
I shell – permite rularea de comenziI prompt, comenzi, operatori shellI bash, zsh, tcsh
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 22/53
Structura unui sistem de calcul
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 23/53
Comenzi s, i argumente
Promptul unui shell
ana@host:~$ whoami
ana
I comenzile pot avea argumente (opt, iuni pentru comanda)I argumentele se separa 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 comanda 24/53
Comenzi s, i argumente
Promptul unui shell
ana@host:~$ whoami
ana
I comenzile pot avea argumente (opt, iuni pentru comanda)I argumentele se separa 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 comanda 24/53
Comenzi s, i argumente
Promptul unui shell
ana@host:~$ whoami
ana
I comenzile pot avea argumente (opt, iuni pentru comanda)I argumentele se separa 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 comanda 24/53
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 legatura cu acel conceptI man command: pagina de manual a comenzii
I q pentru ies, ireI / pentru cautare ınainte, ? pentru cautare ınapoiI n: next match, N: previous match
I Google (,,tutorial”, ,,faq”, ,,how to”, ,,example”, ,,usage”)
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 25/53
Funct, ionarea unui shell
I se introduce o comanda (ls)
I shell-ul identifica executabilul asociat (/bin/ls)
I este creat un nou process shell (/bin/bash) (fork)
I procesul creat se ,,transforma” conform cu noul executabil
I intrarea standard este controlata de noul proces
I dupa execut, ia comenzii, procesul se ıncheie s, i controlul revineshell-ului
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 26/53
Funct, ionarea unui shell
I se introduce o comanda (ls)
I shell-ul identifica executabilul asociat (/bin/ls)
I este creat un nou process shell (/bin/bash) (fork)
I procesul creat se ,,transforma” conform cu noul executabil
I intrarea standard este controlata de noul proces
I dupa execut, ia comenzii, procesul se ıncheie s, i controlul revineshell-ului
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 26/53
Funct, ionarea unui shell
I se introduce o comanda (ls)
I shell-ul identifica executabilul asociat (/bin/ls)
I este creat un nou process shell (/bin/bash) (fork)
I procesul creat se ,,transforma” conform cu noul executabil
I intrarea standard este controlata de noul proces
I dupa execut, ia comenzii, procesul se ıncheie s, i controlul revineshell-ului
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 26/53
Funct, ionarea unui shell
I se introduce o comanda (ls)
I shell-ul identifica executabilul asociat (/bin/ls)
I este creat un nou process shell (/bin/bash) (fork)
I procesul creat se ,,transforma” conform cu noul executabil
I intrarea standard este controlata de noul proces
I dupa execut, ia comenzii, procesul se ıncheie s, i controlul revineshell-ului
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 26/53
Funct, ionarea unui shell
I se introduce o comanda (ls)
I shell-ul identifica executabilul asociat (/bin/ls)
I este creat un nou process shell (/bin/bash) (fork)
I procesul creat se ,,transforma” conform cu noul executabil
I intrarea standard este controlata de noul proces
I dupa execut, ia comenzii, procesul se ıncheie s, i controlul revineshell-ului
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 26/53
Funct, ionarea unui shell
I se introduce o comanda (ls)
I shell-ul identifica executabilul asociat (/bin/ls)
I este creat un nou process shell (/bin/bash) (fork)
I procesul creat se ,,transforma” conform cu noul executabil
I intrarea standard este controlata de noul proces
I dupa execut, ia comenzii, procesul se ıncheie s, i controlul revineshell-ului
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 26/53
Funct, ionarea unui shell
I se introduce o comanda (ls)
I shell-ul identifica executabilul asociat (/bin/ls)
I este creat un nou process shell (/bin/bash) (fork)
I procesul creat se ,,transforma” conform cu noul executabil
I intrarea standard este controlata de noul proces
I dupa execut, ia comenzii, procesul se ıncheie s, i controlul revineshell-ului
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 26/53
Cuprins
Nevoia de CLI
Interfat, a cu utilizatorul
Interfat, a ın linia de comanda
Shell
Facilitat, ile unui shell
Utilizare avansata a shell-ului
Sumar
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 27/53
Facilitat, i shell
I command completionI folosirea tastei TAB sau a apasarii de doua ori TAB TABI completarea comenzii s, i a argumentelor acesteia
I istoricul comenzilorI history: vizualizarea istorieiI Ctrl+p (sau tasta sus), Ctrl+n (sau tasta jos): anterioara s, i
urmatoarea comandaI Ctrl+r: reverse search, cautare ınapoi
I biblioteca readline (libreadline)I keyboard shortcuts (eficient, a ın utilizare)I documentare: man bash s, i cautare dupa Commands for
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 28/53
Extinderea comenzilor shell
Redirectarea intrarii/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 comanda 29/53
Extinderea comenzilor shell (cont.)
Secvent, ierea comenzilor: ;
root@asgard:~# apt-get update ; apt-get upgrade ; apt-get dist-upgrade
Secvent, ierea condit, ionala: &&, ||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 comanda 30/53
Comenzi utile ın shell-ul Unix
I head, tail: afis, eaza doar primele/ultimele linii din fis, ier
I wc: numara liniile din fis, ier
I grep: extrage liniile care cont, in o anumita expresie
I tr: transforma caractere ın alte caractere
I cut: extrage doar anumite coloane
I sort: sorteaza liniile primite la intrare
I uniq: unicizeaza liniile de la intrare (elimina duplicatele);intrarile trebuie sa fie sortate
I seq: genereaza numere ıntre anumite intervale
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 31/53
Redirectare s, i comunicarea ıntre procese
I ın cazul redirectarii, operatorii sunt > (redirectarea ies, iriistandard), < (redictarea intrarii standard) s, i 2 > (redirectareaies, irii de eroare standard)
I la redirectare forma este command operator file
I spunem ca redirectam ıntr-un/dintr-un fis, ier
I ın cazul comunicarii ıntre procese forma este command1 |command2
I spunem ca redirectam ies, irea standard a comenzii command1ın intrarea standard a comenzii command2
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 32/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
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 – redicteaza intrarea standard din fis, ierul /dev/urandom
I tr – transliterate (comanda 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 litera sau cifra
→ s, terge orice nu este litera sau cifra 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 tiparibile (litera sau cifra) dintr-un s, ir generat aleator;
la final afis, eaza un caracter newline
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 33/53
One liner
I o ınlant, uire de mai multe comenzi shell
I ıncape pe o singura linie ın shell
I ofera o noua funct, ionalitate
I foloses, te operatori de redirectare s, i de secvent, iere
I quick’n’dirty: scriem comenzi ınlant, uite s, i le rulam
I pentru funct, ionalitat, i avansate e recomandata scrierea descripturi shell
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 34/53
Caractere speciale shell
I operatori
I redirectare: >, <, &>, >>, <<
I secvent, iere, ınlant, 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 comanda 35/53
Cuprins
Nevoia de CLI
Interfat, a cu utilizatorul
Interfat, a ın linia de comanda
Shell
Facilitat, ile unui shell
Utilizare avansata a shell-ului
Sumar
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 36/53
Facilitat, i avansate
I ret, inerea anumitor valori/informat, ii (ın variabile)
I afis, area caracterelor speciale
I operat, ii pe mai multe intrari dintr-o data
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 37/53
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 dupa egal la init, ializareI s-ar considera comanda cu argumente
I folosirea valorii unei variabile se realizeaza prin prefixarea cusimbolul $ (dollar)
I variabilele shell nu au tip (ıntreg, s, ir, pointer)
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 38/53
Variabile speciale shell
I documentat, ie: man bash, s, i cautare dupa 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 comanda 39/53
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 mediuI listare: env, printenvI configurare variabila ca variabila de mediu (exportare)
I export JAVA_HOMEI export JAVA_HOME=/home/student/sun-java-jdk7 # init
and export
I persistent, a configurarii (startup configuration)I ın fis, ierul ∼/.bashrc
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 40/53
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 comanda 41/53
Citare (escaping) (cont.)
I escaping folosind \ (backslash)I fort, eaza forma literala a caracterului urmatorI rol special ın cazul comenzii echo -e
ana@host:~$ echo -e "a\tb\tc"a b c
I escaping folosind " (ghilimele, quote)I escapeaza textul dintre ghilimeleI nu escapeaza expandarea
ana@host:~$ echo "* ; && | > $sir"
* ; && | > file.txt
I ’ (apostrof, single quote)I escapeaza orice ıntre apostroafe
ana@host:~$ echo ’\\\$a$bc$de’\\\$a$bc$de
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 42/53
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:~$ 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 aritmetica
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 comanda 43/53
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 comanda 44/53
Globbing (cont.)
I pentru a rula o comanda pe mai multe fis, iere
I filename expansion (s, i altele)
I * – orice caracter de oricate 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 comanda 45/53
Cuprins
Nevoia de CLI
Interfat, a cu utilizatorul
Interfat, a ın linia de comanda
Shell
Facilitat, ile unui shell
Utilizare avansata a shell-ului
Sumar
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 46/53
Facilitat, i CLI s, i shell
I prompt, comenzi, argumente
I command completion
I ajutor, documentare
I istoric de comenzi
I scurtaturi 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 comanda 47/53
Unix Power Tools
I edit, ia a 3-a, 2002
I enciclopedie a faciltat, ilor Unix
I 1100 de pagini, 51 de capitole
I pentru “power users” – utilizatori avansat, i care vor safoloseasca la maxim sistemul
I capitole excelente despre shell s, i shell scripting
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 48/53
Rob Pike
I parte a echipei UnixI ulterior, dezvoltator la Plan 9 s, i Inferno
I sisteme de operare unde totul este un fis, ierI pe Unix aproape totul este un fis, ier
I cart, i s, i proiecte ımpreuna cu Ken Thompson, Brian Kernighan
I UTF-8
I lucreaza la Google
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 49/53
Amazon
I Amazon.com, Inc.
I comert, electronic (online retailer)
I fondata ın 1994, online ın 1995
I init, ial librarie online
I Amazon Kindle
I ın 2010, vanzarile de e-books au depas, it vanzarile de cart, i ınformat printat
I Amazon Web Services – servicii de stocare s, i rulare, cloudcomputing
I Amazon EC2 – ınchiriere de mas, ini virtualeI Amazon S3 – servicii de stocare
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 50/53
Windows PowerShell
I CLI pentru Windows
I ruleaza 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 ınUnix
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 51/53
Cuvinte cheie
I interfat, a
I GUI
I CLI
I prompt
I comanda, argumente
I command completion
I istoric de comenzi
I shell
I terminal
I documentare
I libreadline
I >, <, &, |, ||, &&, ;
I ”, ’, \,$
I one liner
I variabile
I variabile de mediu
I escaping
I expandare
I globbing
Automatica si Calculatoare Cursul 6, Interfat,a ın linia de comanda 52/53
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 comanda 53/53