본문 바로가기

OS/Linux

리눅스 명령어 2

반응형

로그인 확인 명령어 id, w, who, who am i = whoami

 ※ w
현재 로그인한 사용자의 정보를 보여주는 명령어
-$ w [options] [사용자]
[options]
-f : 원격에서 접속한 호스트의 이름을 보여주지 않는다.
-h : 각 필드에 대한 head정보(uptime정보와 필드제목정보)을 생략한다.
-s : 간략한 형식으로 정보를 보여준다.
w명령어는 일반사용자보다는 서버관리자가 주로 사용하는 명령어이다.
물론 일반사용자들도 누가 시스템에 접속해 있는가를 확인하기 위해서 w명령어를
사용하는 경우도 종종 있으나 서버관리차원에서 관리자가 주로 사용한다.

 ※ who am i
현재 로그인한 사용자의 정보를 보여주는 명령어
-$ who am i
[option]
-f : 원격에서 접속한 호스트의 이름을 보여주지 않는다.
-h : 각 필드에 대한 head정보(uptime정보와 필드 제목정보)을 생략한다.
-s : 간략한 형식으로 정보를 보여준다.
id 와 whoami 와 함께 로그인한 정보를 확인할 때 주로 사용하는 명령어로서

whoami보다는 보다 많은 정보를 출력해 준다.

 ※ whoami
현재 로그인한 사용자의 정보를 보여주는 명령어
-$ whoami
whoami는 유효사용자 id, 즉 EUID(Effective User ID)를 확인하는 명령어이다.
"is -un"과 동일한 결과를 얻을 수 있는 명령이며, 현재 사용권한에 대한 EUID를

확인하고자 할 경우에 사용하며 쉘 프로그램 등에서도 많이 사용된다.
비교할 명령어는 "id"와 "who am i" 가 있다.

 ※ Date
필요에 따라 시간과 날짜를 다양한 포맷으로 출력하는 명령어이다.
-$ date [option] [+포맷] [날짜]
[option]
-d --date date : 지정한 date 값과 같이 시간과 날짜를 보여준다.
-h : 각 필드에 대한 head 정보(uptime 정보와 필드제목정보)을 생략한다.
-s : 간략한 형식으로 정보를 보여준다.
date명령어는 현재 서버의 날짜와 시간을 확인하거나 설정할 수 있는 명령어이다
가끔씩 서버의 날짜와 시간이 조금씩 틀리게 되어 있는 경우 이 명령어를 이용하

여 현재 서버의 날짜와 시간을 확인하고 정확하게 설정하는 작업을 하기위해 사

용한다.
date로 날짜와 시간을 새롭게 설정할 때에는 date "MMDDhhmmYY" 와 같은 형식을

사용하면 된다. 그리고 각 인수들은 아래와 같은 의미를 가지고 있다. 서버의 날

짜와 시간을 새롭게 설정할 수 있는 권한은 오로지 root만이 할 수 있다.
MM 월  DD 일  hh 시  mm 분
CC 연도의 처음 두 숫자(선택적)
YY 연도의 나중 두 숫자(선택적)
ss 초(선택적)

날짜 및 시간 변경
 date MMDDhhmmYY (월,일,시,분,년)
 예) date 090210172009
달력 확인
 cal 2009
지난 시간 찾기
 date --date '3days ago'
 date --date '2months 4days'
 date --date '1years 1months 1days ago'
미래 시간 찾기
 date --date '일 월 +%j
 예) date --date '25 Dec' +%j
 예) date --date '2 Sep' +%j

 ※ rdate
타임서버에서 시간 정보를 얻어 시스템의 시간을 변경한다.
-$rdate [option] [호스트]
[option]
-p : 호스트의 데이터를 보여준다.
-s : 원격 네트워크 호스트로부터 로컬호스트 시간을 설정한다.
[사용예]
[root@host1 root]# rdate -p time.bora.net
rdate : [time.bora.net] Tus Sep 9 11:44:25 2009
Time Server
 rdate -p time.bora.net
 time.kriss.re.kr

 ※ clock
