728x90
반응형
유닉스 명령어

다음은 대부분의 유닉스 머신에서 사용되는 기초적인 명령어들이다.

 

cal [[month] year]

달력을 출력한다.

date [MMDDHHmm[[yy] | ccyy]]

컴퓨터의 시각을 알 수 있다.

df [-lt][-f][{}]

슈퍼블록에서 카운트하고 있는 마운트된 파일 시스템, 디렉토리에서 사용가능한
디스크블록과 freeinode수를 알려 준다.

du

사용자 자신의 디스크 사용 상황을 블록 단위로 출력해준다.

grep [option] limited regular expression [file]

파일에서 특정한 패턴을 찾는데 사용되며, 그 패턴을 포함하고 있는 모든 행을 출력한다.

kill [-sihno] PID

지정한 프로세서에게 종료신호를 보내는 명령어이다.

ps

컴퓨터 시스템에서 활동중인 프로세서의 상태를 알려주는 명령이다.

touch [-amc][MMddhhmm[yy]]files

지정된 파일에 접근하여 최종적으로 수정된 시간을 갱신한다.

tr [-option][string1[string2]]

표준 입력의 특정 문자들을 삭제하거나 치환하여 표준 출력으로 내보내는 명령어이다.

tty

컴퓨터 시스템에 연결하여 사용하고 있는 터미널의 이름을 알려준다.

