쉘 스크립트 - 파일의 소유자를 출력하는 방법


3

파일의 소유자를 출력하는 명령이 있습니까? 내가 사용할 수있을 것 같아. ls 그것을 통해 실행 sed, 더 좋은 방법이 있다면, 나는 확실히 그것을 사용할 것입니다.


그게 더 자주 필요합니까? 주어진 파일 이름에 대한 특정 정보를 반환하기 위해 작은 펄 스크립트 나 심지어 작은 C 프로그램을 만들 수 있습니다.
— ott--

@ 할 수는 있지만 ... 덜 휴대 가능합니다 (?). 나는 이미 컴퓨터에있는 프로그램을 사용하는 것을 선호한다.
— BenjiWiebe

@BenjiWiebe : Perl은 매우 이식성이있는 경향이 있습니다. 당신은 다음과 같은 것을 사용할 수 있습니다. for my $file (@ARGV) {$uid = (stat $file)[4]; $name = (getpwuid $uid)[0]; print "$name\n"} 또는 print map {"$_\n"} map {(getpwuid $_)[0]} map {(stat $_)[4]} @ARGV (어느 쪽이 당신에게 더 좋게 보이는지)
— grawity

@grawity Perl은 어디 에나 설치되어 있지는 않지만, 가지고 있지 않은 Linux 시스템을 보여줍니다. stat 과 bash / sh 설치.
— BenjiWiebe

@BenjiWiebe : 몇 가지 BSD 시스템을 보여줄 수 있습니다. 완전히 다른 옵션 ...에 대한 stat.
— grawity

답변:


6
stat -c %U file.txt

ls 파일 정보를 대화식으로 보는 도구입니다. 그 출력물은 사람을 위해 포맷되고 스크립트에 버그를 일으킬 것입니다. 용도 globs 또는 find 대신에 . 이유 이해 : http://mywiki.wooledge.org/ParsingLs


고마워. 나는 jilliagre의 기능을 좋아하지만 다른 명령의 출력을 파싱하지 않고 명령을 원했습니다.
— BenjiWiebe

Sweet, 새로운 터미널 명령! 나는 stat 명령에 대해 전혀 알지 못했지만 이제는 내가 생각할 수있는 모든 방법으로 그것을 남용 할 것이다.
— Llamanerds

1

나는 그 함수를 사용할 것이다 :

lso() { ls -dl ${1:?usage: lso file} | awk '{print $3;exit}'; }

편집하다:

  • 나는 생각했다. stat 하지만 가능한 경우 비표준적인 것을 사용하지 않도록 노력합니다. 귀하의 질문에 리눅스 (Linux) 태그가 붙어 있으므로 휴대용 (예 : POSIX)을 사용했습니다. 과 유닉스, 리눅스가 아닌 stat 꽤 표준이다 ..

  • 이 질문은 유 효한 사용자 이름에 대한 토론을 촉발 했으므로이 목록의 문자로만 구성된 문자열 인 Unix 표준에 의해 정의됩니다.

A B C D E F G H I J K L M N O P Q R S T U W W X Y Z

a b c d e f g h i j k l m n o p q r s t u v w x y z

0 1 2 3 4 5 6 7 8 9. _ -

첫 번째 문자가 아닌 하이픈에 대한 추가 제한이 있습니다.

나는 어떤 공간도 허용되지 않는다고 생각했다. 이식성이없는 다른 것과 마찬가지로 이것은 내 작은 기능뿐만 아니라 많은 Unix / Linux CLI 유틸리티를 사용하여 예기치 않은 결과를 초래할 수 있습니다.


2
아마도 공간이있는 사용자 이름이있을 때까지 잘 작동 할 것입니다 ...
— a CVn

1
@ MichaelKjörling on Fedora 17 : sudo adduser "foo bar" 산출물 adduser: invalid user name 'foo bar' 하지만 "foobar"(공백없이)를 사용하면 잘 작동합니다. 따라서 사용자 이름에는 공백이 유효하지 않습니다.
— BenjiWiebe

질문에서 어디에서 리눅스를 지정합니까? 나는 unix 태그도 ...
— a CVn

@ MichaelKjörling 제목은 "linux - shell script -..."로 시작합니다. 그리고 물론, 거기에 리눅스 태그가 있습니다.
— BenjiWiebe

1
@ 벤지 위브 : 스페이스 아르 무엇에 상관없이 사용자 이름에서 유효합니다. adduser 그들에 대해 말합니다. 사실 MS Active Directory 도메인에 가입 한 Linux 시스템에서 일반적으로 사용됩니다.
— grawity
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.