cmos의 시각을 설정하는 명령어
-$ clock [option]
[option]
-u : CMOS의 시각을 국제시각으로 조정한다.
-r : CMOS의 시각을 출력한다.
-w : 리눅스 시스템 시각으로 CMOS의 시각을 조정한다.
-s : CMOS의 시각으로 리눅스 시스템 시각을 조정한다.
-a : CMOS의 시각으로 리눅스 시스템 시각으로 조정하고 다시 CMOS에 조정한다.

 

CMOS 시간

OS 시간

의 미

메인보드에 있는 rom-bios에서 인식하고 있는 시간으로 하드웨어적인 의미의 시간이다.

운영체제에서 인식하는 시간

리눅스에서 인식하는 시간

커널에서 인식하는 시간

구 분

하드웨어적인 의미의 시간

소프트웨어적인 의미의 시간

관 계

운영체제가 부팅시 마다 cmos의 시간을 가져와서 운영체제에 적용한다.

따라서 운영체제의 시간이 cmos시간에 다소 종속된다.

변경방법

clock(hwclock)명령어로 cmos 시간을 변경할 수 있다.

date 명령어로 운영체제의 시간을 변경할 수 있다.

 ※ top
시스템 프로세스/메모리 사용현황을 실시간으로 보여준다.
- $ top [options]
[options]
-b : 배치모드로 정보를 출력한다.
     실시간 상호 정보를 계속해서 화면에 일렬로 나타낸다.
-d delay : 지정한 delay 시간(초)만큼 정보를 업데이트하여 보여준다. 디폴트 값 = 5초
-i idle : 프로세스나 zombie 프로세스를 보여주지 않는다.
-n num : 지정한 프로세스 id의 정보만을 보여준다.
-p pid : 지정한 프로세스 id의 정보만을 보여준다.
-q : 시간의 딜레이 없이 계속된 업데이트된 정보를 보여준다.
-s : 몇 몇 대화식 명령을 비활성화 한다.
-S : 누적 데이터를 보여준다.
-c : 옵션까지 세부 정보를 보여준다.
시스템에서 실행되고 있는 프로세스들의 실시간 정보를 확인할 수 있으며, CPU 사용정보, 메모리 사용

정보, 시스템 부하율정보등 시스템의 전반적인 상황을 한눈에 볼 수 있는 매우 유용한 명령어이다.
top은 아무런 옵션없이 실행하면 5초에 한번씩 새로운 내용으로 refresh하여 보여준다.

 ※ chfn (root 담당)
사용자 기본 정보를 변경하는 명령어
-$ chfn [option] [사용자명]
[options]
-f : 사용자 전체 이름을 변경한다.
-h : 사용자 집 전화번호를 변경한다.
-o : 사용자의 회사명이름을 변경한다.
-p : 사용자의 회사전화번호를 변경한다.
chfn은 change finger의 약어로서 계정사용자의 정보를 설정하거나 변경하는 명령어이다. 사용자의 실

제 이름, 직장, 집, 전화번호 등의 정보를 입력/변경할 수 있다. /etc/passwd 파일 각행의 다섯 번째

항목 comment 항목의 값을 설정하는 것이다.
chfn명령어를 사용하여 root는 모든 사용자의 계정정보를 변경할 수 있으며, 각 계정 사용자는 자기자

신의 계정 정보만을 변경할 수 있다. 이 때 root가 변경하는 모든 계정 정보들에 대해서는 패스워드 확

인절차 없이 바로 변경이 가능하지만 각 계정 사용자가 자기자신의 계정정보를 변경할 때는 자기자신의

패스워드를 입력해야 정보 변경이 가능하다.
하지만, /etc/passwd 파일을 수정하여 정보 입력도 가능하다.
dhfn 사용법
1. 이름바꾸기   chfn -f [새로운 이름] [현재계정]
2. 회사명바꾸기 chfn -o [회사명] [계정명]
3. 회사전화번호바꾸기 chfn -p [회사전화번호] [계정명]
4. 집전화번호   chfn -h [집전화번호] [계정명]
확인 명령어 : finger 및 grep [계정] /etc/passwd

 ※ logname
