Me gustaría un método para capturar el uso del disco de una partición particular, utilizando el directorio donde está montada la partición. La salida debería ser un número entero sin relleno o símbolos siguientes, ya que me gustaría guardarlo en una variable.
Lo he usado df --output=pcent /mount/point
, pero necesito recortar la salida ya que tiene un encabezado innecesario, un espacio de relleno único antes del valor y un símbolo% que sigue el valor de esta manera:
Use%
83%
En este caso, la salida que me gustaría sería simplemente 83
. No conozco ningún inconveniente en el uso de la salida de df
, pero estoy feliz de aceptar otros métodos que no dependen de él.
command-line
bash
scripts
disk-usage
Arronico
fuente
fuente
tr
, me estaba metiendo la cabeza en un lío con ideas sed y awk.Respuestas:
Yo usaría ...
No estoy seguro si sed es más rápido, pero no puedo recordar los valores de sed.
fuente
time
para probar sale tan rápido como sed.tr
es más fácil de leer quesed
.Aquí hay una solución awk:
Básicamente, lo que sucede aquí es que tratamos el carácter '%' como separador de campo (delimitador de columna) e imprimimos la primera columna $ 1 solo cuando el número de registros es igual a dos (el
NR==2
parte)Si quisiéramos usar solo
bash
herramientas, podríamos hacer algo como esto:Y por diversión, alternativa a
sed
través del grupo de captura y-r
para expresiones regulares extendidas:fuente
sed
solución1d
eliminar la primera línea;
para separar comandoss/^ //
eliminar un espacio desde el inicio de las líneass/%//
eliminar%
signofuente
Puede canalizar a un
grep
que solo extraiga dígitos:Véalo en vivo:
fuente
Encontré un servidor donde --output = pcent aún no estaba implementado, así que utilicé la salida normal, filtrada por columna, seguida de la expresión regular:
df /mount/point | awk '{print $5}' | tr -dc '0-9'
fuente
Solución de dos pasos Bash
Al ser un fanático de bash (Borne Again SHell) el año pasado, pensé en proponer una solución para usarlo.
df
salida a variableDF_PCT
.DF_PCT
y lo muestra en la pantalla.5
en este caso) se genera.fuente
Aquí hay otra solución:
fuente