umask [###]

파일이 만들어질 때 적용되는 파일접근 허용모드를 설정한다.

cd

현재 디렉토리를 바꾼다.

ls [-option][file/directory]

디렉토리의 내용을 화면에 출력한다.

mkdir [-m]mode[-p]<경로><디렉토리 이름>

새로운 디렉토리를 만든다.

rmdir [-ps]<디렉토리이름>

지정된 디렉토리를 제거한다.

pwd

현재의 작업디렉토리를 화면에 출력한다.

cat

파일의 내용을 표준 출력 장치로 내보내는 명령어이다.

cmp [-l][-s]file1 file2

두개의 파일을 비교하여 차이점을 화면에 출력한다.

comm [-[123]]file1 file2

지정된 두개의 파일을 비교하여 공통부분을 삭제 혹은 선택할 때 사용된다.

cp file1 [file2] target

지정된 파일을 다른 이름으로 복사한다.

cut -clist[files]

파일의 각 행에서 선택된 필드를 절단한다.

dd[option=value]

파일을 변환 혹은 복사한다.

diff

지정된 두개의 파일간의 차이를 비교하여 두개의 파일이 일치되기 위해 필요한
정보를 제공한다

fgrep [option] string[file]

문자열에 따라 파일을 검색한다.

find path list expression

어떤 파일이 어느 디렉토리에 있는지를 찾아준다.

join [option]file1 file2

관계형 데이터베이스 조작 명령으로 지정된 파일의 관계를 결합하여 결과를
표준 출력장치로 출력한다.

ln [-f][-n][-s]file1[file2] target

두개의 파일을 연결하여 사용하게 한다.

mknod name b/c major-No minor-No

특수 파일을 위한 디렉토리 항목과 이에 대응하는 i-node를 생성한다.

mv <현재 이름> <변경될 이름>

디렉토리 또는 파일의 이름을 변경한다.

paste file1 file2

여러 개의 파일에 있는 같은 행의 내용을 병합한다.

pr -option files

파일을 표준출력으로 보여주고 현재의 시각, 파일명, 페이지 등을 같이 보여준다.

rm [-f][i]file

파일 혹은 디렉토리를 삭제한다.

sort [option]files

파일을 정렬 혹은 병합한다.

tail

지정된 파일의 끝 부분을 출력한다.

tar [-]{txruc}[vwfblm][0-7[lmh]][tapefile][blocksize]file1 file2

파일들을 자기 테이프에 저장 또는 불러오기 위한 명령어이다

ulimit

v 사용자 범위의 출력, 설정, 프로세서의 보통 파일 크기 범위를 출력한다.

umask[xxx]

v 파일 생성 마스크의 설정과 출력을 위해 사용된다.

uniq [-udc [+n][-n]][input[output]]

중복되는 행을 삭제하는 명령이다.

wc file

텍스트 파일에 담겨져 있는 문자 수, 단어 수 및 라인 수를 화면에 출력하는 명령이다.

bc

간단한 산술 계산을 할 수 있게 한다.

enable, disable

프린터의 사용을 허용 혹은 불가능하도록 설정한다.

factor [integer]

지정된 정수를 소인수 분해하여 화면에 출력한다.

mesg [-n][-y]

다른 사용자가 메세지를 보낼 때 수신여부를 결정한다.

mount [-v | -p]

이미 만들어져 있는 파일 시스템을 연결하는 명령이다.

passwd

자신의 암호를 등록하거나 변경할 때 사용된다.

stty [-a][-g][option]

현재 단말기나 콘솔의 입/출력 선택 항목을 설정한다.

tee [-l][-a][file]

파이프를 접속한다.

tr [-option][string1[string2]]

표준 입력의 특정 문자들을 삭제하거나 치환하여 표준 출력으로 내보내는 명령이다.

wall

모든 사용자에게 동일한 메세지를 전송한다.

write user[terminal]

다른 사용자에게 1대1 메시지를 전송한다.

chgrp group file

지정된 파일의 소유권자 그룹을 바꾸는 명령이다.

chmod mode file

지정된 파일에 대한 사용 권한을 변경하고자 할 때 사용된다.

chown owner file

파일의 소유권자를 변경한다

--
nirvana

 

--------------------------------------------------------------------------------
  4장. UNIX 시스템 사용 명령어 

4.1 시동과 종료
4.2 파일과 디렉토리
4.3 기본적인 명령어
4.4 압축유틸리티 사용법
4.5 작업제어 관련 명령어


4.1 시동과 종료

4.1.1 login
: login은 사용자가 console을 이용할 때와 터미널을 이용할 때는 다소 차이가 있지만 그렇지 않는 경우도 있다. 예를 들자면 어떤 telnet 접속프로그램으로 접속할 경우 뜨지 않던 openwindows가 다른 프로그램에서는 뜰수도 있다.

4.1.2 command line의 입력형식
: UNIX는 명령어 입력 시에 대소문자 구분이 있다는 점과 항상 명령어의 사용법에 있어서 자신이 없을 때에는 아래의 형식으로 도움말을 이용토록 한다. 그리고 앞으로 나오는 프롬 프트는 '#'로 통일한다. 이러한 프롬프트에 대해서는 크게 연연하지 않아도 된다. 예를 들자면 시스템에 Solaris 2.5를 설치한 다음 처음 뜨는 root용 프롬프트는 '#'이다. 하지만 이것을 수정할 수도 있다. Solaris를 설치하게 되면 먼저 root는 Sun Shell(이하 sh)로 셋팅이 되어 있어서 그렇게 뜬다. 하지만 C Shell(이하 csh)로 설정할 경우 틀려진다. 그리고
자신만의 Shell파일(.cshrc)에서 set prompt문법을 이용하여 아예 프롬프트를 바꿀 수도 있으므로 이 부분에 대해서는 크게 신경을 쓰지 않도록 하자.

# man ls

4.1.3 비밀번호의 설정과 변경
: 비밀번호는 시스템을 사용함에 있어서 가장 소중히 다뤄야 할 부분이다. 쉽게 알 수 없는 즉 자신의 신상명세와 연관없는 것을 고르고 남들이 알지 못하도록 해야 한다. 예를 들자면 규칙을 이용하여 암호를 설정하는 습관을 가지는 것도 도움이 된다. 다음의 명령어로 암호 를 바꿀 수 있다.

# passwd

Enter New password :
Re-enter New password :

4.1.4 logout
: 시스템 사용을 종료할 때에는 실행중인 프로세스가 없는지 확인을 하고 종료한다.

# ps -a
.............

# logout

종료할 때에는 logout 과 exit 또는 Ctrl + D 이다.

4.2 파일과 디렉토리

4.2.1 파일의 종류

(1) 정규파일
: 정규파일이란 .login 이나 a.txt 같은 보통파일을 말한다.

(2) 디렉토리 파일
: UNIX에서는 정규파일과 디렉토리 파일을 다해서 파일이라고도 부른다. 디렉토리 파일은 ./data 같은 디렉토리를 의미한다.
다음의 표에서는 / 밑에 있는 디렉토리를 성격별로 나타낸 것이다.

 

/ : UNIX 커널의 실행화일 및 시스템 관리에 중요한 .login, .profile드의 파일이 포함된다.
/bin : UNIX의 기본 커맨드 파일들이 위치한다.
/etc : init, passwd등 시스템 관리용의 커맨드나 데이터 파일들이 위치한다.
/lib : 커맨드들이 사용하는 기본적인 파일들이 배치된다.
/temp : 커맨드 실행 중에 필요한 임시 파일들을 위치시키기 위하여 사용되는 디렉토리이
다.
/usr : 일반적으로 시스템 관리자의 파일들이 배치한다.
/usr/bin : 워드, 데이터 베이스관리 프로그램들과 개발된 프로그램등이 포함된다.
/usr/home : 사용자들의 홈 디렉토리로서 대표적으로 지정하는 것이나 시스템을 설치할
때 다른곳으로 정해줄수도 있으며 사용자계정을 만들 때에 다른 곳으로 만들어 줄 수도
있다.
/usr/include : C언어의 header 파일들이 포함된다.
/usr/man : UNIX의 매뉴얼이 위치한다.
/usr/spool : CPU와 주변장치를 중첩하여 수행시키기 위하여 주변장치로 출력되는 데이터
파일들을 임시로 저장하는 스풀용의 디렉토리다.
/usr/adm : UNIX의 사용자와 프로세스의 작동을 monitor하는 accounting error reports
같은 프로그램들이나 데이터 파일들이 포함된다.

 

(3) 특수화일
/dev밑의 파일들을 일컽는데 이곳에는 입출력장치의 제어기를 이곳에서 맞추어 장치를 연결할 수 있게 한다. 예를 들면 /dev/tty12는 12번 터미널을 의미한다. 이곳에서는 자신이 가지고있는 장치가 /dev 디렉토리내의 어떤 형식의 장치를 가지고 있는가를 알고만 있어도 장치를 인식할 수 있다.
4.2.2 파일명과 경로명
: UNIX 시스템의 파일명은 255문자이내에서 사용 가능하다. 주의할 것은 대·소문자를 구별 한다는 것이다. 또 한가지 "." 나 "_"로 시작되는 파일명은 시스템 파일들이 많이 사용하기 때문에 사용하지 않는 것이 바람직하다.

(1) 상대경로명
: 만약 현재의 /home/pctop/pub 에서 /home/pctop/data 로 이동하려고 할 때 cd ../pub 라고 입력하면 된다. 이때 쓰이는 방식이 상대경로 이동방식이다.

(2) 절대경로명
: 만약 현재의 /home/pub 에서 /home/a 로 이동하려고 할 때 cd /home/a 라고 입력하면 된다. 이때 쓰이는 방식이 절대경로 이동방식이다.

4.2.3 파일의 특성
파일의 보안성을 유지하기 위해서는 무엇보다도 첫째, 허가모드를 중요시 여겨야 한다. 파일의 허가모드의 순서는 다음과 같다.

 

user group others
rwx rwx rwx


파일의 유형에는 다음의 7가지에 한한다


- : 정규파일
d : directory
l : symbolic link
c : character type
b : block type
s : socket
p : named pipe

 

이 허가모드를 변경하기 위해서는 chmod 명령어를 이용해야 하며 그에 대한 상세한 설명은 4.3의 기본적인 명령어중 chmod를 참조하기 바란다.
4.3 기본적인 명령어

기본적으로 UNIX는 대소문자를 구별한다. 그리고 alias가 되어있지 않는한 소문자로 명령어 를 입력하는 것이 일반적이므로 이에 주의하여야만 한다.

id : 사용자의 이름과 번호의 표시(사용자가 속한 group id와 user id를 표시함)
# id

pwd : 사용자의 현재의 디렉토리 표시
# pwd

tty : 사용자 단말기의 장치파일명 표시
# tty

stty : 터미널 제어특성의 표시 및 지정, 현재 컴퓨터 시스템과 연결되어 있는 단말기나 콘솔의 입출력을 논리적으로 변경
#stty

date : 시스템의 날짜와 시간의 표시
#date

cal : 현재의 달력을 보고자 할 때 사용한다.
#cal

who : 현재 접속되어 있는 사용자들 표시
#who

whoami : 현재 접속해 있는 자신의 id를 표시
#whoami

finger : 시스템 사용자의 개인 정보표시(이 정보에서 이름은 가입할 당시의 comment만 찍
힘)를 위한 것이지만 이렇게 안 나올 경우도 있다.
#finger root

그것은 자신이 시스템에 오래 접속하지 못할 사정이 생겨서 다른 사용자가 이 명령어를 이용하여 검색할 때 '지금 저는 출장중입니다' 라는 메시지가 나오도록 한다면 얼마나 좋을 것인가. 자! 방법이 있다. 자신의 로그인 디렉토리(이하 홈 디렉토리)에 .plan 이라는 파일을 만들어 보자. 이때는 일반 텍스트편집기를 사용하면 된다. 예를 들면 VI Editor 같은 것이다. VI를 이용하여 '저는 출장중입니다' 라는 메시지를 쓰고 저장후 종료하면 .plan 이라는 파일을 cat을 이용하여 내용을 확인한 후 명령프롬프트 상에서 시험해보자.
만약 자신의 id가 kcs 라면 'finger kcs'를 입력해본다. 그러면 '저는 출장중입니다'라는 메시지가 뜰 것이다. 잠깐! 한글로 썼을 경우 안나타날수도 있다. 그러면 영어로 써야한다

그것은 자신이 시스템에 오래 접속하지 못할 사정이 생겨서 다른 사용자가 이 명령어를 이용하여 검색할 때 '지금 저는 출장중입니다' 라는 메시지가 나오도록 한다면 얼마나 좋을 것인가. 자! 방법이 있다. 자신의 로그인 디렉토리(이하 홈 디렉토리)에 .plan 이라는 파일을 만들어 보자. 이때는 일반 텍스트편집기를 사용하면 된다. 예를 들면 VI Editor 같은 것이다. VI를 이용하여 '저는 출장중입니다' 라는 메시지를 쓰고 저장후 종료하면 .plan 이라는 파일을 cat을 이용하여 내용을 확인한 후 명령프롬프트 상에서 시험해보자.
만약 자신의 id가 kcs 라면 'finger kcs'를 입력해본다. 그러면 '저는 출장중입니다'라는 메시지가 뜰 것이다. 잠깐! 한글로 썼을 경우 안나타날수도 있다. 그러면 영어로 써야한다.

주사용 명령어.


where 찾고자 하는 파일이나 디렉토리의 위치를 알려준다 # where index.html

ps process의 상태표시 # ps -ajx
option)
-a : 다른 사람에 의해 소유된 프로세스에 대한 정보를 포함
-c : command 이름을 표시
-C : %cpu field내에 decaying average 대신에 raw CPU time을 표기
-e : argument 외에도 환경을 표기
-g : 이 option이 없으면 interesting 프로세스만 프린트
-j : PPID, PID, PGID, SID, TT, TPGID, STDT, UID, TIME정보 포함 표기
-u : USER, %CPU, %MEN, SZ, RSS, START field 포함
-x : no controlling terminal 가진 프로세스 포함
중간용어설명)
PPID : process의 parent의 number id
PGID : process group id of process
SID : process 가 속해있는 session의 number id
TPGID : TT 아래 명시된 터미널과 관계 있는 process group의 number id
UID = 0 : Super-User


