User Tools

Site Tools


unixmix:capitole:capitol-07

This is an old revision of the document!


Interpretorul bash

Tutorial

Completare automată

  • Aflați toate comenzile care încep cu “who”.
    • Tastați “who<TAB><TAB>”.
  • Rulati comanda whoami tastând un număr minim de taste.
    • Tastați “whoa<TAB><ENTER>”.
  • Intrați în directorul rădăcină a sistemului de fișiere. Întorceți-vă, apoi, în directorul vostru home.
    • Rulați cd /.
    • Rulați, apoi, fie cd (fără argumente), fie cd ~.
  • Întorceți-vă iar în directorul rădăcină (directorul în care erați înainte) apoi iar în directorul vostru home.
    • Rulați cd - și apoi pwd să verificați unde sunteți.
    • Ruați încă o dată cd - și verificați că ați ajuns în directoul home.
  • Intrați în directorul Documents din directorul home, folosind un număr minim de caractere.
    • Tastați “cd Do<TAB>”.
    • Nu este suficient? Mai tastați un <TAB> să vedeți opținile pe care le aveți.
    • Mai adăugați o literă ('c') și tastați <TAB> pentru a completa cu numele directorului.
  • Creți în directorul curent (~/Documents) o ierarhie de directoare ~/Documents/These/are/not/the/droids/you/are/looking/for/.
    • Rulăti comanda mkdir These/are/not/the/droids/you/are/looking/for/.
    • Nu merge? De ce? Căutați în pagina de manual al lui mkdir (mkdir) informații despre parametrul -p.
    • Rulați comanda mkdir -p These/are/not/the/droids/you/are/looking/for/.
  • Intrați în cel mai adânc director din ierarhia nou creată (directorul 'for').
    • Fiți eficienți!
    • Sper că nu ați pus mâna pe mouse să dați copy/paste la cale.
    • Tastați “cd ~/Documents/T<TAB><TAB><TAB><TAB><TAB><TAB><TAB><TAB><TAB><TAB>”
  • Reveniți în directorul precedent.
    • Hint: -.
  • Creați ierarhia de directoare ~/Documents/May/the/Force/by/with/you/.
    • Aduceți-vă aminte de parametrul -p.
  • Intrați în cel mai adânc director din ierarhie fără să scrieți, efectiv, calea.
    • Folosiți-vă de ultimul argument al comenzii precedente, care a fost fix calea.
    • Tastați “cd <Atl+.>”.
  • Reveniți în directorul vostru home.
  • Intrați iar în directorul ~/Documents/These/are/not/the/droids/you/are/looking/for/.
    • Vă aduceți aminte că ați mai făcut asta odată? Refolosiți comanda precedentă!
    • Tastați Ctrl-r și apoi un cuvânt cheie cum ar fi “droids”.
  • Vizualizați ce comenzi ați dat până acum.
    • Rulați comanda history.
  • Sțergeți directoarele noi create.
    • Aduceți-vă aminte laboratoarele trecute.

Scurtături la tastatură

Este posibil să fie nevoie de următoarea modificare în terminal pentru ca exercițiile să meargă:

  • Din meniul gnome-terminal accesați Edit → Keyboard shortcuts.
  • Dezactivați cele două opțiuni din ferastra nouă.
  • Tastați în prompt mesajul “Ana are mere”.
  • Oups… am greșit comanda. Voiam să fie afișat acel mesaj.
    • Rulați 'echo !!'.
    • Ce făcea ”!!” ?
  • Folosiți reverse search (Ctrl-r) pentru a rescrie la prompt comanda echo Ana are mere, dar fără a o rula.
    • Verificați că promptul conține “echo Ana are mere”.
  • Transformați mesajul în “Maria are pere”.
    • Mergeți la începutul comenzi cu Ctrl-a.
    • Deplasați-vă un cuvânt înainte cu Alt-f și încă un caracter înainte cu Ctrl-f.
    • Sțergeți cuvântul “Ana” cu Alt-d și înlocuiți-l cu “Maria”
    • Mai deplasați-vă un cuvânt înainte cu Alt-f și încă un caracter înainte cu Ctrl-f (ar trebui să fiți la începutul cuvântului “mere”).
    • Ștergeti primul caracter cu Ctrl-d și înlocuiți-l cu caracterul 'p'.
    • Ruați comanda rezultată.

