This shows you the differences between two versions of the page.
|
uso:laboratoare:new:05-cli:demo [2018/10/30 22:10] razvan.deaconescu [Demo] |
uso:laboratoare:new:05-cli:demo [2019/10/28 12:22] (current) adrian.zatreanu [Demo] |
||
|---|---|---|---|
| Line 5: | Line 5: | ||
| <code bash> | <code bash> | ||
| - | student@uso:~/uso.git$ sleep 100 & | + | student@uso:~/uso-lab$ sleep 100 & |
| [1] 12822 | [1] 12822 | ||
| - | student@uso:~/uso.git$ ps -o pid,ppid,cmd | + | student@uso:~/uso-lab$ ps -o pid,ppid,cmd |
| PID PPID CMD | PID PPID CMD | ||
| 22346 22345 bash | 22346 22345 bash | ||
| Line 24: | Line 24: | ||
| <code bash> | <code bash> | ||
| - | student@uso:/uso.git/$ ls | grep "lab" | + | student@uso:~/uso-lab$ ls /dev | grep "std" |
| - | lab02 | + | stderr |
| - | lab03 | + | stdin |
| - | lab04 | + | stdout |
| - | lab05 | + | |
| - | lab09 | + | |
| - | lab10 | + | |
| - | lab12 | + | |
| - | labs | + | |
| </code> | </code> | ||
| Aici, outputul comenzii ''ls'' va fi folosit ca intrare pentru [[https://linux.die.net/man/1/grep|grep]]. | Aici, outputul comenzii ''ls'' va fi folosit ca intrare pentru [[https://linux.die.net/man/1/grep|grep]]. | ||
| - | ==== Exit code ==== | + | ==== Cod de ieșire ==== |
| Orice proces care rulează în sistem se poate termina fie cu ''SUCCES'', fie cu ''EROARE''. Pentru a verifica | Orice proces care rulează în sistem se poate termina fie cu ''SUCCES'', fie cu ''EROARE''. Pentru a verifica | ||
| dacă un proces s-a terminat sau nu cu succes, putem inspecta valoarea variabilei speciale ''$?''. | dacă un proces s-a terminat sau nu cu succes, putem inspecta valoarea variabilei speciale ''$?''. | ||
| <code bash> | <code bash> | ||
| - | student@uso:/uso.git/$ ping -c 1 8.8.8.8 | + | student@uso:~/uso-lab$ ping -c 1 8.8.8.8 |
| PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. | PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. | ||
| 64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=245 ms | 64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=245 ms | ||
| Line 49: | Line 45: | ||
| rtt min/avg/max/mdev = 245.160/245.160/245.160/0.000 ms | rtt min/avg/max/mdev = 245.160/245.160/245.160/0.000 ms | ||
| [1]+ Done sleep 100 | [1]+ Done sleep 100 | ||
| - | student@uso:/uso.git/$ echo $? | + | student@uso:~/uso-lab$ echo $? |
| 0 | 0 | ||
| </code> | </code> | ||
| <code bash> | <code bash> | ||
| - | student@uso:/uso.git/$ ping 192.12.12.1 | + | student@uso:~/uso-lab$ ping 192.12.12.1 |
| PING 192.12.12.1 (192.12.12.1) 56(84) bytes of data. | PING 192.12.12.1 (192.12.12.1) 56(84) bytes of data. | ||
| ^C | ^C | ||
| Line 59: | Line 55: | ||
| 5 packets transmitted, 0 received, 100% packet loss, time 4100ms | 5 packets transmitted, 0 received, 100% packet loss, time 4100ms | ||
| - | student@uso:/uso.git/$ echo $? | + | student@uso:~/uso-lab$ echo $? |
| 1 | 1 | ||
| </code> | </code> | ||
| <note> | <note> | ||
| - | Codul ''0'' ne spune că procesul s-a terminat cu succes, iar orice altceva reprezintă un | + | Codul de ieșire ''0'' ne spune că procesul s-a terminat cu succes, iar orice altceva reprezintă un |
| [[https://shapeshed.com/unix-exit-codes/|cod de eroare]]. | [[https://shapeshed.com/unix-exit-codes/|cod de eroare]]. | ||
| </note> | </note> | ||
| Line 74: | Line 70: | ||
| <code bash> | <code bash> | ||
| - | student@uso:/uso.git/$ sudo apt-get install sl; ps | + | student@uso:~/uso-lab$ sudo apt-get install sl; ps |
| [sudo] password for student: | [sudo] password for student: | ||
| Reading package lists... Done | Reading package lists... Done | ||
| Line 122: | Line 118: | ||
| </code> | </code> | ||
| - | ==== Execuția mai multor procese ==== | + | ==== Execuția condiționată a mai multor procese ==== |
| De multe ori putem avea o situație în care 2 procese depind unul de celălalt. Pentru a realiza acest | De multe ori putem avea o situație în care 2 procese depind unul de celălalt. Pentru a realiza acest | ||
| lucru folosim operatorul ''&&'' care ne asigură faptul că a doua comandă se va executa doar în cazul în | lucru folosim operatorul ''&&'' care ne asigură faptul că a doua comandă se va executa doar în cazul în | ||
| Line 128: | Line 124: | ||
| <code bash> | <code bash> | ||
| - | student@uso:/uso.git/$ cat my_nonexisting_file.txt && ls | + | student@uso:~/uso-lab$ cat my_nonexisting_file.txt && ls |
| cat: my_nonexisting_file.txt: No such file or directory | cat: my_nonexisting_file.txt: No such file or directory | ||
| - | student@uso:/uso.git/$ echo $? | + | student@uso:~/uso-lab$ echo $? |
| 1 | 1 | ||
| </code> | </code> | ||
| Observăm faptul că fișierul ''my_nonexisting_file.txt'' nu există și faptul că a doua comandă nu se | Observăm faptul că fișierul ''my_nonexisting_file.txt'' nu există și faptul că a doua comandă nu se | ||
| - | mai execută, exact ce am dorit să arătăm. | + | mai execută, exact ce am dorit să arătăm, codul de eroare 1 arătând că prima comandă nu s-a |
| + | terminat cu succes. | ||
| Schimbăm puțin abordarea astfel încât ambele comenzi să fie executate. | Schimbăm puțin abordarea astfel încât ambele comenzi să fie executate. | ||
| <code bash> | <code bash> | ||
| - | student@uso:/uso.git/$ ping -c 1 8.8.8.8 && finger student | + | student@uso:~/uso-lab$ ping -c 1 8.8.8.8 && finger student |
| PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. | PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. | ||
| 64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=32.4 ms | 64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=32.4 ms | ||
| Line 154: | Line 151: | ||
| No mail. | No mail. | ||
| No Plan. | No Plan. | ||
| - | student@uso:/uso.git/$ echo $? | + | student@uso:~/uso-lab$ echo $? |
| 0 | 0 | ||
| </code> | </code> | ||
| Line 162: | Line 159: | ||
| <code bash> | <code bash> | ||
| - | student@uso:/uso.git/$ cat my_nonexisting_file.txt || id root | + | student@uso:~/uso-lab$ cat my_nonexisting_file.txt || id root |
| cat: my_nonexisting_file.txt: No such file or directory | cat: my_nonexisting_file.txt: No such file or directory | ||
| uid=0(root) gid=0(root) groups=0(root) | uid=0(root) gid=0(root) groups=0(root) | ||
| Line 170: | Line 167: | ||
| <code bash> | <code bash> | ||
| - | student@uso:/uso.git/$ cat /etc/passwd || ls | + | student@uso:~/uso-lab$ cat /etc/passwd || ls |
| root:x:0:0:root:/root:/bin/bash | root:x:0:0:root:/root:/bin/bash | ||
| daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin | daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin | ||
| Line 225: | Line 222: | ||
| <code bash> | <code bash> | ||
| - | student@uso:~/uso.git/$ cd labs/ | + | student@uso:~/uso-lab$ ls ; ps > out |
| - | student@uso:~/uso.git/labs/$ ls ; ps > out | + | |
| 00-intro 02-process 04-appdev 06-hw-boot 08-net 10-sec | 00-intro 02-process 04-appdev 06-hw-boot 08-net 10-sec | ||
| 01-fs 03-user 05-cli 07-storage 09-vm 11-ctf | 01-fs 03-user 05-cli 07-storage 09-vm 11-ctf | ||
| - | student@uso:~/uso.git/labs/$ cat out | + | student@uso:~/uso-lab$ cat out |
| PID TTY TIME CMD | PID TTY TIME CMD | ||
| 13052 pts/2 00:00:00 ps | 13052 pts/2 00:00:00 ps | ||
| Line 241: | Line 237: | ||
| <code bash> | <code bash> | ||
| - | student@uso:~/uso.git/labs/$ ( ls ; ps ) > out2 | + | student@uso:~/uso-lab$ ( ls ; ps ) > out2 |
| - | student@uso:~/uso.git/labs/$ cat out2 | + | student@uso:~/uso-lab$ cat out2 |
| 00-intro | 00-intro | ||
| 01-fs | 01-fs | ||
| Line 267: | Line 263: | ||
| ==== Globbing ==== | ==== Globbing ==== | ||
| În cazul în care vrem să afișăm toate fișierele ale căror nume încep cu litera ''a'' și au extensia | În cazul în care vrem să afișăm toate fișierele ale căror nume încep cu litera ''a'' și au extensia | ||
| - | ''.txt'', putem folosi ''globbing''. Simbolul ''*'' este un wilecard și ține locul pentru **orice | + | ''.txt'', putem folosi ''globbing''. Simbolul ''*'' este un wildcard și ține locul pentru **orice |
| de oricâte ori**. | de oricâte ori**. | ||
| <code bash> | <code bash> | ||
| - | student@uso:~/uso.git/labs/$ cd ~/uso.git/labs/05-cli/support/demo/ | + | student@uso:~/uso-lab$ cd ~/uso-lab/05-cli/support/demo/ |
| student@uso:~/.../05-cli/support/demo/$ ls a*.txt | student@uso:~/.../05-cli/support/demo/$ ls a*.txt | ||
| a1.txt a3.txt a5.txt a7.txt a9.txt | a1.txt a3.txt a5.txt a7.txt a9.txt | ||
| Line 301: | Line 297: | ||
| <code bash> | <code bash> | ||
| - | student@uso:~$ cd uso.git/ | + | student@uso:~$ cd uso-lab/ |
| - | student@uso:~/uso.git/$ mouse="Jerry" | + | student@uso:~/uso-lab/$ mouse="Jerry" |
| - | student@uso:~/uso.git/$ echo ${mouse} | + | student@uso:~/uso-lab/$ echo ${mouse} |
| Jerry | Jerry | ||
| </code> | </code> | ||
| Line 311: | Line 307: | ||
| <code bash> | <code bash> | ||
| - | student@uso:~/uso.git/$ mouse="Jerry" | + | student@uso:~/uso-lab/$ mouse="Jerry" |
| - | student@uso:~/uso.git/$ echo $mouse_the_best | + | student@uso:~/uso-lab/$ echo $mouse_the_best |
| - | student@uso:~/uso.git/$ | + | student@uso:~/uso-lab/$ |
| </code> | </code> | ||
| Line 322: | Line 318: | ||
| <code bash> | <code bash> | ||
| - | student@uso:~/uso.git/$ mouse="Jerry" | + | student@uso:~/uso-lab/$ mouse="Jerry" |
| - | student@uso:~/uso.git/$ echo ${mouse}_the_best | + | student@uso:~/uso-lab/$ echo ${mouse}_the_best |
| Jerry_the_best | Jerry_the_best | ||
| </code> | </code> | ||
| Un alt caz în care expandarea este utilă este evaluarea expresiilor aritmetice. Pentru început, declarăm 2 | Un alt caz în care expandarea este utilă este evaluarea expresiilor aritmetice. Pentru început, declarăm 2 | ||
| - | variabile propii în shell: | + | variabile în shell: |
| <code bash> | <code bash> | ||
| - | student@uso:~/uso.git/$ a=3 | + | student@uso:~/uso-lab/$ a=3 |
| - | student@uso:~/uso.git/$ b=4 | + | student@uso:~/uso-lab/$ b=4 |
| - | student@uso:~/uso.git/$ echo $a && echo $b | + | student@uso:~/uso-lab/$ echo $a && echo $b |
| 3 | 3 | ||
| 4 | 4 | ||
| Line 341: | Line 337: | ||
| <code bash> | <code bash> | ||
| - | student@uso:~/uso.git/$ echo $((a+b)) | + | student@uso:~/uso-lab/$ echo $((a+b)) |
| 7 | 7 | ||
| </code> | </code> | ||
| Line 347: | Line 343: | ||
| <note> | <note> | ||
| Dacă am fi folosit comanda ''echo $a+$b'', shell-ul ar fi înlocuit ''$a'' cu valoarea lui a, adică ''3'' | Dacă am fi folosit comanda ''echo $a+$b'', shell-ul ar fi înlocuit ''$a'' cu valoarea lui a, adică ''3'' | ||
| - | și ''$b'' cu valoarea lui b, adică ''4'', iar rezultatul comenzii va fi ''3+4'', nu ''7'' așa cum ne-am fi | + | și ''$b'' cu valoarea lui b, adică ''4'', iar rezultatul comenzii ar fi fost șirul de caractere ''3+4'', |
| - | așteptat. | + | nu ''7'' așa cum ne-am fi așteptat. |
| </note> | </note> | ||
| Line 355: | Line 351: | ||
| <code bash> | <code bash> | ||
| - | student@uso:/uso.git/$ env | + | student@uso:~/uso-lab$ env |
| LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36: | LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36: | ||
| LC_MEASUREMENT=ro_RO.UTF-8 | LC_MEASUREMENT=ro_RO.UTF-8 | ||
| Line 390: | Line 386: | ||
| LC_TIME=ro_RO.UTF-8 | LC_TIME=ro_RO.UTF-8 | ||
| _=/usr/bin/env | _=/usr/bin/env | ||
| - | OLDPWD=/home/student/uso/labs/05-cli/support/demo | + | OLDPWD=/home/student/uso-lab/05-cli/support/demo |
| </code> | </code> | ||