A saída pode ser um pouco mais fácil de analisar usando a -Popção que garantirá que:
As informações sobre cada sistema de arquivos são sempre impressas em exatamente uma linha; um dispositivo de montagem nunca é colocado em uma linha sozinho. Isso significa que, se o nome do dispositivo de montagem tiver mais de 20 caracteres (por exemplo, para algumas montagens de rede), as colunas ficarão desalinhadas.
Isso facilita muito a obtenção do espaço livre disponível:
$ df -Ph.| tail -1| awk '{print $4}'
( -husa megabytes, gigabytes e assim por diante. Se o seu sistema não possuir, use -ksomente para kilobytes.)
Se passarmos dfum caminho, ele retornará apenas duas linhas: uma linha de cabeçalho e, em seguida, os dados sobre o sistema de arquivos que contém o caminho. Podemos usar a cauda para pegar apenas a segunda linha. Sabemos que o espaço disponível está na 4ª coluna, então pegamos isso com awk. Tudo isso pode ser feito com awk:
Você pode otimizar seu comando usando a variável de ambiente em $PWDvez de usar a substituição de comandos e remover a necessidade de cauda: df -Ph $PWD | awk 'NR==2{print $4}'
SiegeX
@ SiegeX: Concordo que tudo awké melhor. Incluí o comando mais longo porque queria ter um exemplo de como alguém pode construir uma cadeia de comandos simples para fazer algo mais complicado. Atualizei a resposta para incluir sua melhoria.
Steven D
-Pé padrão (o Pé para POSIX). Mas -hé uma extensão GNU (também existe em alguns outros sistemas, mas, por exemplo, no OpenBSD é incompatível com -P).
Gilles 'SO- stop be evil'
Você pode fazer isso sem sair usando a opção --output = avail: df -h --output=avail . | tail -1
Floyd
"Você pode otimizar seu comando". Na verdade não. A execução de ambos os tubos 10.000 vezes (como em time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done }) não revela diferença significativa na velocidade, o que não é surpreendente - invocar tailnão é caro e awkserá poupado para pular para o final da entrada ... Pode ter havido uma diferença em o PDP-11 ... #
23418 David Tonhofer
10
Que tal fazer df -h .. Isso fornecerá o espaço livre disponível da partição em que seu diretório de trabalho atual está.
Um pequeno exemplo:
/usr/local/nagios/libexec # df -h .FilesystemSizeUsedAvailUse%Mounted on
/dev/mapper/vg00-lvol1
9.9G6.1G3.4G65%/
du -h
?Respostas:
A saída pode ser um pouco mais fácil de analisar usando a
-P
opção que garantirá que:Isso facilita muito a obtenção do espaço livre disponível:
(
-h
usa megabytes, gigabytes e assim por diante. Se o seu sistema não possuir, use-k
somente para kilobytes.)Se passarmos
df
um caminho, ele retornará apenas duas linhas: uma linha de cabeçalho e, em seguida, os dados sobre o sistema de arquivos que contém o caminho. Podemos usar a cauda para pegar apenas a segunda linha. Sabemos que o espaço disponível está na 4ª coluna, então pegamos isso comawk
. Tudo isso pode ser feito comawk
:ou muitos outros conjuntos de filtros .
fonte
$PWD
vez de usar a substituição de comandos e remover a necessidade de cauda:df -Ph $PWD | awk 'NR==2{print $4}'
awk
é melhor. Incluí o comando mais longo porque queria ter um exemplo de como alguém pode construir uma cadeia de comandos simples para fazer algo mais complicado. Atualizei a resposta para incluir sua melhoria.-P
é padrão (oP
é para POSIX). Mas-h
é uma extensão GNU (também existe em alguns outros sistemas, mas, por exemplo, no OpenBSD é incompatível com-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 }
) não revela diferença significativa na velocidade, o que não é surpreendente - invocartail
não é caro eawk
será poupado para pular para o final da entrada ... Pode ter havido uma diferença em o PDP-11 ... #Que tal fazer
df -h .
. Isso fornecerá o espaço livre disponível da partição em que seu diretório de trabalho atual está.Um pequeno exemplo:
fonte
Em bytes:
Legível por humanos:
ou
ou
fonte