로그인한 계정을 확인하는 명령어
-$ logname [options]
명령어 위치 : /usr/bin/logname
[options]
--help : 도움말을 보여준다.
--version : 버전을 보여준다.
logname 명령어는 로그인 사용자명을 출력해주는 명령어이다.
즉, A라는 계정으로 로그인한 후에 다시 su를 이용하여 수퍼유저(root)로 변경했다고 하더라도 로그인

사용자명은 여전히 A가 되는 것이다. 따라서 처음 접속될 당시의 계정명이 무엇인가라는 의미가 로그인

사용자명이라는 것이고 logname 명령으로 확인할 수 있다.
 ※ users
현재 시스템에서 접속한 사용자 정보 확인하는 명령어
-$ users [options]
[options]
--help : 도움말을 보여준다.
--version : 버전을 보여준다.

 ※ chage
시스템 보안을 위해 사용자 패스워드 만기일을 설정/변경하는 명령어
사용자 aging 정보를 설정/변경하는 명령어
-$ chage [options] [계정명]
[options]
-d : 1970년 1월 1일 부터 패스워드를 마지막으로 변경한 일자.       //마지막 날짜
-E : 계정사용 종료 일자. (YYYY-MM-DD 포맷으로 설정함)         //만료 날짜
-I(i) : 패스워드를 유효기간 종류 이후에 계정 비활성화될 일 수     // 잠금날짜
-m : 패스워드를 변경할 수 있는 최소 일 수
     (0이면 아무 때나 변경 가능)                                              //최소 날짜
-M : 마지막 변경 이후의 패스워드 유효일 수                            //최대 날짜
-W : 패스워드 만료기간 몇 일전에 안내메시지를 보낼 것인가      //경고 날짜
-I user : 사용자의 패스워드 만기 정보를 보여준다.
change user password expriy infomation의 약어로서, 사용자의 여러 가지 패스워드 종료정보를 설정할 수 있다.
chage는 미리 지정한 날짜에 의해 그 날짜가 지나면 패스워드를 변경하여 보다 효율적인 시스템 관리를 할 수 있도록 도와준다.
계정 aging 정보를 설정하는 것 뿐 아니라 aging 정보(aging information)를 확인 할 수도 있다.
]# grep root /etc/shadow
Hong:$1$hEHG.1t5$rPqVPwlfUWmz1gTJGWMv8.:12499:0:99999:7:    :    :
 (1)                    (2)                                         (3) (4)  (5) (6)(7) (8) (9)
(1) 계정명 :
(2) 암호화된 패스워드 :
(3) 최종암호 변경일 : 12499(1970년 1월1일 이후부터의 일자수)
(4) 암호 변경 최소일수 : 0 (0은 아무 때나 변경 가능함)
(5) 암호 변경 유예기간 : 99999(설정한 패스워드는 99999일 동안 유효함)
(6) 암호변경 경고일 수 : 7(만료되기 7일전부터 로그인시에 안내메세지 출력함)
(7) 암호 비활성화 기간 : 설정안됨
(8) 계정 종료일 : 설정안됨
(9) 예약필드

 ※ mv
특정파일 또는 디렉토리를 이동하거나 이름을 변경하는 명령어
- $ mv [options] [원본파일명] [대상파일명]
- $ mv [options] [원본파일명1] [대상파일명2]...[대상폴더명]
[options]
-b : 백업파일을 생성한다.
-i : 기본적으로 .bashrc에 alias 설정되어 있는 옵션으로, 동일한 파일이 있을 경우 사용자에게 확인을 하게 된다.

 ※ rename
여러개의 파일확장자를 동시에 변경할 수 있는 명령어
-$ rename [변경전파일명] [변경후파일명] [대상파일]
rename 명령은 하나 혹은 하나이상의 파일명을 변경하는 명령어이다. 특정 파일의 이름을 변경하는 경우에도 유용하지만, 특정 파일의 이름을 변경하는 경우에는 mv 명령을 주로 사용한다.
rename 명령어는 주로 하나 이상의 동일한 확장자를 동일한 다른 확장자로 수정하고자 할 경우에 사용한다.
rename 명령어는 주로 하나 이상의 동일한 확장자를 동일한 다른 확장자로 수정하고자 할 경우에 사용한다. 예를 들어 .htm 확장자를 .html 확장자로 일괄 수정하는 경우나 .text 확장자를 .txt 로 모두 일괄 수정하는 경우가 이에 해당된다.