Comenzi interne

  • Încercați să găsiți executabilul pentru comanda alias.
    • Hint: which.
    • De ce nu găsiți nimic?
  • Folosiți comanda (internă) help pentru afla informații despre comanda (internă) alias.
  • Creați un alias în bash, astfel încât când rulați comanda ll, să ruleze ls -l.
    • Rulați alias ll=“ls -l”.
    • Verificați cu type ll că aliasul a fost creat și rulați ll pentru a vedea efectul.
  • Deschideți un nou terminal și încercați să rulați 'll'.
    • Merge?
    • Rulați comanda alias pentru a lista alias-urile setate în shell-ul curent.

Operatori

Un proces se poate termina cu succes (status 0) sau cu eroare (status diferit de 0).

Statusul ultimului proces se poate vedea cu ajutorul comenzii:

echo $?

true și false sunt două programe care întotdeauna se termină cu succes, respectiv cu eroare.

true
echo $?
0
false
echo $?
1

Folosind operatorii && și ||, putem rula un al doilea proces doar dacă primul proces a avut succes, respectiv eroare.

Testați următoarele comenzi și observați dacă se execută sau nu procesul echo:

true && echo "Success"
false && echo "Success"
true || echo "Fail"
false || echo "Fail"

Variabile

  • Setați două variabile, a și b la “Alice” și “Bob”.
a=Alice
b=Bob
  • Afișați mesajul “Alice and Bob”, folosind variabilele.
    • Expandarea unei variabile se face cu ajutorul operatorului $.
echo "$a and $b" 

Aveți grijă la ghilimele!

alexj@hathor ~ $ echo "$a and $b"
alice and bob
alexj@hathor ~ $ echo '$a and $b'
$a and $b
alexj@hathor ~ $ echo `$a and $b`
The program 'alice' is currently not installed.  You can install it by typing:
sudo apt-get install alice

Variabile de mediu

  • Intrați în directorul /.
  • Printați valoarea variabilei OLDPWD.
    • Hint: echo, $.
  • Rulați comanda cd -.
    • Ce face variabila ODLPWD?
  • Modificați variabila OLDPWD în /tmp și rulati comanda cd -.
    • Observați efectul modificării variabilei de mediu.

Expandare aritmetică

  • Rulați comenzile de mai jos și observați output-ul.
    • Nu dați doar copy paste, ci scrieți comenzile pentru a observa ce se întâmplă.

A=42
B=28
echo "A=$A and B=$B"
echo "A+B=$(($A+$B))"
A=$(($A+1))
B=$(($B*10))
echo "A=$A and B=$B"

Expandarea comenzilor

  • Salvați în variabila OUTPUT ieșirea de la rularea comenzii ls.
    • Rulați OUTPUT=$(ls).
  • Vizualizați conținutul variabilei OUTPUT.
    • Hint: echo, $.
  • Aflați dimensiunea executabilului comenzii ls.
    • Salvați într-o variabilă output-ul comenzii which ls.
    • Rulați ls -lh asupra variabilei respective.
OUTPUT=$(which ls)
ls -lah $OUTPUT

Recapitulare

Afișați conținutul fișierelor din directorul /bin sortat în ordinea dimensiunii fișierelor. Folosiți-vă de comanda stat și de opțiunea de formatare a acesteia (-c sau --format).

Afișați linie sub linie directoarele conținute de variabila de mediu PATH.

Afișați interfețele și adresele IP ale sistemului în formatul eth0,141.85.37.225, linie sub linie.

unixmix/capitole/capitol-07.1410426797.txt.gz · Last modified: 2014/09/11 12:13 by razvan