Pour obtenir la sortie de df
pour afficher les données en ko il suffit d'utiliser le -k
drapeau :
df -k
Aussi, si vous spécifiez un système de fichiers à df
, vous obtiendrez les valeurs pour ce détail, au lieu de toutes :
df -k /example
Concernant le corps de votre question:vous souhaitez extraire la quantité d'espace disque libre sur un système de fichiers donné. Cela nécessitera un certain traitement.
Étant donné un df -k
normal sortie :
$ df -k /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7223800 4270396 2586456 63% /
Vous pouvez obtenir le Available
(4ème colonne) par exemple avec awk
ou cut
(précédemment canalisé vers tr
à squeeze-repeats
(-s
) pour les espaces):
$ df -k /tmp | tail -1 | awk '{print $4}'
2586456
$ df -k /tmp | tail -1 | tr -s ' ' | cut -d' ' -f4
2586456
Comme toujours, si vous souhaitez stocker le résultat dans une variable, utilisez le var=$(command)
syntaxe comme celle-ci :
$ myUsed=$(df -k /tmp | tail -1 | awk '{print $4}')
$ echo "$myUsed"
2586456
De plus, d'après le commentaire de Tim Bunce, vous pouvez gérer les noms de système de fichiers longs en utilisant --direct
pour obtenir un -
à la place, pour qu'il n'imprime pas une ligne qui casse le moteur :
$ df -k --direct /tmp
Filesystem 1K-blocks Used Available Use% Mounted on
- 7223800 4270396 2586456 63% /
Vous pouvez utiliser la commande stat(2) pour afficher les blocs libres et également pour connaître la taille de chaque bloc, par exemple
stat -f --printf="%a %s\n" /
affichera le nombre de blocs libres (%a) sur un système de fichiers donné (/) suivi d'une taille de bloc (%s). Pour obtenir la taille en Ko, vous pouvez utiliser la commande bc(1) comme dans l'exemple suivant :
stat -f --printf="%a * %s / 1024\n" / | bc
Enfin, pour mettre ceci dans une variable, il suffit d'utiliser la substitution de backtick (ou $() comme dans la première réponse) :
SOMEVAR=`stat -f --printf="%a * %s / 1024\n" / | bc`