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


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 시스템을 보여줍니다. statbash / 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.