dimanche 28 janvier 2018

les commandes linux


Initiation à UNIX – TP



Ces exercices ont pour objectif de revoir le cours et utiliser les commandes UNIX sur les fichiers. Travail en binôme (groupe de 2 étudiants).

  1. Donnez les différentes façons pour créer un fichier vide.

    • touch nom_fichier
    • echo -n > nom_vichier
    • cat /dev/null > nom_fichier
    • > nom_fichier
  2. (2 pts) Supposons qu'un fichier data contient les lignes suivantes :

aaabc2;

absdsdc.

Qwertyui.

zxcasdfgcvb,

aafdsfsdf;

cbccvf45;

ab333c5;

aa34c;

    Que font et quel est le résultat des commandes ci-dessous ?

    $ grep 'a.*c' data

    retourne les lignes du fichier data ayant la lettre a et suivi d'un caractère, de n'importe quel chaine de caractères et la lettre c

    aaabc2;

    absdsdc.

    zxcasdfgcvb,

    ab333c5;

    aa34c;

    $ grep 'c[0-9]' data

    retourne les lignes du fichier data ayant la lettre c, suivi d'un chiffre entre 0 et 9

    aaabc2;

    ab333c5;

  1. (2 pts) Expliquez le résultat des commandes ci-dessous ?

    $ ls -Rl | grep rwxr-- | more

    Affiche page par page tous fichiers, dossier et sous-dossier ayant les droits lecture-ecriture-excution de l'utilisateur et aucun droit pour le group de l'utilisateur et aucun droit pour les autres utilisateur

    $ echo toto | mkdir

    Une erreur car la commande mkdir attend en entrée une chaine de caractere et non une sortie

  2. Affichez la liste de tous les fichiers dont l’extension est « .so » avec leurs attributs (option -l ) dans le répertoire /usr/lib et ses sous-repertoires eventuels (note culturelle : ces fichiers sont des bibliothèques).

    ls -Rl /usr/lib | grep '.so'

  3. Comment peut-on écrire une commande sur deux lignes séparées (dans le cas d'une commande avec beaucoup de paramètres par exemple) ? Expliquez.

    Oui il est possible d'ecrire un commande sur deux lignes séparées

    Il faut terminer toute ligne suivi de la suite de la commande par un "\"

    debut_commande \

    > suite_commande

  4. Quelle est la différence entre ( cd foo; ls; ) et { cd foo; ls; }? Expliquez.

    (cd foo; ls;) permet de regrouper les commandes cd foo et ls en un block

    {cd foo; ls;} n'est pas valide

  5. (2 points) La commande ls -la rep fournit le résultat ci-dessous :

    total 6
    drwxrwxr-x 2 paul staff 512 Oct 13 15:12 .
    drwxr-xr-x 8 root root  512 Sep 23 05:52 ..
    -rwx---r-x 1 paul staff 417 Oct 13 19:17 fiche

    Précisez pour chacune des actions ci-après, si elle est autorisée ou non en donnant la raison :

    1. tout membre du groupe staff peut lire fiche

      Autorisée car le droit de lecture est attribué aux membres du group staff

    2. tout membre du groupe staff peut renommer fiche

      Autorisé car le group staff a tous les droits sur le dossier contenant le fichier fiche

  1. Créez un sous-répertoire question. Supprimez tous les droits d'accès pour le groupe et les autres. Comment peut-on obtenir le même résultat sans utiliser la commande chmod et sans changer le masque du shell après l’opération?

    mkdir -m=u+rwx,g-rwx,o-rwx question

  2. Créez une commande « la » qui liste tous les fichiers d’un répertoire (y compris les fichiers cachés - commençant par un point).

    alias la="ls -al"

  3. Quelle différence existe-t-il entre la copie d'un fichier (avec cp) et l'établissement d'un lien physique (avec ln) ?

    la différence entre cp et ln est que :

    • cp cree un nouveau fichier avec un nouveau inode mais en gardant le meme contenu de fichier
    • ln ne cree pas d'inode pour le lien et garde le meme contenu

    • Quelle est la différence entre $(ls) et `ls` ?

      les deux commandes ne sont pas bonne

    • Quel est le résultat de la commande type help ? Quel est le rôle de cette commande type ?

      help est une primitive du shell

      Elle permet de dire si une commande est interne au Shell ou pas

    • (2 points)Transcrivez les commandes suivantes de la notation classique vers la notation octale, ou vice versa.

      chmod u=rwx,g=x,o=r fic1

      chmod 714 fich1

      chmod u=rx,g=wx,o=r fic2

      chmod 534 fic2

      chmod u=rx,g=wx,o=r fic2

      chmod 653 fic3

      chmod u=rw,g=rx,o=wx fic3

      chmod 103 fic4

      chmod u=x,o=wx fic4

  1. Afficher récursivement le contenu des répertoires dans /home sans l'affichage des nombreux messages d'erreur tels que l'accès au répertoire interdit.

    ls -R /home 2> /dev/null

  2. Donnez la commande qui copie, dans votre répertoire public_html, les fichiers dont le nom se termine par .html ou .htm du répertoire public_html de l'utilisateur paul.

    find $HOME/public_html \( -name "*.html" -or -name "*.htm" \) -exec cp {} /home/paul/public_html \;

  3. Observer le résultat des commandes echo a{d,e,f}b et echo a{1..20..2}. Créer les répertoire lib, src, doc dans le répertoire de travail par une seule commande mkdir avec un seul argument. Que déduirez-vous le rôle du méta-caractère '{}' ici ?

    creation des repertoires : mkdir {lib, src, doc}

    {} permet de passer les argurments se trouvant à l'interieur un à un a la commande