df 디스크의 사용가능한공간표시 # df -u
cp copy # cp index.html index_old.html
mv move # mv index.html index_new.html
rm remove # rm index.html
rmdir remove directory # rmdir ./images
mkdir make directory # mkdir photo
chdir change directory # chdir /usr/local
cd change directory # cd /usr/local/bin
du 디스크의 사용공간 표시(옵션이 없으면 현재의 위치에서 하위의 모든 파일들의 공간표시) # du ./

hostname 현재 접속해 있는 host의 이름을 표시 # hostname
man 해당하는 command의 manual을 참조하고자 할 때, 단 /usr/man에 그 항목이 있어야만 한다. # man ls

& background 처리를 위하여 명령어 뒤에 붙여준다. # test &

alias 특정한 명령어를 자신이 임의로 수정 # alias cx chmod
위와 같이 하면 cx는 chmod명령어를 대신한다. 이러한 작용을 shell에 추가시킬때는 다음과 같이 추가한다.
alias cx 'chmod'
alias를 해제하고자 할 때는 unalias를 사용한다.
ex) # unalias cx
그리고 현재 설정된 alias들을 보고 싶을때는 alias를 입력하면 된다. 다음은 한 예이다

path 경로를 지정
일반적을 shell에 지정하지만 명령어로서 수정할 수도 있다. 추가하는 방법은 다음곽 같다
set path = ( ~/bin /bin /usr/bin /usr/local . )
%set path = ( $path /usr/bin /usr/local /usr/local/etc )
두 번째 라인의 %set 명령어는 기존의 path에 추가할 때 사용하는 방법이다.

