Bash의 현재 디렉토리에서 사용 가능한 여유 공간 확보


25

내가 알고 df -hpwd있지만 정규식 일치하는 부분에 대한 좀 복잡한 것 같습니다. 어떤 아이디어?


1
당신은 의미 했습니까 du -h?
jweyrich

답변:


45

다음 -P을 보장하는 옵션을 사용하여 출력을 조금 더 쉽게 구문 분석 할 수 있습니다 .

  1. 각 파일 시스템에 대한 정보는 항상 정확히 한 줄에 인쇄됩니다. 마운트 장치는 그 자체로 라인에 배치되지 않습니다. 즉, 마운트 장치 이름이 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}'
SiegeX

@SiegeX : 나는 모든 것을하는 awk것이 더 낫다는 데 동의합니다 . 간단한 명령 체인을 구성하여 더 복잡한 작업을 수행하는 방법에 대한 예제를 원했기 때문에 더 긴 명령을 포함 시켰습니다. 개선 사항을 포함하도록 답변을 업데이트했습니다.
Steven D

-P표준입니다 ( PPOSIX의 경우). 그러나 -hGNU 확장입니다 (다른 시스템에도 존재하지만 OpenBSD와 호환되지 않습니다 -P).
Gilles 'SO- 악마 그만'

--output = avail 스위치를 사용하면이 작업을 수행 할 수 있습니다. df -h --output=avail . | tail -1
Floyd

"명령을 최적화 할 수 있습니다". 실제로는 아닙니다. 두 개의 파이프를 10,000 회 실행하면 (와 같이 time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done }) 속도에 의미있는 차이가 나타나지 않습니다. 놀라운 tail것은 아닙니다 awk. PDP-11 ...
David Tonhofer

10

어때요 df -h .? 이것은 현재 작업 디렉토리가있는 파티션의 사용 가능한 여유 공간을 제공합니다.

작은 예 :

 /usr/local/nagios/libexec # df -h .
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/vg00-lvol1
                       9.9G  6.1G  3.4G  65% /

4

바이트 단위 :

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.