답변:
다음 -P
을 보장하는 옵션을 사용하여 출력을 조금 더 쉽게 구문 분석 할 수 있습니다 .
- 각 파일 시스템에 대한 정보는 항상 정확히 한 줄에 인쇄됩니다. 마운트 장치는 그 자체로 라인에 배치되지 않습니다. 즉, 마운트 장치 이름이 20자를 초과하면 (예 : 일부 네트워크 마운트의 경우) 열이 잘못 정렬됩니다.
이를 통해 사용 가능한 여유 공간을 훨씬 쉽게 얻을 수 있습니다.
$ df -Ph . | tail -1 | awk '{print $4}'
( -h
메가 바이트, 기가 바이트 등을 사용합니다. 시스템에없는 경우 -k
킬로바이트 만 사용하십시오.)
df
경로 를 전달 하면 헤더 행과 경로가 포함 된 파일 시스템에 대한 데이터의 두 행만 반환됩니다. 꼬리를 사용하여 두 번째 줄만 잡을 수 있습니다. 우리는 이용 가능한 공간이 4 번째 열에 있다는 것을 알고 있습니다 awk
. 이 모든 것이 가능합니다 awk
:
$ df -Ph . | awk 'NR==2 {print $4}'
또는 다른 많은 필터 세트 .
$PWD
명령 대체를 사용하지 않고 환경 변수 를 사용하여 tail 필요를 제거하여 명령을 최적화 할 수 있습니다 . df -Ph $PWD | awk 'NR==2{print $4}'
awk
것이 더 낫다는 데 동의합니다 . 간단한 명령 체인을 구성하여 더 복잡한 작업을 수행하는 방법에 대한 예제를 원했기 때문에 더 긴 명령을 포함 시켰습니다. 개선 사항을 포함하도록 답변을 업데이트했습니다.
-P
표준입니다 ( P
POSIX의 경우). 그러나 -h
GNU 확장입니다 (다른 시스템에도 존재하지만 OpenBSD와 호환되지 않습니다 -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 }
) 속도에 의미있는 차이가 나타나지 않습니다. 놀라운 tail
것은 아닙니다 awk
. PDP-11 ...
바이트 단위 :
df --output=avail -B 1 "$PWD" | tail -n 1
인간이 읽을 수있는 내용 :
df --output=avail -h "$PWD" | tail -n 1
또는
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --to="iec"
또는
df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --grouping
du -h
?