find 디렉토리를 탐색하여 지정화일의 위치표시 # find index.html
cat 파일의 내용을 표시, DOS에서의 type명령어와 유사 # cat index.html

more 파일의 내용을 한면씩 화면에 표시 # cat index.html | more
pg 파일의 내용을 표시 # pg index.html
head 파일의 처음 부분을 표시(기본값은 10라인) # head index.html
tail 파일의 마지막 부분을 표시(기본값은 10라인) # tail index.html
lp 파일의 내용의 인쇄요청 # lp index.html
pr 인쇄를 위한 파일의 페이지화, 파일을 인쇄하기 위한 준비로서 페이지를 분리한다. 각 페이지는 파일명, 날짜, 시간 및 페이지 번호를 표시하는 header를 포함한다. # pr index.html

chmod change mode # chmod 755 ./htdocs
위에서 755가 의미하는 것을 해석해보면 만약 "ls -al "을 입력했을 때 다음의 형식으로 나타났다고 가정하자
# ls -al
drwxrw-rw- ./htdocs
lrwxr--r-- ./pub ----> ./public_html
위와 같이 나나났다면 처음의 d는 디렉토리를 의미하며 다음의 rwx 는 ./htdocs에 대한 소유주의 권한이 read,write,excute 의 세 가지 권한이 다 주어진 것이다. 다음의 rw- 는 소유주가 속한 그룹에게 주어진 권한이며, 다음의 rw- 는 그룹이외의 사용자에게 주어진 권한이다. 즉, 디렉토리이면서 소유주는 읽기·쓰기·실행이 가능하며 그룹에게는 읽기·쓰기 가능, 이외의 사용자는 읽기·쓰기가 가능하다. 여기서 각 권한블럭마다 3비트를 할당하고 있음을 알 수 있다. 즉 소유주에 대한 권한 rwx 를 2진으로 바꾼다면 1112 이다. 이것을 10진수로 바꾸면 7이며, 그룹에 대한 권한 rw- 를 2진으로 바꾼다면 1102 이며 10진수는 6이다. 그룹이외의 사용자도 마찬가지로 10진수 6이다. 그러므로 이 디렉토리에 대한 권한을 숫자로 표기한다면 766이다. 이것을 소유주는 읽기·쓰기·실행이 다 가능하면서 그룹과 이 외의 사용자는 읽기·실행만 가능하게 한다면 십진수로 755가 될 것이다. 그러므로 변경을 위해서는 chmod 755 ./htdocs 를 입력하면 된다. 모드부분에서 "lrwxr--r--"중 'l' 부분은 link를 의미하는 것으로서 ./public_html과 링크 되어 있음을 의미한다.
이것을 보다 쉽게 바꾸는 방법도 있다. 그룹은 g를 이 외의 사용자는 o로 나타낼 수 있는데 현재의 권한 766에서 744로 변경하고자 할 때에는 그룹이 가지고 있는 쓰기 권한을 박탈하는 동시에 이 외의 사용자에게도 쓰기 권한을 박탈해야만 한다. 이때 사용하는 용법은 다음과 같다.