rename 명령어는 파일패턴문자(?,*)를 인식하기 때문에 여러 개의 파일에 동시에 사용할 수 있다.

예)rename .txt .html *.text       결과 -> 1.txt ===> 1.html
예)rename test test0 test?        결과 -> test3 ===> test03

 ※ more
텍스트 파일 내용을 확인하는 명령어
-$more [-dlfpcsu] [-숫자] [+/패턴] [+행번호] [파일명]
[사용예]
h : more 명령어 상태에서 사용할 수 있는 키 도움말 확인하기
Space Bar : 다음페이지 이동하기 (f와 동일하다)
Enter : 현재행에서 다음 줄로 이동하기
q : more 명령어 종료하기
f : 다음페이지로 이동하기(space bar와 동일)
b : 이전페이지로 이동하기
= : 현재 위치의 행번호 표시하기
/문자열 : 지정한 문자열을 검색하기
n : /문자열로 검색한 문자열을 차례대로 계속해서 찾기
!쉘명령어 : more 명령어 상태에서 쉘 명령어를 실행하기
v : more 명령어로 열려있는 파일의 현재 위치에서 vi를 실행하기

 ※ wc
특정 파일의 바이트수, 단어수, 행수를 카운트하는 명령어
-$ wc [options] [파일]
[options]
-c : 지정한 파일의 바이트수만을 출력한다.
-m : 지정한 파일의 문자수만을 출력한다.
-l : 지정한 파일의 행수만을 출력한다.
-L : 지정한 파일내에서 가장 긴 행의 길이를 출력한다.
-w : 지정한 파일의 단어 수를 출력해준다.
wc는 지정한 하나 이상의 파일들내에 존재하는 바이트 수, 단어 수, 행수를 카운트하여 출력해주는 명령어이다.
두 개 이상의 파일의 바이트수, 단어수, 행수를 카운트하면 전체 합과 함께 출력을 해준다.
예) wc install.log
    wc ls.txt ls2.txt  (2개 파일 비교)

 ※ sort (기본 오름차순)
파일 내용을 정렬하는 명령어
-$ sort [options] [파일명]
[options]
-b : 공백을 무시한다.
-d : 공백과 알파벳 문자의 순서를 비교한다.
-f : 모든 문자를 소문자로 인식한다.
-g : 숫자값을 비교하여 정렬한다.
-i : 프린트 가능한 문자만 비교한다.
-u : 필드내의 같은 값을 제거한 유일한 값만을 결과값으로 보여준다.
-r : 내림차순
-k : 필드 지정으로 필드를 정렬한다. 예) sort -k 3 sort.txt
텍스트로된 파일의 행 단위 정렬을 할 때 사용하는 명령어이다.
복잡한 워드 문서 등의 편집이 아닌 간단한 텍스트문서를 대상으로 정렬작업을 할 때 주로 사용되는 명령어이다.
이 명령어는 주로 특정 DB나 프로그램, 또는 쉘 프로그램등의 입력값으로 사용되는 데이터를 직접 정렬하려고 할 때 사용된다.
문제) cat 으로 파일 만들기 -> cat > sort.txt
4 one nine
7 eight two
6 four six
9 six four
2 three seven
3 seven three
0 five five
1 nine one
8 two eight
5 ten zero

 ※ uniq
파일내의 연속되는 문장을 확인하여 반복문장을 삭제하고 보여주는 명령어
-$ uniq [options] [파일명]
[options]
-c : 같은 라인이 몇 번 나오는지를 표시한다.
-d : 중복되어 나오는 라인 중 한 라인만 보여준다.
-D : 중복되는 모든 라인을 보여준다.
-N : 필터링을 무시할 라인을 정한다.
     시작 라인부터 N번째 라인까지는 검사하지 않는다.
