강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

/etc/passwd파일에서 계정명(ID)만 출력하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

/etc/passwd파일에서 계정명(ID)만 출력하기










 

호스팅서버 또는 많은 사용자들이 사용하는 공용서버의 /etc/passwd파일에는 수많은 사용자의 계정정보가 저장되어 있습니다.

 

 

 

  이때 각 사용자의 ID만을 출력하고자 한다면 어떻게 하면 될까요?  awk를 사용하면 간단히 처리할 수 있습니다.

 

 

 

  , /etc/passwd파일의 모든행들은 각각 ":"(콜론)으로 계정 사용자정보들의 항목들이 구분되어있다는 것을 알고 계실 것입니다.

 

 

 

 

 

, 간단히 /etc/passwd파일을 살펴보면 아래와 같이 관리자가 원하는 중요한 정보들이 많이 있습니다.

 

 

 

  , /etc/passwd파일의 모든 행들은 다음과 같은 항목으로 각각 나뉘어져 있습니다.

 

 

 

 

 

 계정명 : 패스워드부분 : UID : GID : 코멘트 : 홈디렉토리 : 기본사용쉘
  $1          $2          $3    $4      $5         $6           $7

 

이들 정보는 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

mail

news

uucp

ftp

nobody

named

sshd

bible

sulinux

sspark

[root@su252 ~]#

 

첫번째 사용예의 설명을 정확하게 이해하시기 바랍니다.

 

 

 

  이 사용 예만 정확하게 이해한다면  다음 예들은 이 예를 조금 응용한 것이므로 쉽게 이해하실 수 있을 것입니다.

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,039 명
  • 현재 강좌수 :  35,848 개
  • 현재 접속자 :  85 명