chown change owner # chown webadm ./htdocs
chgrp change group # chgrp student webadm
ln link, 예 : ln -s list3 /tmp/list # ln -s /usr/local/etc/httpd/htdocs ./htdocs
UNIX에서의 link는 공간의 절약을 꾀할 수 있으나 연결상태를 잘 파악하고 사용하여야 한다. ln의 option중에서 -s의 의미는 다른 file system에 있는 것도 link할 수 있는 symbolic link를 사용함으로서 유용한 option이다.

 


4.4 압축 유틸리티 사용법
4.4.1 .tar
tar는 정확히 말하자면 압축유틸리티가 아니다. 이것은 단순히 여러 개의 파일을 하나의 덩어리로 결속시키는 것이다. 이렇게 해서 하나의 덩어리로 만든 다음에 압축을 하는 것이 대개의 과정이다. 결속 할 때의 사용법은 다음과 같다.

# tar -cvf <만들 파일이름>.tar <묶고자하는 파일이름>
결속된 .tar 파일을 풀고자 할 때의 사용법은 다음과 같다.
# tar -xvf <묶여있는 파일이름>.tar

4.4.2 .tar.z
위에서 .tar를 살펴본 것처럼 .tar로 결속을 시킨 다음 압축을 이행한다. 이때는 compress 라는 유틸리티를 이용하게 된다. 그렇게 하여 압축을 하면 원래의 파일에 .z가 추가적으로 붙게 된다. 압축하는 과정과 푸는 과정은 다음과 같다.

