145 lines
5.5 KiB
Plaintext
145 lines
5.5 KiB
Plaintext
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.
|