-i : 중복 라인을 한라인으로 생각하고 출력한다.
-u : 중복 라인이 없는 것만 보여준다.
-w N : N번째 문자까지만을 비교대상으로 하여 uniq 명령을 수행한다.  예) uniq -w 4 name
-s N : N번째 문자까지는 비교대상에서 제외하여 uniq 명령을 수행한다.
-f N : N번째 필드를 비교대상에서 제외하고 uniq 명령을 수행한다.
 ※ tr
대문자는 소문자로, 소문자는 대문자로 바꾸는 명령어
-$ tr [options] [문자열1] [문자열2]
[options]
-d : 지정한 파일내의 특정 문자 삭제 하기
tr 명령어는 translate 의 약어로서 지정한 문자를 바꾸어 주거나 삭제 한다.
이 명령어의 주된 용도는 파일내의 대소문자를 변경하여 내용을 원하는 포맷으로 만드는 역할이다.
사용예) cat tr | tr '[a-z]' '[A-Z]' (소문자를
LINUX is the best OS.
You are a LINUXER.
I am a SE.
She is a programmer.

 ※ split
지정된 파일을 주어진 방식대로 나누는(쪼개는, 조각내는) 명령어
-$ split [options] [INPUT [PREFIX]]
[options]
-b : 지정한 SIZE 바이트만큼 파일을 만든다. 사용예) split --byte=200k [파일명]
-aN(값) : 자동으로 생성되는 파일명의 길이 지정하기
-l : 지정한 라인(행수)만큼 파일을 만든다. 사용예) split -l 10 [파일명]
Spilt는 지정된 파일을 주어진 방색대로 나누는 명령어이다.
특정 파일을 나누는 방법으로는 용량별로 나누는 방법과 행수로 나누는 방법 등이 있다.
이 명령어는 특정 파일의 용량이 너무 커서 단위별로 나눌 필요설이 있거나, 특정 목적에 의해 나누어서 사용해야 할 경우에 해당된다.
split 명령어는 옵션 없이 사용할 경우 지정된 파일을 1,000행씩 나누어 저장한다.
sllit 명령어의 결과로 자동 생성되는 파일들의 이름은 xaa,xab,xac,..... 등과 같은 순서대로 저장이 된다.
단, 파일명의 개수는 기본이 3문자로 생성되지만 파일명으로 사용할 문자의 개수도 지정이 가능하다.

 ※ cmp
두 개의 파일이 어떤 부분이 다른가를 비교할 때 사용하는 명령어
- $cmp [options] [파일1] [파일2]
-l : 파일들의 차이점을 상세한 내용으로 보여준다.
-s : 아무런 메세지도 보여주지 않는다.
-i : 지정된 위치까지는 비교대상에서 제외하고 나머지만 비교한다.
cmp는 compare의 약어로서 두 개의 파일이 어떤 부분이 다른가를 비교할 때 사용하는 명령이다.
두 개의 파일을 비교하여 단순히 같은가 다른 가를 확인할 수도 있으며, 또한, 몇 행의 몇 번째 문자가 다른가를 확인할 수도 있다.
두 파일이 동일한가를 확인하고자 할 때에 사용한다.

 ※ diff
두 파일에서 다른 부분을 실제 두 파일의 내용과 함께 보여주는 명령어
- $diff [options] [파일1] [파일2]
- $diff [options] [디렉토리1] [디렉토리2]
[options]
--brief : 단순히 두 파일이 같은지 다른지를 확인한다.
-c : 정의된 포맷으로 두 파일의 차이점 출력하기
-d : 두 파일의 차이점 자세히 출력하기
-r : 두 디렉토리의 차이점 출력하기
-H : 용량이 큰 파일 비교 시 속도를 빠르게 하기
diff는 differences의 약어로서, 두 파일 사이의 내용을 비교하는 명령어이다.
두 파일의 다른 점을 확인하는 명령어로는 cmp가 있지만 diff가 보다 직관적이고 명확하게 찾아준다.
cmp 명령어로도 두 파일의 차이점을 확인할 수 있지만, diff명령어는 보다 다양한 형태의 비교가 가능하기 때문에 cmp 보다는 훨씬 파워풀한 비교를 할 수 있다.

 ※ diff3
