솔라리스를 능숙하게 다루고 ,친해지기 위해서는 우선적으로 명령어에 익숙해 져야한다. 이러한 명령어는 솔라리스 뿐만 아니라 거의 모든 유닉스 시스템에서 사용되어지는 것으로 기본적으로 꼭 알아야할 것 들이다.
계정명령어
유닉스에 접속과 접속종료에 관계되는 명령어와 사용자 계정에 관한 명령어에 대해서 알아보자.
1. login
시스템에 접속하기 위해서는 사용자마다 고유의 계정이 있어야한다. 일반 사용자들은 시스템관리자에게 연락하여 자신이 원하는 ID로 계정을 발급받자. 처음 솔라리스(유닉스)에 접속하면 다음과 같은 화면이 나온다.
SunOS 5.8 login: password: |
사용자는 계정ID와 암호를 정확하게 입력하여야한다. 시스템에 성공적으로 접속이 이루어지면, 마지막 login, 전자우편메시지나, 시스템관리자로부터의 메시지 등의 정보가 나온다, 다음은 성공적으로 로긴(login)한 예이다.
#Last login: Mon Sep 4 11:19:05 from 192.220.236.8
|
2. 패스워드(Passwd) 바꾸기
시스템에 접속하기 위해서는 매번 로긴과 패스워드를 입력하여야 한다. 만일 기억력감퇴나, 부득이한 사정으로 패스워드를 잊었다면 시스템관리자에게 연락하자. 사용자에게 있어 패스워드는 자신의 시스템에 대한 1차적인 보안수단이다. 따라서 정기적으로 바꾸어주는 것이 좋다. 패스워드를 바꾸기 위해서 간단히 passwd 명령을 실행시키면 된다.
#passwd passwd: Changing password for solaris Enter login password: New password:
|
만일 기존에 사용했던 패스워드와 새로운 패스워드 사이에 적어도 3글자 이상 차이가 없다면 다음과 같은 메시지가 나온다.
passwd(SYSTEM): Passwords must differ by at least 3 positions
|
그럼 다시 새로운 패스워드를 입력하자. 자신만의 고유하고,
외우기쉬운 패스워드로...
New password: Re-enter new password: passwd (SYSTEM): passwd successfully changed for solaris
|
디렉토리 및 파일 정보 보기
1. 파일 정보 보기 1.1 ls
ls -flag [filename] [directoryname] |
유닉스 명령어 중 가장 많이 쓰이는 명령어를 꼽으라면 당연히 ls 명령어 일것이다. 윈도우에서 쓰이는 탐색기와 같은 것으로 도스에서는 dir 명령어로 이해하면 될 것이다. 다음은 루트(/) 디렉토리에 있는 파일들을 ls 를 이용하여 출력하여보자.
#ls
bin boot cdrom dev devices etc export home kernel
lib lost+found mnt net nsmail opt platform proc sbin tmp
TT_DB usr var vol xfn |
유닉스에서 사용하는 명령어들은 굉장히 많은 옵션을 가지고 있다. 그렇다고 이 모든 옵션을 다 알 필요는 없다. 단지, 자주 사용하는 몇가지 옵션만 알면된다. 다음은 가장 일반적으로 많이 쓰이는 ls의 옵션들을 살펴보자.
1.2 디렉토리네의 숨겨진 파일 보기 [-a] -a - 숨겨진파일(파일이름이 .으로 시작되는 파일)의 리스트를 보여준다. 기본적으로 ls 명령어로는 . 으로 시작되는 파일들은 숨은 파일로 출력되지 않는다.
# ls -a
. .bash_history .bashrc .profile
.. .bash_profile .emacs lost+found |
[-a]를 쓰면 숨겨진파일까지 포함해서 모든파일과 디렉토리를 표시한다. 위에서 보았듯이 파일과 디렉토리들은 이름순으로 출력하여 보여준다. 마지막으로 변경된 시간에 따라, 최근 작업한 파일들을 알고 싶으면 [-t] 플래그를 쓰면된다.
1.3 여러가지 방법으로 보기 좀더 다양한 플래그를 활용하여, 파일과 디렉토리에 대해서 살펴보자.
상세히 보기 기본적인 정보이외에 자세한 파일에대한 정보를 보려면 [-l ]옵션을 사용하면 된다. [-l]은 파일과 디렉토리에 대하여 권한, 링크의수, 소유자, 그룹, 크기, 마지막변경시간 등 상세한 정보를 보여준다.
# ls -l
total 8
drwxr-xr-x 2 ebee staff 512 Aug 28 17:53 local
drwx----- 2 ebee staff 512 Aug 24 10:13 nsmail
drwxr-xr-x 2 ebee staff 512 Aug 31 11:30 test
drwxr-xr-x 2 ebee staff 512 Aug 25 18:15 test1 |
구분하여 보기 디렉토리를 구분하여 보고싶으면 [?p]를 쓰면된다.
# ls -p ebee/ newfile solaris test test1 testdir/ |
콤마(,)로 나누어 보기 현재 디렉토리의 파일과 디렉토리들의 이름들 사이에 콤마(,)로 나누어 보려면 [-m] 을 쓴다.
# ls -p ebee, newfile, solaris, test, test1, testdic |
하위 디렉토리 보기
디렉토리의 모든파일들과 하위디렉토리의 모든파일들까지 보고싶을땐 [-R]을 쓰면된다.
# ls -R .: lost+found test1 ./lost+found: ./test1: file1 file2 file3 |
이제까지 ls명령어에 대한 몇가지 중요한 옵션들을 살펴 보았다. 더 자세한 내용들은 다음의 ls 옵션 정리에서 간략하게 정리하였다.
ls 옵션 정리
option |
descrition |
-A |
.과 ..을 제외한 모든 파일과 디렉토리의 리스트를 보여준다. |
-a |
숨겨진 파일과 디렉토리의 리스트를 보여준다. |
-l |
파일에 대한 권한, 링크의 수, 그룹, 크기, 마지막 변경시간등을 보여준다. |
-R |
파일리스트와 디렉토리의 서브디렉토리의 파일까지 보여준다. |
-t |
가장 최근 것 먼저 정렬한다. (마지막 변경순서로) |
-r |
정렬 순서를 반대로 한다. (이름은 역순으로 시간은 가장오래된것 먼저 정렬) |
-m |
파일과 파일사이를 ,(콤마)로 나누어 출력한다. |
-i |
파일앞에 i-node 의 수를 표시하여 출력한다. |
-s |
파일과 디렉토리의 크기를 킬로바이트 단위로 출력한다. |
2. 파일의 종류 알아내기 file
유닉스 시스템에서는 파일의 확장자가 없기떄문에 파일의 속성을 간혹가다 모를떄가 있다. 이때 쓰이는 명령어가 file 명령어이다.
#file test1 test1: directory
# file /etc/hosts
hosts: ascii text
# file /bin/ls
ls: ELF 32-bit LSB executable 80386 Version 1, dynamically linked, stripped |
test1은 디렉토리이고, /etc/hosts 파일은 일반 텍스트 파일, /bin/ls 는 실행명령어임을 알 수 있다.
여러가지 방법으로 파일 보기
1. cat
cat -flag [filename]
파일안에 무슨 내용이 들어있는지 보는 가장 간단한 명령어가 cat 명령어이다.
# cat cat.txt hello!!
WELCOME to UNIX World!!
This is a wonderful world!!! |
cat 옵션정리
option |
description |
-b |
출력되는 각행에 행번호를 부여하여 출력. 공백행은 행번호를 부여하지 않음 |
-e |
화면상에 보이지않는 문자 출력. 행의 끝에는 $ 기호를 출력한다. |
-n |
행마다 앞에 행번호를 붙인다. 행번호는 1부터 시작한다. |
-s |
연속되는 공백행을 한 행으로 출력한다. |
-q |
입력된 파일들을 찾을 수 없을 때 출력되는 메시지가 나오지 않도록 한다. |
-v |
출력할 수 없는 문자들이 있으면 출력할 수 있는 문자로 바꿔서 출력한다. |
2.파일내용 한 화면 씩 보기
2.1 more
파일의 내용이 너무 길 경우 출력되는 화면이 너무 빨리지나가 끝에만 보게 될때가 있다. 이때 유용하게 쓰이는 명령어가 more 명령어이다. 기본적은 more명령어는 한화면의 출력이 끝냐면 다음으로 넘어가기 전 멈춘다. 이때, 스페이스바[Space]를 누르면, 다음화면이 출력되고, 엔터[Enter] 키를 누르면 한줄씩 출력이 된다. /usr/include/에 있는 glob.h 파일을 more를 이용하여 보자.
# cd /usr/include
# more glob.h
/*
* Copyright (c) 1994 by Sun Microsystems, Inc.
* Copyright 1985, 1992 by Mortice Kern Systems Inc. All rights reserved.
*/
#ifndef _GLOB_H
#define _GLOB_H
#pragma ident "@(#)glob.h 1.4 95/03/08 SMI"
#include
#ifdef __cplusplus
extern "C" {
#endif
typedef struct glob_t {
size_t gl_pathc; /* Count of paths matched by pattern */
char **gl_pathv; /* List of matched pathnames */
size_t gl_offs; /* # of slots reserved in gl_pathv */
/* following are internal to the implementation */
char **gl_pathp; /* gl_pathv + gl_offs */
int gl_pathn; /* # of elements allocated */
} glob_t;
--More-- (38%)/*
|
more 명령어는 다른명령어의 결과를 출력할떄 파이프(Pipe)로 연결하여 사용하는 경우가 대부분이며, 파이프에(Pipe)에 대해서는 다음에 더 자세히 설명할 것이다
more 옵션정리
option |
description |
-d |
빠져나갈것인지, 도움말을 볼것인지 묻도록 한다. |
-f |
한 행을 여러행으로 나누어 출력하지 않는다. |
-number |
한번에 표시할 크기를 정한다. |
-p |
화면이 스크롤되는 것을 막는다. |
-s |
연속되는 공백행을 하나의 행으로 줄여 출력한다. |
-u |
밑줄 문자를 만드는 특수문자열(escape sequence)을 무시한다. |
-w |
파일을 끝까지 출력하고 나면, 다시 처음으로 돌아가게 한다. |
+행번호 |
행번호 ‘행번호’ 로부터 화면출력을 시작한다. |
+g
|
파일의 끝부분에서 시작해서 거꾸로 출력한다. |
+/pattern
|
파일에서 pattern이 나타나는 행에서부터 두 행 앞서서 출력한다. |
2.1 less
more명령어와 비슷하게 파일을 출력하지만, less는 기본적으로 출력된 파일의 내용을 앞과 뒤로 자유롭게 볼 수 있다. /etc/inittab 파일을less명령어로 써서 보자.
# less /etc/inittab
s5:5:wait:/sbin/rc5 >/dev/msglog 2<>/dev/msglog
inittab
s6:6:wait:/sbin/rc6
fw:0:wait:/sbin/uadmin 2 0
of:5:wait:/sbin/uadmin 2 6
rb:6:wait:/sbin/uadmin 2 1
sc:234:respawn:/usr/lib/saf/sac -t 300
co:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` console login: " -T sun-
color -d /dev/console -l console -m ldterm,ttcompat
(END)
|
파일 끝에(END) 표시를 볼 수 있을 것이다. 파일의 끝을 나타내며, more 명령어와는 달리 쉘로 빠져나가지 않는다. q 또는 Q를 입력하여야만 나갈 수 있다. 잠시 쉘 프롬프트 상태로 나갈려면 !를 누르고 다시 less명령어 상태로 오려면 exit을 입력하면된다.
less 옵션정리
option |
description |
h |
쓸 수 있는 less명령어들을 보여준다. |
Space /Ctrl+v /Ctrl+f |
다음화면으로 넘어간다. 앞에 숫자를 붙이면 지정한 숫자만큼 다음줄로 넘어간다. |
Enter/ Ctrl+n |
다음 한줄로 넘어간다. 앞에 숫자를 붙이면 지정한 숫자만큼 다음 줄로 넘어간다. |
Ctrl +b |
전 화면으로 넘어간다. 앞에 숫자를 붙이면 그 수만큼 전화면으로 넘어간다. |
g |
파일의 가장 앞부분으로 간다. 앞에 숫자를 붙이면 그 숫자의 행으로 간다. |
G |
파일의 가장 끝부분으로 간다. 앞에 숫자를 붙이면 그 숫자의 행으로 간다. |
Ctrl +u |
현재 화면을 다시 출력한다. |
! |
지정한 패턴이 포함되어 있지 않은 행들을 찾는다. |
q
|
less 명령어를 빠져 나간다. |
v
|
현재 파일에서 vi 를 실행한다. |
3. 파일 내용 처음과 끝 지정해서 보기
3.1 head
head -flag [filename] head 명령어는 파일전체가 아닌 처음 n개의 행을 화면으로 출력한다. n은 기본으로 10행이 지정된다.
# head -2 headfile
head 명령어는 파일의 처음부분을 출력
기본으로 10행출력.
#
|
head 옵션정리
option |
description |
-c number |
파일의 처음에서 숫자만큼의 바이트를 출력한다. |
-n number |
파일의 처음에서 숫자만큼의 행을 출력한다. |
3.2 tail head 명령어와는 반대로 파일의 마지막 10줄을 출력한다.
tail +/- n [ filename ]
# tail tailfile
파일의 마자막 부분출력 : tail
기본적으로 끝의 10행을 출력한다.
this is the line 23
this is the line 24
this is the line 25
this is the line 26
this is the line 27
this is the line 28
this is the line 29
this is the line 30
|
tail 옵션정리
option |
description |
-c number |
지정한 수 만큼의 문자에서 시작해서 출력한다. |
-b number |
지정한 수 만큼의 512바이트 블록 다음부터 시작해서 출력한다. |
-k number |
지정한 수 만큼 1024 바이트 블록 다음부터 시작해서 출력한다. |
-n number |
지정한 수의 행번호에서부터 시작해서 출력한다. |
-r number |
파일의 내용을 거꾸로해서 출력한다. |
-f |
파일의 크기가 변할 때마다 그 끝부분을 출력하다. |
+ number |
파일의 처음부터 number숫자만큼 떨어진 위치에서 출력한다.number가 없으면 10이 기본이다. |
파일 찾기
4.1 find
어떤 파일이 어디 있는지를 알고 싶을 때 find 명령어를 이용하여 찾으면 된다. find 명령어는 파일의 이름, 크기, 속성, 권한 등의 다양한 방법으로 파일을 찾을 수 있다.
find [path] [expression]
일반적으로 파일의 이름으로 찾는 경우가 제일 많이 활용되는데, 이름으로 찾을 경우에는 [-name]옵션을 써주면 된다. /etc 디렉토리에 있는 i 로 시작하는 파일을 찾아보자.
# find /etc -name i*
/etc/default/inetinit
/etc/default/init
/etc/dhcp/inittab
/etc/inet
/etc/inet/ipsecinit.sample
/etc/inet/ipnodes
/etc/inet/inetd.conf
/etc/inetd.conf/etc/init
/etc/init.d
/etc/init.d/inetinit
/etc/init.d/inetsvc
/etc/init.d/initpcihpc
/etc/init.d/initboot
/etc/init.d/init.wbem
/etc/init.d/initpcmcia
/etc/init.d/init.dmi
/etc/init.d/init.snmpdx
/etc/install
/etc/inittab
/etc/ioctl.syscon
/etc/iu.ap
/etc/lp/interfaces
/etc/initpipe
|
/etc및의 하부디렉토리까지 i로 시작되는 파일들은 모두 출력하여 준다. 만일 파일의 위치를 모르고 test라는 파일이름만 알 경우 다음과 같이 해주면 된다.
파일 찾기 뿐 아니라 파일의 리스트로 볼 수 있는데 현재 디렉토리와 하부디렉토리까지의 모든 파일의 리스트를 보려면 다음과 같이 간단히 실행하면 된다.
# find .
./.bashrc
./.bash_profile
./.bash_history
./.emacs
./.profile
./test1
./test1/file1
./test1/file2
./test1/file3
|
find 옵션 정리
option |
descrition |
-name |
파일의 이름을 지정해서 파일을 찾는다. |
-size number |
파일의 크기를 이용해서 검색한다. 파일의 크기는 블록 단위로 표시한다. |
-prune |
하위 디렉토리의 파일들까지 검색하지 않도록한다. |
-user |
사용자 이름이 소유자인 파일을 찾는다. |
-perm permission |
지정한 권한을 가진 파일을 찾는다. |
-group groupname |
그룹에 속한 파일을 찾는다. |
-inum number |
지정한 수와 i-node 수가 일치하는 파일들을 찾는다. |
-link number |
지정한 수의 링크를 가진 파일을 찾는다. |
명령어 찾기
5.1 which which 명령어는 유닉스 시스템의 PATH에 설정되어 있는 경로에서 명령어가 있는지 찾는데 쓰이는 명령어이다. which 명령어가 어디에 있는지 찾으려면 다음과 같이 하면 된다.
파일검색 할 때 자주 쓰이는 ls 명령어가 어디에 위치하는지 찾아보자.
5.2 whereis whereis 명령어는 검색경로에 사용자가 지정해준 명령어가 있는지 찾을 때 쓰이는 명령어이다.whereis 명령어가 어디 있는지 찾으려면 다음과 같이 하면 된다.
# whereis whereis
whereis: /usr/ucb/whereis |
find 명령어가 어디있는지 whereis 명령어로 찾아보자.
# whereis find
find: /usr/bin/find |
파일 다루기
5.1 파일 및 디렉토리 복사하기 : cp
파일 및 디렉토리 복사할 때 cp 명령어가 쓰인다. 하나의 파일을 복사할 수 도 있고, 여러 개를 동시에 복사 할 수 도 있다. 현재 위치에서 test 파일을 test_cp 파일로 복사하여 보자. 아무런 옵션없이 간단하게 파일을 복사하는 방법이다.
test_cp라는 파일이 이미 존재하고 있다면, test_cp파일을 덮어쓴다. 그러나 중요한 파일을 덮어쓰는 실수를 방지하기 위하여 [-i] 옵션이 있다. [-i] 옵션은 파일을 복사하기 전 만약 이미 그 파일이 존재하면 확인을 위해 물어본다.
# cp -i test test_cp cp: overwrite test_cp (yes/no)? y |
디렉토리 및 그 하부 디렉토리까지 통째로 복사할려면 [-r]옵션을 주면 된다. 다음은 test1 디렉토리를 test_dir_cp로 복사하여 보자.
# ls test1 file1 file2 file3 # cp ?r test1 test_dir_cp # cd test_dir_cp # ls test1 # cd test1 # ls file1 file2 file3
|
5.2 파일 이동하기 : mv
기존의 파일을 다른위치에 옮기거나, 파일명을 다시 바꾸고자 할 때 mv 명령어를 쓴다.
mv ?flag [filename 1] [filename 2] or [directory 1] [directory 2]
파일 이름바꾸기 Solaris.txt 파일을 Solaris_8.txt로 이름을 바꿔보자.
# mv Solaris.txt Solaris_8.txt |
디렉토리 이름 바꾸기 test1 디렉토리를 test1_mv 디렉토리로 변경시켜 보자.
5.3 파일 및 디렉토리 지우기: rm
rm ?flag [filename] or [directoryname]
여러 가지 작업을 하면서, 시간이 지날수록 쓸모없는 파일들도 늘어나고 디스크 공간만 쓸데없이 차지하는 경우도 생기게 된다. 이럴땐 필요없는 파일들을 지우고 디렉토리를 정리하여야 된다. rm 명령어는 파일 및 디렉토리를 영구적으로 지워버리는 역할을 한다. 윈도우의 휴지통처럼 다시 복원할 수 있는 기회가 없기 때문에 이 명령어를 쓸때는 신중해야한다. 파일을 지우려면 그 파일에 쓰기 권한이 있어야 지울 수 있다. 파일에는 읽고, 쓰고, 실행할 수 있는 권한이 있는데, 이것에 대해서는 ^^ 파일 소유권 및 권한 에서 더 자세히 다룬다.
현재위치에서 test로 시작되는 파일들은 모두 지우려면 다음과 같이 하면된다.
# ls ?l total 22 drwx------ 2 root root 8192 Oct 17 11:42 lost+found -rw-r--r-- 1 ebee staff 193 Oct 24 11:31 test drwxr-xr-x 2 ebee staff 512 Oct 18 14:19 test1 -rw-r--r-- 1 ebee staff 193 Oct 24 11:42 test_cp # rm test* # ls lost+found test1 |
[*]과 같은 와일드 카드는 조심해서 사용해야한다. 만일 [ rm test *] 이렇게 잘못입력하면 모든 파일이 지워지기 때문이다. 이러한 실수를 피하기 위해서 지울 때 마다 일일이 물어보는
[- i]옵션을 사용하는 것이 안전하다.
# rm -i test* rm: remove test (yes/no)? y rm: test1 is a directory rm: remove test_cp (yes/no)? y |
rm 옵션 정리
option |
descrition |
- i |
User에서 파일을 지우는것에대해 물어본다. |
- f |
아무런 메시지 없이 파일을 지운다. |
- r |
디렉토리내의 파일과 하부디렉토리까지 모두 지운다. |
디렉토리 다루기
6.1 디렉토리 만들기 : mkdir
mkdir ?flag [directoryname]
디렉토리를 한 개 만들수도 있고, 파일처럼 여러 개를 한꺼번에 만들 수 있다. /ebee디렉토리 밑에 solaris_dir 디렉토리를 만들려면 다음과 같이 하면 된다.
# mkdir /ebee/solaris_dir |
만일 /ebee/solaris_dir 가 이미 존재한다면 다음과 같은 메시지가 나온다. "mkdir: Failed to make directory "solaris_dir"; File exists " 새로운 디렉토리를 만들면서 디렉토리에 대한 권한을 지정해 줄 수 있는데 [- m] 옵션과 권한을 써주면 된다.
# mkdir -m 755 /ebee/solaris # ls ?l /ebee drwxr-xr-x 2 ekjung staff 512 Oct 25 13:26 solaris |
6.2 디렉토리 지우기 : rmdir
rmdir ?flag [directoryname]
solaris 디렉토리를 지우려면 다음과 같이 하면된다.
디렉토리를 지울때는 디렉토리내에 하부디렉토리 및 파일이 없어야 지울 수 있다. 만일 하나라도 파일이 있을 경우 다음과 같은 메시지가 나온다
rmdir: directory "solaris": Directory not empty
이럴경우 디렉토리내의 모든 파일을 먼저 지우고 solaris 디렉토리를 지워야한다.
|