User Tools

Site Tools


unixmix:capitole:capitol-07
Differences

This shows you the differences between two versions of the page.

Link to this comparison view

unixmix:capitole:capitol-07 [2013/07/11 17:19]
alexef [Comenzi interne]
unixmix:capitole:capitol-07 [2014/09/12 10:09] (current)
razvan [Afișare fișiere executabile pentru procese]
Line 1: Line 1:
-= Interpretorul tcsh =+= Interpretorul bash = 
 + 
 +[[https://docs.google.com/presentation/d/1btwpQIcgu5F9Upw0EKD7ufhzgLycuacE3q07N-_f_6w/pub?start=false&loop=false&delayms=3000|Slide-uri de prezentare]]
  
 == Tutorial == == 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ă === === Scurtături la tastatură ===
  
-**Modificare în mașina virtuală pentru ca exercițiile să meargă**:+**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. * Din meniul gnome-terminal accesați Edit -> Keyboard shortcuts.
-* Dezactivați cele două opțiuni din fereastra nouă.+* Dezactivați cele două opțiuni din ferastra nouă.
  
 * Tastați în prompt mesajul "Ana are mere". * Tastați în prompt mesajul "Ana are mere".
 * Oups... am greșit comanda. Voiam să fie afișat acel mesaj. * Oups... am greșit comanda. Voiam să fie afișat acel mesaj.
 ** Rulați 'echo !!'. ** Rulați 'echo !!'.
-** Ce face "!!" ? +** 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.
-* Folosiți reverse search (up arrow) 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". ** Verificați că promptul conține "echo Ana are mere".
 * Transformați mesajul în "Maria are pere". * Transformați mesajul în "Maria are pere".
Line 27: Line 68:
  
 * Încercați să găsiți executabilul pentru comanda ''alias''. * Încercați să găsiți executabilul pentru comanda ''alias''.
-** Hint: ''whatis'', ''which''.+** Hint: ''which''.
 ** De ce nu găsiți nimic? ** De ce nu găsiți nimic?
- +* Folosiți comanda (internă) ''help'' pentru afla informații despre comanda (internă) ''alias''.
-* Folosiți ''man tcsh'' 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''. * 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''. +** Rulați ''alias ll="ls -l"''. 
-** Verificați cu ''which ll'' că aliasul a fost creat și rulați ''ll'' pentru a vedea efectul.+** 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'. * Deschideți un nou terminal și încercați să rulați 'll'.
 ** Merge? ** Merge?
Line 39: Line 79:
  
 === Operatori === === Operatori ===
 +
  
 Un proces se poate termina cu succes (status 0) sau cu eroare (status diferit de 0).  Un proces se poate termina cu succes (status 0) sau cu eroare (status diferit de 0). 
Line 61: Line 102:
 Folosind operatorii **&&** și **||**, putem rula un al doilea proces doar dacă primul proces a avut succes, respectiv eroare. 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'':+Testați următoarele comenzi și observați dacă se execută sau nu procesul echo:
  
 <code> <code>
Line 83: Line 124:
  
 <code> <code>
-set a=Alice +a=Alice 
-set b=Bob+b=Bob
 </code> </code>
  
Line 104: Line 145:
 The program 'alice' is currently not installed.  You can install it by typing: The program 'alice' is currently not installed.  You can install it by typing:
 sudo apt-get install alice sudo apt-get install alice
 +
 +
 </code> </code>
  
Line 109: Line 152:
  
 * Intrați în directorul /////. * Intrați în directorul /////.
-* Printați valoarea variabilei **PWD**.+* Printați valoarea variabilei **OLDPWD**
 +** Hint: echo, $.
 * Rulați comanda cd -. * Rulați comanda cd -.
-** Ce face variabila PWD?+** Ce face variabila ODLPWD? 
 +* Modificați variabila OLDPWD în /tmp și rulati comanda cd -. 
 +** Observați efectul modificării variabilei de mediu. 
  
-* Afișați valoarea variabilei **PATH** 
-** Ce face PATH? 
-* Modificați PATH să includă directorul curent, ca prima cale de căutare 
-<code> 
-set PATH=.:$PATH 
-</code> 
-* Copiați /bin/pwd în directorul curent, cu numele ls 
-* Rulați comanda ''ls'' 
-** Ce se întâmplă? 
-** Refaceți configurația. 
  
  
Line 131: Line 168:
  
 <code> <code>
-set A=42 + 
-set B=28+ 
 +A=42 
 +B=28
 echo "A=$A and B=$B" echo "A=$A and B=$B"
-@ SUM = $A + $B +echo "A+B=$(($A+$B))
-echo "A+B=$SUM+A=$(($A+1)) 
-A = $A + 1 +B=$(($B*10))
-B = $B * 10+
 echo "A=$A and B=$B" echo "A=$A and B=$B"
 +
 +
 </code> </code>
  
Line 144: Line 184:
  
 * Salvați în variabila OUTPUT ieșirea de la rularea comenzii ''ls''. * Salvați în variabila OUTPUT ieșirea de la rularea comenzii ''ls''.
-** Rulați ''set OUTPUT=`ls`''.+** Rulați ''OUTPUT=$(ls)''.
 * Vizualizați conținutul variabilei OUTPUT. * Vizualizați conținutul variabilei OUTPUT.
 ** Hint: echo, $. ** Hint: echo, $.
Line 152: Line 192:
  
 <code> <code>
-set OUTPUT=`which ls`+OUTPUT=$(which ls)
 ls -lah $OUTPUT ls -lah $OUTPUT
 </code> </code>
  
  
 +== Recapitulare ==
 +
 +# Afișați fișierele 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 fișierele din ierarhia ''/usr/include'' în ordinea numărului de apariții ale **cuvântului** ''FILE''. Folosiți ''grep'' cu opțiunile aferente și apoi ''sort''. **Indicație**: Căutați în pagina de manual a lui ''grep'' după, respectiv, ''recursive'', ''count'' și ''word''.
 +# Afișați interfețele și adresele IP ale sistemului în formatul ''eth0,141.85.37.225'', linie sub linie. **Soluție și exemplu de rulare**:<code>
 +razvan@einherjar:~$ /sbin/ifconfig | awk -F '[ :]+' '/Link encap/ {printf "%s,", $1;} /inet addr/ {printf "%s\n", $4;}' 
 +docker0,172.17.42.1
 +eth0,172.16.14.167
 +lo,127.0.0.1
 +vboxnet0,virbr0,192.168.122.1
 +</code>
 +
 +=== Afișare caractere speciale ===
 +
 +Inițializați variabila ''text'' la un șir de caractere.
 +
 +Afișați la ieșirea standard mesajul //"Variabila text are valoarea '"...'". Valorea poate fi actualizata."//. În mesaj, toate caracterele ghilimele (''"'') și apostrof (''%%'%%'') se vor afișa întocmai.
 +
 +=== Afișare fișiere localizate ===
 +
 +Folosiți comanda ''locate'' pentru a afișa fișierele din sistem care au extensia ''.conf''.
 +
 +Pentru fișierele de mai sus afișați directoarele din care fac parte. Eliminați duplicatele.
 +
 +<note tip>
 +Folosiți comanda ''dirname'' pentru extragerea directoarelor.
 +</note>
 +
 +Pentru directoarele de mai sus afișați numele directorului și inode-ul, separate prin virgulă ('','').
 +
 +<note tip>
 +Folosiți comanda ''stat''.
 +</note>
 +
 +Sortați directoarele de mai sus în ordinea inode-ului. Afișați numele directorului și inode-ul (separate prin virgulă ('','')).
 +
 +=== Afișare fișiere executabile pentru procese ===
 +
 +Afișați procesele al căror proces părinte este ''init'', procesul cu PID-ul ''1''.
 +
 +Pentru procesele de mai sus afișați **doar** comanda completă.
 +
 +Filtrați doar acele comenzi care încep cu ''/'' (adică este calea completă către executabil).
 +
 +Selectați **doar** calea către executabil, fără argumente către acesta.
 +
 +Pentru executabilele de mai sus afișați numele și timpul ultimei schimbării (//change time//), separate prin virgulă ('','').
 +
 +<note tip>
 +Folosiți comanda ''stat''.
 +</note>
 +
 +Sortați executabilele de mai sus în ordinea timpului ultimei schimbări.
 +
 +<note tip>
 +Sortarea poate fi simplă, nu este nevoie de sortare numerică. Formatul datei afișat de ''stat'' permite sortare de orice fel.
 +</note>
 +
 +=== Creare fișiere ===
 +
 +Creați 100 de fișiere cu numele "myfile-XY.txt", unde ''XY'' este indexul fișierului între ''00'' și ''99''.
 +
 +<note tip>
 +Folosiți comenzile ''seq'' și ''touch''.
 +</note>
 +
 +<note tip>
 +Ca model folosiți-vă de comanda<code>
 +seq -f "%02g" 1 100
 +</code>
 +</note>
  
unixmix/capitole/capitol-07.1373552377.txt.gz · Last modified: 2013/07/11 17:19 by alexef