cursul 6 - interfata în linia de comanda -...

47
Cursul 6 Interfat , ın linia de comand˘ a Utilizarea Sistemelor de Operare (USO) 30 octombrie 2017 Departamentul de Calculatoare CSE Dep Cursul 6, Interfat , ın linia de comand˘ a 1/54

Upload: others

Post on 10-Sep-2019

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

Cursul 6Interfat, a ın linia de comanda

Utilizarea Sistemelor de Operare (USO)30 octombrie 2017

Departamentul de Calculatoare

CSE Dep Cursul 6, Interfat,a ın linia de comanda 1/54

Page 2: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

Moto

It was a mistake to think that GUIs ever would, could, or evenshould, eliminate CLIs.

Jeffrey Snover (Architect of Windows PowerShell)

CSE Dep Cursul 6, Interfat,a ın linia de comanda 2/54

Page 3: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

Sistem de fis, iere, utilizatori, procese

proces

utilizator

ier

utilizator

kernel

program

name

uid

inode

lename

username

uiduid

pid

CSE Dep Cursul 6, Interfat,a ın linia de comanda 3/54

Page 4: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

Prehistoric File System

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 4/54

Page 5: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

In aceasta saptamana la USO

I weekly quest 4 ın week end-ul 4-5 noiembrie 2017

I miercuri, 1 noiembrie 2017, ıncepe laboratorul 6: Interfat, a ınlinia de comanda

I tema 2 apare pe parcursul acestei saptamaniI ıntrebat, i, ıntrebat, i, ıntrebat, iI folosit, i forumulI ajutat, i colegii pe forumI https://ocw.cs.pub.ro/courses/uso/regulament

I sect, iunea ,,Recomandari de comunicare electronica”I sect, iunea ,,Realizarea temelor”

I slide-urile cursului 7: ,,Servicii de ret, ea” vor fi publicate vineri,3 noiembrie 2017

CSE Dep Cursul 6, Interfat,a ın linia de comanda 5/54

Page 6: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 6/54

Page 7: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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)

CSE Dep Cursul 6, Interfat,a ın linia de comanda 8/54

Page 8: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 9/54

Page 9: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 10/54

Page 10: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 12/54

Page 11: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

De ce GUI?

I eye-candy

I us, or de folosit, intuitiva

I ascunderea complexitat, ii

I personalizabila (customizable)

CSE Dep Cursul 6, Interfat,a ın linia de comanda 13/54

Page 12: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 14/54

Page 13: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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 interese, depinzand denevoie

CSE Dep Cursul 6, Interfat,a ın linia de comanda 15/54

Page 14: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 16/54

Page 15: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 17/54

Page 16: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 18/54

Page 17: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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.

CSE Dep Cursul 6, Interfat,a ın linia de comanda 19/54

Page 18: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 21/54

Page 19: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 22/54

Page 20: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

Structura unui sistem de calcul

CSE Dep Cursul 6, Interfat,a ın linia de comanda 23/54

Page 21: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 24/54

Page 22: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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”)

CSE Dep Cursul 6, Interfat,a ın linia de comanda 25/54

Page 23: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 26/54

Page 24: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 28/54

Page 25: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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 &

CSE Dep Cursul 6, Interfat,a ın linia de comanda 29/54

Page 26: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 30/54

Page 27: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 31/54

Page 28: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 32/54

Page 29: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 33/54

Page 30: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 34/54

Page 31: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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: ?, *, [, ], {, }

CSE Dep Cursul 6, Interfat,a ın linia de comanda 35/54

Page 32: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 37/54

Page 33: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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)

CSE Dep Cursul 6, Interfat,a ın linia de comanda 38/54

Page 34: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 39/54

Page 35: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 40/54

Page 36: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 41/54

Page 37: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 42/54

Page 38: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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 aritmetica

ana@host:~$ a=3

ana@host:~$ ((a++))

ana@host:~$ b=$((a+1))

ana@host:~$ echo $b

5

CSE Dep Cursul 6, Interfat,a ın linia de comanda 43/54

Page 39: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 44/54

Page 40: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 45/54

Page 41: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 47/54

Page 42: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 48/54

Page 43: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 49/54

Page 44: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 51/54

Page 45: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 52/54

Page 46: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 53/54

Page 47: Cursul 6 - Interfata în linia de comanda - elf.cs.pub.roelf.cs.pub.ro/uso/res/cursuri/curs-06/curs-06-handout.pdf · Suport de curs I Suport (Introducere ^ n sisteme de operare)

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

CSE Dep Cursul 6, Interfat,a ın linia de comanda 54/54