# compress filename
# uncompress filename

4.4.3 .gz 또는 .z
compress외에 gzip이라는 유틸리티도 이용되는데, 사용법은 다음과 같다.

#gzip filename (압축할 때)
# gzip -d filename

4.5 작업제어 관련 명령어

4.5.1 background 작업 프로세스의 정지와 삭제
정지는 아래의 stop 명령어로 제어될 수 있다. 그리고 현재의 진행중인 작업을 보려면 jobs라는 명령어로 체크할 수 있다. %job_number는 현재 실행중인 프로세스 번호를 적는 것 으로서 pid와 동일한 값을 갖는다.
# stop %job_number
# jobs (show job#)

삭제를 위해서는 명령어를 사용하는데 사용법은 다음과 같다. 여기서 pid는 프로세스 id이며, 'ps -a' 명령어로 알 수 있다.
# kill -9 pid

4.5.2 foreground 작업 프로세스의 정지와 삭제
현재 작업중인 프로세스를 background작업으로 돌리기 위해서는 'Ctrl + z '를 입력한다. 그리고 이렇게 background로 전환된 작업은 다음의 명령어로 제어될 수 있다.

# fg ☞ foreground 로 다시 전환시킴
# \ ☞ 종료를 시킴
# bg ☞ 계속 진행시킴

4.5.3 기타 작업제어 관련 명령어
# command& ☞ background 작업개시
# ps ☞ 현재 실행중인 프로세스 id 디스플레이
# jobs ☞ background 작업번호 및 상태 디스플레이
# nohup command& ☞ logout 후에도 명령 실행 계속유지
# fg ☞ 현재작업을 foreground 로 전환시킴
# fg %n ☞ n 번 작업을 foreground 로 전환시킴

4.5.4 history
이전에 사용된 명령어를 호출하는 명령어이다. history의 개수지정은 자신의 shell에서 변수로 지정할 수 있으며, 지정하는 방법은 다음과 같다. 개수를 50개로 한다면,

set history=50

 

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,