#1 Le 29/09/2013, à 19:00
- fafy69
[Résolu] c'est probablement basique mais je n'y arrive pas...
bonsoir,
Je débute vraiment dans la création de scripts shell et la je bloque sur un truc probablement tout bête mais ou je n'arrive pas à trouver une solution sur le net (probablement pas les bons mots clés).
j’exécute cette commande :
df -h | grep -E '(sda)+' >/home/fafy/shell/dfreturn
et mon fichier dfreturn créé me retourne donc ceci :
/dev/sda1 53G 18G 33G 35% /
Ce que je cherche à faire, c'est extraire uniquement le pourcentage d'espace disque utilisé (sans le signe "%") afin de l'affecter à une variable nommée "uds" (used disk space).
Si quelqu'un peut m'aider, ce serait fort aimable
Dernière modification par fafy69 (Le 29/09/2013, à 19:42)
Hors ligne
#2 Le 29/09/2013, à 19:17
- amj
Re : [Résolu] c'est probablement basique mais je n'y arrive pas...
Salut
C'est pas très joli mais ça marche edit1 : pas dsl
df -h | sed -n '/sda/p' | cut -d " " -f21 | cut -d "%" -f1
edit2: Correction encore moins jolie
df -h |sed -n '/sda/p' |cut -d "G" -f4 | cut -d "%" -f1 | cut -d " " -f3
Dernière modification par amj (Le 29/09/2013, à 19:25)
Vive le logiciel libre !! Articles aléatoires sur Wikipédia sur les logiciels libre, sur linux.
Hors ligne
#3 Le 29/09/2013, à 19:23
- Postmortem
Re : [Résolu] c'est probablement basique mais je n'y arrive pas...
Salut,
df -h | awk -F ' *|%' '/sda/ {print $5}'
Edit :
Et avec l'affectation :
uds=$(df -h | awk -F ' *|%' '/sda/ {print $5}')
Par contre, tu peux avoir plusieurs lignes contenant sda si tu as plusieurs partitions sur ce disque et donc, tu auras 2 valeurs dans la variable.
Dernière modification par Postmortem (Le 29/09/2013, à 19:25)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#4 Le 29/09/2013, à 19:30
- pingouinux
Re : [Résolu] c'est probablement basique mais je n'y arrive pas...
Bonsoir,
Autre façon de faire :
df -h | sed -rn '/\/dev\/sda/s/.* +([[:digit:]]+)%.*/\1/p'
L'affectation ne sera ensuite correcte que s'il n'y a qu'une seule partition commençant par /dev/sda.
Hors ligne
#5 Le 29/09/2013, à 19:40
- fafy69
Re : [Résolu] c'est probablement basique mais je n'y arrive pas...
finalement, c’était pas si simple que ça !!!
Merci pour vos réponses, c'est tout à fait ce que j'avais besoin !!
Hors ligne
#6 Le 29/09/2013, à 23:24
- amj
Re : [Résolu] c'est probablement basique mais je n'y arrive pas...
finalement, c’était pas si simple que ça !!!
Si
En bash les choses complexes peuvent être décomposées en choses simples grâces à des | .
Vive le logiciel libre !! Articles aléatoires sur Wikipédia sur les logiciels libre, sur linux.
Hors ligne
#7 Le 30/09/2013, à 07:29
- fafy69
Re : [Résolu] c'est probablement basique mais je n'y arrive pas...
En rentrant ce soir c est FNAC et bouquin sur le shell script
Hors ligne
#8 Le 30/09/2013, à 13:26
- fafy69
Re : [Résolu] c'est probablement basique mais je n'y arrive pas...
Pour mon script, j'ai retenu la commande donnée par Postmortem :
df -h | awk -F ' *|%' '/sda/ {print $5}'
J'ai tenté de la décripter pour la comprendre et j'aimerais que vous me disiez si j'ai bon ou pas
1- df -h, ok pas de soucis, on invoque ici la commande "df" avec l'option "humanize"
2- "|" permet d'invoquer une seconde commande dans la commande?
3- awk -F ' *|%' invoque la commande awk avec l'option "-F" pour supprimer les caracteres alpha ainsi que le "%"?
4- '/sda/ {print $5}' la commande awk affiche la valeur numérique contenu dans la cinquieme tabulation (ou espace) de la ligne comportant la critere "sda"?
Hors ligne
#9 Le 30/09/2013, à 13:58
- Postmortem
Re : [Résolu] c'est probablement basique mais je n'y arrive pas...
L'option -F permet de définir le séparateur de colonne. Là, j'ai defini comme séparateur soit une suite d'espaces, soit %.
Après, t'as bon, je fais afficher la 5eme colonne si la ligne contient sda.
Dernière modification par Postmortem (Le 30/09/2013, à 14:01)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#10 Le 30/09/2013, à 15:12
- fafy69
Re : [Résolu] c'est probablement basique mais je n'y arrive pas...
Merci pour cette precision! Cette fonction est ideale pour la suite de mon projet!!
Hors ligne