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:
Vous pouvez optimiser votre commande en utilisant la variable d'environnement $PWDau lieu d'utiliser la substitution de commande et de supprimer le besoin de queue: df -Ph $PWD | awk 'NR==2{print $4}'
SiegeX
@SiegeX: Je suis d'accord que tout 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.
Steven D
-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).
Gilles 'SO- arrête d'être méchant'
Vous pouvez le faire sans sortir en utilisant le commutateur --output = avail: df -h --output=avail . | tail -1
Floyd
"Vous pouvez optimiser votre commande". Pas vraiment. L'exécution des deux tuyaux 10'000 fois (comme dans 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 ...
David Tonhofer
10
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 .FilesystemSizeUsedAvailUse%Mounted on
/dev/mapper/vg00-lvol1
9.9G6.1G3.4G65%/
du -h
?Réponses:
La sortie peut être rendue un peu plus facile à analyser en utilisant l'
-P
option qui garantira que:Il est ainsi beaucoup plus facile d'obtenir uniquement l'espace libre disponible:
(
-h
utilise des mégaoctets, des gigaoctets, etc. Si votre système ne l'a pas, utilisez-k
uniquement des kilo-octets.)Si nous passons
df
un 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 avecawk
. Tout cela pourrait se faire avecawk
:ou de nombreux autres ensembles de filtres .
la source
$PWD
au lieu d'utiliser la substitution de commande et de supprimer le besoin de queue:df -Ph $PWD | awk 'NR==2{print $4}'
awk
est 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.-P
est standard (P
c'est pour POSIX). Mais-h
c'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'invocationtail
n'est pas coûteuse etawk
sera é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:
la source
En octets:
Lisible par l'homme:
ou
ou
la source