Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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 smile edit1 : pas sad dsl

df -h | sed -n  '/sda/p' | cut -d " " -f21 | cut -d "%" -f1

edit2: Correction encore moins jolie big_smile

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.

@amj@mastodon.xyz

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 tongue !!!
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...

fafy69 a écrit :

finalement, c’était pas si simple que ça tongue !!!

Si
En bash les choses complexes peuvent être décomposées en choses simples grâces à des | smile .


Vive le logiciel libre !! Articles aléatoires sur Wikipédia sur les logiciels libre, sur linux.

@amj@mastodon.xyz

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 wink

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 smile
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