User Tools

Site Tools


capitole:capitol-04

Capitolul 4: Command Line Tricks

Alocare de timp: 4 ore

Slide-uri de prezentare

Hands on (1)

  • Un proces se poate termina cu succes (status 0) sau cu eroare (status diferit de 0).
  • Cum putem vedea statusul ultimului proces?
  • trueși false sunt două programe care întotdeauna se termină cu succes, respectiv cu eroare. Verificați această afirmație.
  • 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”
  • Setați două variabile, a și b la “Alice” și “Bob”.
    • Afișați mesajul “Alice and Bob”, folosind variabilele.
      • Aveți grijă la ghilimele!
  • 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"
  • Salvați în variabila OUTPUT ieșirea de la rularea comenzii ls.
  • Vizualizați conținutul variabilei OUTPUT.
  • Aflați dimensiunea executabilului comenzii ls.
    • Hints: which ls, ls -lh

Hands on (2)

  • Aflați ce face comanda seq.
    • Rulati seq 100.
    • Rulati seq 100 200.
    • Rulati seq 100 2 200.
  • Folosind comanda seq generați toate numerele de la 1000 de la 2000, din 10 în 10.
  • Creați directorul the_one_dir în home-ul vostru și întrati în el.
  • Creați cu un one liner 100 de fișiere/directoare.
    • Numerele pare for fi directoare, numele impare vor fi fișiere.
  • Folosiți if și condiții de test pentru a afișa care dintre fișierele din the_one_dir sunt fișiere normale și care directoare.
    • Folosiți ls pentru a genera conținutul directorului.
  • Scrieți într-un editor următorul shell script cu numele my_first_script.sh și rulați-l.
#!/bin/bash
echo "Hello world."
  • Rulați întăi comanda cu comanda bash my_first_script.sh.
  • Încercați, apoi, cu comanda ./my_first_script.sh.
  • Merge? De ce nu? Adăugați drepturile necesare pentru a-l rula în ambele moduri.
  • Creați un script (numit args_script.sh) care afișează primul argument primit.
    • Adăugați drept de execuție.
    • Rulați scriptul prin ./args_script.sh Hello world.
    • Rulați scriptul prin ./args_script.sh “Hello world”.
    • Rulați scriptul fără nici un parametru.
    • Ce a afișat în fiecare caz?
  • Îmbunătățiți scriptul pentru a afișa toate argumentele date.
    • Adăugați drept de execuție și rulați cu diverși parametri.
  • Îmbunătățiți scriptul pentru a se verifica că se primește cel puțin un parametru.
  • Scrieți un script numit get_pid.sh care să afișeze PID procesului scriptului.
    • Rulați scriptul de mai multe ori, folosind bash, respectiv ./nume_script.

Hands on (3)

  • Vom folosi următorul text:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh

games:x:5:60:games:/usr/games:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh

nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
gdm:x:106:114:Gnome Display Manager:/var/lib/gdm:/bin/false

kernoops:x:108:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
ieu:x:1000:1000:ieu,,,:/home/ieu:/bin/bash
  • Copiați textul de mai sus și salvați-l într-un fișier numit passwd aflat în directorul home al utilizatorului thales.
    • Fișierul are o structură asemănătoare /etc/passwd (informații despre utilizatorii sistemului)
      • nume utilizator
      • dacă parola este în /etc/shadow criptată
      • UID, GID
      • informații auxiliare
      • care este directorul home al utilizatorului
      • shell-ul implicit al utilizatorului
  • Rulați comenzile de mai jos. Ce observați pentru fiecare din acestea?
cat passwd | grep var
cat passwd | grep -v var
cat passwd | grep ^r
cat passwd | grep h$
cat passwd | grep ^i.*h$
cat passwd | grep ^[r,i]
  • Realizați un script care afișează numele fișierelor din /usr/include care includ antentul features.h.
    • Hint: grep, cut)

Resurse utile

capitole/capitol-04.txt · Last modified: 2013/07/05 06:41 by alexef