YOLOU TP07 SCR 1.2 I. La commande expr permet de montrer la valeur de l’expression de la sortie standard. Ca calcule le nombre caractère de la chaine de caractères. [yolou@archlinux TP07]$ expr length STRING 6 Explication : Cela montre le nombre de caractere dans cette chaine de caractères [yolou@archlinux TP07]$ expr length stock_market 12 Explication : Ici si on compte de s à t ça fait 12. [yolou@archlinux TP07]$ expr substr STRING POS LENGTH Explication : [yolou@archlinux TP07]$ expr substr stock_market 1 5 stock Explication : Cela recupere les caractères de la chaine de caractères de 1 la position de longueur de 5 donc 1 2 3 4 5. Donc stock. [yolou@archlinux TP07]$ expr substr stock_market 7 12 market Explication : Cela reproduit la meme chose de 7 à 12. Donc market. [yolou@archlinux TP07]$ expr index stock_market "_c" 4 expr index donne la possition du char sur une chaine de chaine de caractère [yolou@archlinux TP07]$ expr index stock_market "_" 6 Explication : Car elle affiche la position du caractère “_” c’est 6 [yolou@archlinux TP07]$ expr index stock_market "_c" 4 Explication : En gros il va donner 4 parce que il est premier à apparaitre il va mettre la position qui a apparait premiere ça aurait ete “sc” on aurait eu 1 2. // On affecte quatre variables : x,y,z,t du shell par chacune des sous -chaines correspondant aux quatres octes dans le mot affectee dans addr . On ne fait pas a la main, on fai par expr en utilsant le mécanisme de subtistution d’une commande par son résultat // [yolou@archlinux TP07]$ addr=10110010111000101000011101110010 [yolou@archlinux TP07]$ expr length $addr 32 [yolou@archlinux TP07]$ x=$(expr substr $addr 1 8) [yolou@archlinux TP07]$ echo $x 10110010 [yolou@archlinux TP07]$ y=$(expr substr $addr 9 8) [yolou@archlinux TP07]$ echo $y 11100010 [yolou@archlinux TP07]$ z=$(expr substr $addr 17 8) [yolou@archlinux TP07]$ echo $y 11100010 [yolou@archlinux TP07]$ t=$(expr substr $addr 25 8) [yolou@archlinux TP07]$ echo $t 01110010 3. // On utilise maintenant le fait que le shell évalue des nombres donnés dans n’importe quelle base. Ainsi, 2#101 est compris comme le nombre 101 dans la base 2. On utilise le mécanisme de l’´evaluation arithm´etique pour vérifier à quoi le shell ´evalue un tel nombre :// $((...)) dit au shell que le contexte est arithmétique : on calcule ce qui est à l'intérieur $((2#...)) ce que je te donne ici est en base 2 exemple $((2#101)) est remplacé par 5 [yolou@archlinux TP07]$ echo $((2#101)) 5 Explication : cela explique quoi ? ECHO VEUT DIRE affiche montrer il donne l'argument entre les parathèse avec qui convertie ça en base de 2 avec cette exemple 101 en binaire devient 5 $ echo $((2#101110)) 46 Explication : cela explique quoi ? ECHO VEUT DIRE affiche montrer il donne l'argument entre les parathèse avec qui convertie ça en base de 2 avec cette exemple 101 en binaire devient 46 4. // On affecte alors la variable addr_dot du shell par la notation décimale correspondant à addr.// [yolou@archlinux TP07]$ addr_dot=$((2#$x)).$((2#$y)).$((2#$z)).$((2#$t)) [yolou@archlinux TP07]$ echo $addr_dot 178.226.135.114 addr_dot=$((2#$x)).$((2#$y)).$((2#$z)).$((2#$t)) on verifie par echo $addr_dot II- 1. La commande sort permet de trier des lignes d'un fichier texte [yolou@archlinux TP07]$ ls -l total 36 -rw-r--r-- 1 yolou senart24 11371 Nov 6 11:59 TP07-fichiereponses-SCR1.2.odt -rw-r--r-- 1 yolou senart24 3353 Nov 13 11:30 TP07-fichiereponses-SCR1.2.txt -rw-r--r-- 1 yolou senart24 7839 Nov 13 11:28 find-output.txt -rw-r--r-- 1 yolou senart24 9672 Nov 13 11:26 ls-output.txt On prend le 5eme champs la taille pour ça on prend le la commande l'option sort -k key1.3, keykey.5 tout ça vient de la definition key Donc si je veux un trie sur le champs 5 : je dis sort -nk (n pour numerique) 5,5 ls-output.txt [yolou@archlinux TP07]$ sort -nk 5,5 ls-output.txt -rw-r--r-- 1 root root 0 6 nov. 2016 odbc.ini -rw-r--r-- 1 root root 0 6 nov. 2016 odbcinst.ini -rw-r--r-- 1 root root 0 30 sept. 2015 arch-release -rw-r--r-- 1 root root 0 30 sept. 2015 motd total 1048 -rw-r--r-- 1 root root 4 5 juil. 2016 hostname.ori -rw-r--r-- 1 root root 9 13 juil. 2016 hostname -rw-r--r-- 1 root root 10 5 juil. 2016 vconsole.conf -rw-r--r-- 1 root root 17 5 juil. 2016 locale.conf lrwxrwxrwx 1 root root 19 5 juil. 2016 mtab -> ../proc/self/mounts -rw-r--r-- 1 root root 20 30 sept. 2015 issue lrwxrwxrwx 1 root root 21 5 juil. 2016 os-release -> ../usr/lib/os-release lrwxrwxrwx 1 root root 25 6 juil. 2017 localtime -> ../usr/share/zoneinfo/UTC -rw-r--r-- 1 root root 28 14 nov. 2016 bash.bash_logout -r--r--r-- 1 root root 33 5 juil. 2016 machine-id -rw-r----- 1 root brlapi 33 31 oct. 2016 brlapi.key -rw-r--r-- 1 root root 49 18 juil. 13:11 resolv.conf -rw-r--r-- 1 root root 52 30 sept. 2015 shells 2.(1) De la date la plus récente à la moins récente : bash Copier le code sort -t: -k3,3r find-output.txt Explication : -t: : Utilise : comme séparateur. -k3,3 : Trie sur la 3e colonne (qui contient les dates). -r : Inverse l'ordre pour trier de manière décroissante (plus récent → moins récent). (2) De la date la plus ancienne à la moins ancienne : bash Copier le code sort -t: -k3,3 find-output.txt Explication : -t: : Utilise : comme séparateur. -k3,3 : Trie sur la 3e colonne (les dates) en ordre croissant.