3개 파일의 차이점을 비교하여 출력하는 명령어
- $diff3 [options] [파일명1] [파일명2] [파일명3]
[options]
--text : 세개의 파일 비교 시 텍스트 파일이 아니더라도 텍스트 파일로 간주하여 행과 행을 각각 비교하여 그 결과를 출력해준다.
diff3은 3개의 파일차이점을 비교하여 출력하는 명령어이다.
리눅스에서 파일 비교 명령어로는 "cmp, diff, diff3, comm"등의 명령어가 있다.

 ※ type
명령어의 종류를 확인한다.
- $type [명령어]
명령어는 크게 쉘 내부 명령어, 쉘 외부 명령어, Alias 등으로 구분된다.
Type 명령어로 현재 사용하는 명령어가 어느 부분에 속하는지를 확인할 수 있다.

colrm
표준입력 내용의 특정열을 삭제하는 명령어
- $colrm [시작열] [끝열]
colrm은 특정 파일이나 표준입력으로 주어지는 내용의 특정 열을 삭제하여 출력하는 명령어이다.
불필요한 열들을 생략하고 표시하여 주는 명령어이다.

 ※ comm
지정한 두 파일의 행과 행을 비교할 때 사용하는 명령어
- $comm [파일명1] [파일명2]
[options]
-1 : 파일2를 기준으로 파일1과 비교하여 같지 않은 부분을 보여준다.
     즉, 파일1에만 존재하는 라인은 출력하지 않는다.
     다음 열에 공통된 부분을 출력한다.
-2 : 파일1을 기준으로 파일2와 비교하여 같지 않은 부분을 보여준다.
     즉, 파일2에만 존재하는 라인은 출력하지 않는다.
     다음 열에 공통된 부분을 출력한다.
-3 : 파일1과 파일2를 비교하여 첫 번째 열에 파일1의 유일한 부분과, 두 번째 열에 파일2에 유일한 내용을 보여준다.
     즉, 파일1과 파일2에 모두 존재하는 라인은 출력하지 않는다.

 ※ grep
-q : 결과를 보여주지 않는다.
-r : 각 디렉토리의 하위 파일들을 읽는다.
-s : 존재하지 않거나 읽을 수 없는 파일에 대한 결과로 보여주는 에러를 보여주지 않는다.
-v : 지정한 패턴과 일치하지 않는 것들을 보여준다.
-w : 한 단어를 일치하는 결과만을 보여준다.

grep에서 사용되는 검색 문자 패턴 정규표현식
1. . : 아무 문자나 한 문자를 의미한다.
2. * : 어떤 문자열이나 문자길이에 무관한 문자열을 의미한다.
3. ^ : 행의 시작 위치를 의미한다.
4. $ : 행의 마지막 위치를 의미한다.
5. [] : 한 문자 길이의 패턴 리스트 의미한다.
6. [^ ] : 지정된 문자들 이외의 문자들을 의미한다. (^는 여집합을 의미)
7. \ : 뒤에 오는 문자를 문자 그대로 인식한다. (특수문자를 표현하고자 할 때 사용한다.)
8. /< : 단어의 시작 위치를 의미한다.
9. /> : 단어의 마지막 위치를 의미한다.

사용예) 특정파일내에서 지정된 문자열 찾기
          grep linux text.txt | wc -l
          wc -l install.log
사용예) 특정파일내에서 지정된 문자열행수 출력
          grep -c linux install.log
사용예) 특정파일내에서 지정된 문자 제외하고 출력
          grep -v linux install.log
사용예) 대소문자 구분없이 지정문자 검색하기
          grep -i linux install.log
사용예) 디렉토리내에서 특정리스트만 검색
          ls -l /etc | grep "^d"
          (폴더에서 앞글자가 d로 시작하는것)
          ls -l /etc | grep -c "^d"
사용예) 특정디렉토리내에 존재하는 파일들을 한꺼번에 편집기(vi)로 수정하기 = 강추
          ls -l | grep "^" | awk '{print "vi "$9}' > test.sh
