현재 디렉토리가 있는 마운트 지점에 대한 일부 정보를 얻을 수 df .
있으며 여기에서 원하는 모든 정보를 얻을 수 있습니다 mount
. 하지만 (다른 마운트에 대한) 정보를 너무 많이 얻습니다. 나는 그것을 억제할 수 있지만 더 좋은 방법이 있는지 궁금합니다.
mountinfo
내가 원하는 정보를 제공 할 수 있는 명령이 있습니까 mountinfo .
(예: df .
제공된 정보 포함 mount
)?
저는 Debian GNU/Linux를 사용하고 있습니다.
답변1
나는 당신이 다음과 같은 것을 원한다고 생각합니다 :
findmnt -T .
이 옵션을 사용할 때
-T, --대상길경로가 마운트 지점 파일이나 디렉터리가 아닌 경우
findmnt
마운트 지점을 얻기 위해 경로 요소를 역순으로 확인합니다. 특정 필드만 인쇄하여 이를 수행할 수 있습니다 -o, --output [list]
. 사용 가능한 필드 목록은 리소스를참조하세요 .
findmnt --help
또는 다음을 실행할 수 있습니다.
(until findmnt . ; do cd .. ; done)
문제는 모든 경로가 무언가와 관련되어 있으므로 트리를 따라 걷는다는 것입니다. 매번.
findmnt
이는 util-linux 패키지의 구성원이며 몇 년 동안 사용되어 왔습니다. 이제 어떤 배포판을 사용하든 관계없이 해당 도구가 있으면 mount
Linux 시스템에 이미 설치되어 있을 것입니다.
man mount | grep findmnt -B1 -m1
For more robust and customizable output use
findmnt(8), especially in your scripts.
findmnt
마운트 지점 매개변수 없이 모든 마운트 정보를 인쇄하고, 마운트 지점 매개변수가 있는 정보만 인쇄합니다. -D
예시뮬레이션df
옵션. 이것이 없는 출력은 's -D
와 유사 하지만 더 구성 가능합니다. 직접 해보고 확인해 보세요.mount
findmnt --help
현재 쉘의 현재 디렉터리가 변경되지 않도록 서브쉘에 넣었습니다.
그래서:
mkdir -p /tmp/1/2/3/4/5/6 && cd $_
(until findmnt . ; do cd .. ; done && findmnt -D .) && pwd
산출
TARGET SOURCE FSTYPE OPTIONS
/tmp tmpfs tmpfs rw
SOURCE FSTYPE SIZE USED AVAIL USE% TARGET
tmpfs tmpfs 11.8G 839.7M 11G 7% /tmp
/tmp/1/2/3/4/5/6
-D
사용할 수 있는 옵션이 없는 경우(이전 버전의 util-linux에서는 작동하지 않습니다)그러면 걱정할 것이 없습니다. 어쨌든 편리한 스위치에 지나지 않습니다. 각 호출에 대해 생성되는 열 헤더를 참고하세요. -o
출력 스위치를 사용하여 각 호출에 대한 열 헤더를 포함하거나 제외할 수 있습니다. -D
예를 들어, 주어진 것과 동일한 출력을 얻을 수 있습니다 .
findmnt /tmp -o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGET
산출
SOURCE FSTYPE SIZE USED AVAIL USE% TARGET
tmpfs tmpfs 11.8G 1.1G 10.6G 10% /tmp
답변2
명령은 모르지만 함수를 만들 수 있습니다. 에 다음을 추가할 수 있습니다 .bashrc
.
mountinfo () {
mount | grep $(df -P "$1" | tail -n 1 | awk '{print $1}')
}
그러면 명령이 실행되고 mount
출력이 로 파이프됩니다 grep
. grep
출력은 다음 df -P "$1" | tail -n 1 | awk '{print $1}'
과 같이 구분됩니다.
df -P "$1"
df
함수에 전달된 인수에 대해 실행됩니다.tail -n 1
partition
정보가 포함된 두 번째 줄만 출력됩니다.awk '{print $1}'
디스크/파티션 번호인 줄의 첫 번째 부분을 인쇄합니다(예/dev/sda5
: . 이것이grep
mount 명령이 찾고 출력하는 것입니다.
변경 사항을 적용하려면 파일을 가져오거나 .bashrc
로그아웃했다가 다시 로그인하세요.
이제 실행하면 mountinfo .
원하는 결과를 얻을 수 있습니다.
답변3
Linux/Unix 접근 방식은 결합 시 원하는 결과를 제공하는 작은 유틸리티의 도구 상자를 갖는 것입니다.
모든 경우에 적합하지 않은 경우가 많습니다. 대신 파이프 등으로 그룹화되어 있는 작고 유용한 유틸리티가 많이 있습니다. 이것의 장점은 사용 가능한 유틸리티가 없는 경우에도 쉽게 직접 작성할 수 있다는 것입니다.
예를 들어, 원하는 정보를 얻으려면 다음을 사용할 수 있습니다.
mount | grep $(df --output=source . | tail -1)
위의 내용을 다른 디렉토리에서 재사용하려면 스크립트를 작성하십시오.
#!/bin/bash
mount | grep $(df --output=source $1 | tail -1)
다른 이름으로 저장 mountinfo
하고 실행 가능하게 만듭니다( chmod +x mountinfo
). 그런 다음 다음과 같이 사용할 수 있습니다.
mountinfo .
모든 상호 운용성을 위한 유틸리티가 포함된 시스템을 원한다면 Gates 씨가 도움을 드릴 수 있습니다 ;-)
답변4
아주 오래되지 않은 GNU coreutils df 버전을 사용한다면 echo $(df . --output=target | tail -n 1)
괜찮습니다. 마찬가지로 stat -c '%m' .
눈치채긴 했지만https://linux.die.net/man/1/stat서식 옵션이 누락된 문서 %m
.
이식 가능하게 수행하는 것은 짜증나는 일입니다. 위의 어느 것도 BSD 또는 Cygwin 버전의 stat 또는 df에서 작동하지 않습니다. 마운트 지점 경로에 공백이 없으면 좋겠지 df -P . | tail -1 | awk '{ print $NF}'
만 USB 플래시 드라이브의 볼륨 이름에 공백이 있는 경우가 많습니다. 이로 인해 마운트 경로에 표시되어 이 설정이 중단될 수 있습니다. 이식성을 위해 Perl은 거의 모든 곳에 설치할 수 있으며 CPAN에는 모듈이 있습니다.시스템::파일 시스템::마운트포인트필요한 기능을 제공합니다.