web-dev-qa-db-fra.com

Obtenez l'espace libre disponible dans le répertoire en cours à bash

Je connais df -h et pwd, mais cela semble un peu complexe pour la partie correspondante de regex. Des idées?

26
Cheng

La sortie peut être apportée un peu plus facile à analyser en utilisant le -P option qui garantira que:

  1. Les informations sur chaque système de fichiers sont toujours imprimées sur une seule ligne; Un appareil de montage n'est jamais mis sur une ligne par elle-même. Cela signifie que si le nom du dispositif de montage est supérieur à 20 caractères (par exemple, pour certaines supports de réseau), les colonnes sont mal alignées.

Cela facilite beaucoup plus facilement l'espace disponible:

$ df -Ph . | tail -1 | awk '{print $4}'

(-h utilise des mégaoctets, des gigaoctets et ainsi de suite. Si votre système ne l'a pas, utilisez -k pour des kilo-octets seulement.)

Si nous passons df un chemin, il ne va que 2 rangs: une ligne d'en-tête, puis les données sur le système de fichiers contenant le chemin. Nous pouvons utiliser la queue pour saisir juste la deuxième rangée. Nous savons que l'espace disponible est dans la 4ème colonne, donc nous saisissons cela avec awk. Tout cela pourrait être fait avec awk:

$ df -Ph . | awk 'NR==2 {print $4}'

ou de nombreux autres ensembles de filtres .

46
Steven D

Que diriez-vous de faire df -h .. Cela vous donnera l'espace libre disponible de la partition que votre répertoire de travail actuel est dans.

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% /
11
Christian

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
4
xerostomus