퍼미션:링크수:UID:GID:용량:연도:월일:시간:이름
   1         2      3     4     5     6      7     8      9

실습 = 파일 5개 생성 test1 ~ 5
       각 파일별 내용 삽입 = test 11111111111111 제작
추가작업 : test -> guest
ls
test1 test2 test3 test4 test5
각각의 파일을 vi로 열어서 수정해준다.
결과
vi
vi test1
vi test2
vi test3
vi test4
vi test5

test.sh 파일생성 후 추가작업
1. 내용편집 : .sh 실행파일(쉘스크립트)쉘 선언
   #!/bin/bash 추가해준다 --- 첫번째 행에 추가
2. 퍼미션 설정
   기본 UMASK값 022 = 파일이면 644
   -rw-r--r-- 이 상태는 실행권한이 없다.
   퍼미션 => 755
   -rwxr-xr-x 실행권한 부여
 ※ awk
특정 패턴의 문자들을 원하는 포맷으로 변경하는 명령어
- $awk [options] ['script] [변수=값] [파일.....]
- $awk [options] [-F] ['{script}'
awk는 1977년 bell 연구소의 alfred v. Aho'peter j. Wenberger 와 Brian W. Kernighan에 의해 특정문자의 패턴을 원하는 포맷으로 처리하기 위해 개발된 쉘에서 바로 사용 가능한 일종의 유틸리티이며, 언어이며, 영문으로는 "pattern scanning and processing language"라고 매뉴얼 되어 있다.
즉, 테스트파일로 입력을 받아들여 목적에 맞게 출력할 수 있는 문자처리 언어이다.
특정 문자들을 원하는 포맷에 맞게 출력하기 위해 주로 쉘프로그램이나 쉘에서 바로 사용된다.
awk는 gawk로 링크되어 사용하므로 둘은 같은 명령어라고 할 수 있다. awk를 사용하기 위해 꼭 알아두어야 할 것은 awk는 기본적을 탭 또는 공백으로 구분되는 각각의 단어들을 하나의 변수로 처리한다. 탭과 공백을 무시하고 특정문자 콜론(:)이나, 세미콜론(;), 콤마(;)등을 구분문자로 사용하고자 한다면 -F 옵션을 사용하면 된다.
예를 들어 "-F:" 으로 지정했다면 ":" 콜론을 구분문자로 하여 단어와 단어 사이를 처리하게 된다.
예를 들어 "-F;" 으로 지정했다면 ";" 세미콜론을 구분문자로 하여 단어와 단어 사이를 처리하게 된다.
[awk]
예제파일 /etc/passwd
계정:패스워드:UID:GID:코멘트:~계정:사용쉘
 $1     $2        $3  $4     $5        $6     $7
목적 : passwd -> gropu/shadow 생성
$ = field 열을 뜻함.
]# cat /etc/passwd | awk -F: '{print $1}'
passwd 파일에서 사용자ID 항목만 출력
]# cat /etc/passwd | awk -F: '{print $1"    "$6}'
passwd 파일에서 사용자ID/홈디렉토리를 출력
ex1) passwd => group 파일생성
]# cat /etc/passwd | awk -F: '{print $1":x:"$3":"}' > /tmp/test/group
ex2) passwd => shadow 파일 생성
]# grep /home /etc/passwd | awk -F: '{print "grep "$1" /etc/shadow"}' > /tmp/test/shadow.sh
ex3) 사용자 홈디렉터리 일괄 백업하기
]# ls -l /home | grep "^d" | awk '{print "tar cvfpz " " /tmp/test/"$9".tar.gz" " /home/"$9}' > backup.sh

 

 

반응형

'OS > Linux' 카테고리의 다른 글

우분투10.04 설치후 키보드 먹통  (0) 2010.07.05
리눅스 명령어 3  (0) 2010.06.21
리눅스 기본 명령어 1  (0) 2010.06.21
사용자, 그룹명 변경하기  (0) 2010.05.07
남은 용량 확인  (0) 2010.04.19
댓글