/etc/passwd파일에서 계정명(ID)만 출력하기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,133 조회
- 0 추천
- 목록
본문
/etc/passwd파일에서 계정명(ID)만 출력하기
호스팅서버 또는 많은 사용자들이 사용하는 공용서버의 /etc/passwd파일에는 수많은 사용자의 계정정보가 저장되어 있습니다.
이때 각 사용자의 ID만을 출력하고자 한다면 어떻게 하면 될까요? awk를 사용하면 간단히 처리할 수 있습니다.
즉, /etc/passwd파일의 모든행들은 각각 ":"(콜론)으로 계정 사용자정보들의 항목들이 구분되어있다는 것을 알고 계실 것입니다.
즉, 간단히 /etc/passwd파일을 살펴보면 아래와 같이 관리자가 원하는 중요한 정보들이 많이 있습니다.
즉, /etc/passwd파일의 모든 행들은 다음과 같은 항목으로 각각 나뉘어져 있습니다.
계정명 : 패스워드부분 : UID : GID : 코멘트 : 홈디렉토리 : 기본사용쉘
|
이들 정보는 awk명령어의 필드분리명령에 의해 왼쪽에서부터 차례대로 $1....$7에 대응됩니다.
이런 사항을 이용하여 /etc/passwd파일의 정보에서 원하는 부분만을 출력해주는 방법에 대해서 알아 보겠습니다.
설명의 편의를 위하여 /etc/passwd파일의 내용은 다음과 같습니다.
[root@su252 ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin named:x:25:25:Named:/var/named:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin bible:x:500:500:BIBLE:/home/bible:/bin/bash sulinux:x:501:501::/home/sulinux:/bin/bash sspark:x:502:502::/home/sspark:/bin/bash [root@su252 ~]# |
즉, 아래의 예는 awk를 이용하여 /etc/passwd파일에서 각 계정사용자들의 ID만을 출력하는 것입니다.
[root@su252 ~]# cat /etc/passwd | awk -F: '{print $1}' |
좀 더 상세히 설명하면 위와 같이 "cat /etc/passwd"명령어로 /etc/passwd파일의 각각의 행들이 "|"(파이프명령어)에 의해 차례대로 awk의 입력으로 들어오게 됩니다.
이때 "-F:"에 의해 입력으로 들어온 /etc/passwd파일의 각각의 행들이 ":"(콜론)으로 구분됩니다.
예를 들어 /etc/passwd의 내용 중 아래와 같은 행이 있다고 가정 하겠습니다.
bible:x:500:500:BIBLE:/home/bible:/bin/bash |
이 행은 "-F:"에 의해 각각의 항목들이 ":"(콜론)으로 구분되어 다음과 같은 awk의 입력변수로 작용합니다.
$1에는 bible이 할당되고,
$2에는 x가 할당되며,
$3에는 500이 할당되고,
$4에는 500이 할당되며,
$5에는 공백이 할당되며,
$6에는 /home/bible이 할당되고
$7에는 /bin/bash가 각각 할당됩니다.
이것이 바로 "-F:"의 의미입니다.
이제 awk에서 사용된 "-F:"의 의미를 확실히 아셨을 것이라 생각됩니다.
그렇다면 '{print $1}'는 어떤 의미일까요?
위의 의미 그대로 $1만을 출력(print)하라는 의미입니다.
설명이 다소 길어지기는 하였지만 아래 명령의 결과로는 /etc/passwd파일의 각각의 행들이 ":"(콜론)문자로 구분된 후 첫번째 단어인 각행의 ID들만이 결과로 출력이 됩니다.
[root@su252 ~]# cat /etc/passwd | awk -F: '{print $1}' root bin daemon shutdown halt news uucp ftp nobody named sshd bible sulinux sspark [root@su252 ~]# |
첫번째 사용예의 설명을 정확하게 이해하시기 바랍니다.
이 사용 예만 정확하게 이해한다면 다음 예들은 이 예를 조금 응용한 것이므로 쉽게 이해하실 수 있을 것입니다.
관련자료
-
이전
-
다음