나는 디렉토리의 소유자만을 반환하는 명령을 찾고 있습니다. ls -lat
명령을 구문 분석하는 정규식이나 그와 유사한 것입니까? 다른 스크립트에서 결과를 사용하고 싶습니다.
답변1
stat
~에서GNU 핵심 도구다음을 수행할 수 있습니다.
stat -c '%U' /path/of/file/or/directory
불행하게도 버전이 많고 stat
구문에 일관성이 별로 없습니다. 예를 들어 FreeBSD에서는 다음과 같습니다.
stat -f '%Su' /path/of/file/or/directory
이식성이 문제라면 아마도 다음을 사용하는 것이 더 나을 것입니다.질의 조언ls
및 의 조합은 awk
하나가 아닌 두 개의 프로세스를 시작해야 하지만 POSIX 표준 기능만 사용한다는 장점이 있습니다.
ls -ld /path/of/file/or/directory | awk '{print $3}'
답변2
구문 분석된 출력 ls
은 좋은 생각이 아닙니다., 실제로 모든 "전통적인" 유니스에서 작동하는 처음 몇 개의 필드를 가져오는 것을 제외하고는 사용자 이름에 공백을 허용하는 Windows 구현과 같은 일부 플랫폼에서는 작동하지 않습니다.
ls -ld /path/to/directory | awk 'NR==1 {print $3}'
또 다른 옵션은 명령을 사용하는 것이지만 stat
셸의 문제는 서로 다른 구문을 가진 여러 명령이 있으므로 셸 스크립트에서 이식할 수 없다는 것입니다(Linux 설치 전체에서도).stat
stat
특정 사용자가 소유자인지 테스트하는 것은 다른 제안입니다.
if [ -n "$(find . -user "$username" -print -prune -o -prune)" ]; then
echo "The current directory is owned by $username."
fi
if [ -n "$(find . -user "$(id -u)" -print -prune -o -prune)" ]; then
echo "The current directory is owned by the current user."
fi
답변3
GNU를 사용하여 이 작업을 수행할 수도 있습니다 find
.
find "$directoryname" -maxdepth 0 -printf '%u\n'
이것은 GNU 시스템 외부에서는 이식 가능하지 않지만 Linux 배포판에서는 작동하지 않는다는 사실에 놀랐습니다.
답변4
ls -ld /path/to/file/or/directory | cut -d' ' -f3