Réponses:
La sortie peut être rendue un peu plus facile à analyser en utilisant l' -Poption qui garantira que:
- Les informations sur chaque système de fichiers sont toujours imprimées sur exactement une ligne; un périphérique de montage n'est jamais mis en ligne seul. Cela signifie que si le nom du périphérique de montage comporte plus de 20 caractères (par exemple, pour certains montages réseau), les colonnes sont mal alignées.
Il est ainsi beaucoup plus facile d'obtenir uniquement l'espace libre disponible:
$ df -Ph . | tail -1 | awk '{print $4}'
( -hutilise des mégaoctets, des gigaoctets, etc. Si votre système ne l'a pas, utilisez -kuniquement des kilo-octets.)
Si nous passons dfun chemin, il ne renverra que 2 lignes: une ligne d'en-tête puis les données sur le système de fichiers qui contient le chemin. Nous pouvons utiliser la queue pour saisir uniquement la deuxième rangée. Nous savons que l'espace disponible est dans la 4e colonne, alors nous saisissons cela avec awk. Tout cela pourrait se faire avec awk:
$ df -Ph . | awk 'NR==2 {print $4}'
ou de nombreux autres ensembles de filtres .
$PWDau lieu d'utiliser la substitution de commande et de supprimer le besoin de queue: df -Ph $PWD | awk 'NR==2{print $4}'
awkest mieux. J'ai inclus la commande plus longue parce que je voulais avoir un exemple de la façon dont on peut construire une chaîne de commandes simples pour faire quelque chose de plus compliqué. J'ai mis à jour la réponse pour inclure votre amélioration.
-Pest standard ( Pc'est pour POSIX). Mais -hc'est une extension GNU (qui existe également sur certains autres systèmes, mais par exemple sur OpenBSD, elle est incompatible avec -P).
df -h --output=avail . | tail -1
time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done }) ne révèle aucune différence significative de vitesse, ce qui n'est pas étonnant - l'invocation tailn'est pas coûteuse et awksera épargnée pour passer à la fin de l'entrée ... Il pourrait y avoir une différence sur le PDP-11 ...
Que diriez-vous de faire df -h .. Cela vous donnera l'espace libre disponible de la partition dans laquelle se trouve votre répertoire de travail actuel.
Un petit exemple:
/usr/local/nagios/libexec # df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg00-lvol1
9.9G 6.1G 3.4G 65% /
En octets:
df --output=avail -B 1 "$PWD" | tail -n 1
Lisible par l'homme:
df --output=avail -h "$PWD" | tail -n 1
ou
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --to="iec"
ou
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --grouping
du -h?