다음
이전
차례
Linux has a file system - meaning by that "the structure of directories and
리눅스는 화일 시스템이라는 것을 가지고 있다. 이는 도스에서와 유사하게 "디렉토
리와 화일의 구조"를 의미한다. 화일은 특수한 규칙을 따르는 화일명을 가지고 있고
디렉토리 안에 저장되며 어떤 것은 실행화일이며 대부분은 명령행 스위치(swtich,
옵션)을 가지고 있다. 또한 여러분은 와일드 카드문자, 리다이렉션, 파이프 등을
사용할 수 있다. 큰 차이는 없다.
- 첫번째 차이점 : 도스에서는 화일명이 소위 8.3 형식을 따른다. 예를 들어
NOTENOUG.TXT. 리눅스에서는 이보다 낫다. 리눅스를 인스톨할 때 ext2 또는 umsdos
같은 화일시스템( 여러분은 지금 정확한 의미를 알지 못한다 )을 사용한다면,
하나 이상의 도트(.)를 사용하면서 더 긴 이름을 적을 수 있다.
예를 들어 This_is.a.VERY_long.filename
본인이 대소문자를 같이 사용했다는 사실에 주목하기 바란다. 사실...
- 두번째 차이점 : 대문자와 소문자가 구별된다.
따라서 FILENAME.tar.gz 와 filename.tar.gz 은 2 개의 다른 화일이다. 명령도 마
찬가지이다. ls ( 도스에서의 DIR 과 같다 ) 명령을 치면 현재 디렉토리에 대한
화일 목록을 얻지만 LS 라고 치면 에러 메세지가 나올 것이다.
- 세번째 차이점 : 만약 피리어드 문자(.)로 화일명을 사용하면 그 화일은 숨겨져
있다고 간주된다. 예: .I.am.a.hidden.file 은 ls 명령으로 나타나지 않는다.
- 네번째 차이점 : 프로그램에 대하여 .COM, .EXE 그리고 배치화일에 대하여 .BAT
등의 강제적인 확장 규정은 없다. 실행화일은 ls -F 명령을 내렸을 때 화일명 뒤에
스타 문자(*)가 표시된다.
예:
$ ls -F
letter_to_Joe Cindy.jpg cjpg* I_am_a_dir/ my_1st_script*
cjpg* 와 my_1st_script* 은 실행가능한 "프로그램"이다. 도스에서는 .BAK가 백업
화일이지만 리눅스에서는 보통 틸드문자( )로 끝난다.
- 다섯번째 차이점 : 도스 프로그램의 스위치는 /스위치이만 리눅스에서는 -스위치
이다. 예를 들어 dir /s 은 ls -R 과 같다. PKZIP 또는 ARJ 과 같은 많은 도스 프
로그램은 유닉스 스타일의 스위치를 사용한다.
왼쪽에는 도스 명령어가 오른쪽에는 해당 리눅스 명령이 있다.
COPY: cp
DEL: rm
REN: mv
TYPE: more, less, cat
리다이렉션과 연결 연산자: < > >> |
와일드카드: * ?
nul: /dev/null
prn, lst: /dev/lp0; lpr
- 예 -
DOS Linux
C:\GUIDO>copy joe.txt joe.doc $ cp joe.txt joe.doc
C:\GUIDO>copy *.* total $ cat * > total
C:\GUIDO>copy fractals.doc prn $ cat fractals.doc | lpr
C:\GUIDO>del temp $ rm temp
C:\GUIDO>del *.bak $ rm *~
C:\GUIDO>ren paper.txt paper.asc $ mv paper.txt paper.asc
C:\GUIDO>type letter.txt $ more letter.txt
C:\GUIDO>type letter.txt $ less letter.txt
C:\GUIDO>type letter.txt > nul $ cat letter.txt >/dev/null
n/a $ more *.txt *.asc
n/a $ cat section*.txt
주목:
- * 는 리눅스에서 더욱 똑똑하게 행동한다:
- * 은 숨겨진 화일을 제외한 모든 화일과 매치된다. .* 는 모든 숨겨진 화일과
매치된다.
*.* 은 . 과 그리고 뒤에 다른 문자들이 있는 경우와 매치된다.
- p*r 은 peter, piper와 매치된다. *c* 은 picked, peck 에 매치된다.
- more 를 사용할 때 <스페이스>를 누르면 앞으로 전진하고 q 또는 CTRL-C 는
종료할 때 쓴다. less는 더욱 직관적이고 화살표키를 사용한다.
- UNDELETE 기능이란 없다. 따라서 지우기 전에 두 번 생각해야 한다.
- 도스의 < > >> 에 덧붙여 리눅스는 에러메세지(stderr)를 리다이렉트하기 위한
2> 이라는 것을 가지고 있다.
- 리눅스에는 또 다른 와일드 카드 문자가 있는데 ] 이다. 사용법은
- [abc]* 는 a,b,c로 시작하는 화일과 매치된다.
- [I-N]* 은 I,J,K,L,M,N으로 시작하는 문자와 매치된다.
- 도스와 같은 RENAME은 없다. 따라서 ren *.xxx *.yyy 은 제대로 되지 않는다.
프로그램을 실행시키기 위해서는 도스에서처럼 이름을 입력하면 된다. 만약 프로그
램이 PATH(섹션 4)에 포함된 디렉토리(섹션 2)에 저장되어 있다면 실행될 것이다.
예외: 도스와는 달리 리눅스에서는 현재 디렉토리가 PATH에 포함되어 있지 않는
한 현재 디렉토리에 있는 프로그램을 실행되지 않는다.
여러분의 프로그램이 만약 <프로그램>이라면 ./<프로그램> 이런 식으로 실행해야
현재 디렉토리에 있는 것이 실행된다.
전형적인 명령어 라인은 다음과 같다.
$ command -s1 -s2 ... -sn par1 par2 ... parn <input >output
where -s1, ..., -sn are the program switches, par1, ..., parn are the
여기서 -s1, ..., -sn 은 프로그램 스위치이고 par1, ..., parn 은 프로그램에 대한
전달인수이다. 몇 개의 명령을 한 줄에 써줄 수도 있다.
$ command1 ; command2 ; ... ; commandn
프로그램을 수행시키는 방법으로 충분하지만 한 발짝 더 나아가는 것은 쉽다.
리눅스를 사용하는 중요한 이유 중 하나는 멀티태스킹 운영체제라는 사실이다.
몇 개의 프로그램을( 이제부터는 프로세스라고 부르겠다 ) 동시에 수행시킬 수 있
다는 것이다. 프로세스를 백그라운드에서 돌리고 다른 작업을 계속 해나갈 수 있다.
게다가 리눅스는 여러 개의 세션을 가지고 있다. 마치 동시에 여러 개의 컴퓨터를
가지고 있는 것과 같다.
- 세션 1 부터 8 까지 전환을 하려면
$ <ALT-F1> ... <ALT-F8>.
- 현재의 세션을 닫지 않고 다른 세션을 시작하려면
$ su - <로그인명>
예:
$ su - root
여러분이 디스크를 마운트(섹션 3)할 때 매우 유용하다. 오로지 루트만이 마운트를
할 수 있기 때문이다.
- 세션을 마치기 위해서는:
$ exit
- 포그라운드에서 프로세스를 시작하려면:
$ progname -switches] [parameters] [<input] [>output]
- 백그라운드에 프로세스를 시작하려면 끝에 앰퍼센드(&) 문자를 붙인다.
$ progname [-switches] [parameters] [<input] [>output] &
- 얼마나 많은 프로세스가 있는지 알아보려면:
$ ps
현재 실행 중인 프로세스의 목록을 보여준다. 각각은 PID 라는 숫자를 가지고 구분
된다.
- 프로세스를 죽이기:
$ kill <PID>
프로세스를 어떻게 끝내야 할 지 모를 때 프로세스를 죽일 필요가 있다 ;-)
때때로 프로세스는 다음과 같이 해야만 죽을 때가 있다.
$ kill -15 <PID>
$ kill -9 <PID>
이에 덧붙여 셸( COMMAND.COM 에 해당; 많은 사람들이 bash 를 사용하고 있다 )
은 여러분이 프로세스를 멈추게 하거나 잠시 중지시키는 일, 프로세스를 백그라운
드로 보내는 일, 그리고 다시 백그라운드에서 포그라운드로 옮기는 일을 가능케
해준다. 이러한 맥락에서 프로세스는 "작업(jobs)"이라고 불린다.
- 얼마나 많은 작업이 있는지 보려면:
$ jobs
여기서 작업은 셸이 PID 가 아니라 셸이 프로세스에 부여한 작업 번호로 구분한다.
- 포그라운드의 프로세스 중지하기:
$ <CTRL-C>
( 항상 그렇게 되는 것은 아니다 )
- 포그라운드에 실행 중인 프로세스 일시 정지시키기:
$ <CTRL-Z>
(마찬가지이다)
- 일시정지된 프로세스를 백그라운드로 보내기:
$ bg <job>
- 프로세스를 포그라운드로 되돌리기:
$ fg <job>
- 다시 프로세스를 죽이기
$ kill %<job>
where <job> may be 1, 2, 3, ... Using these commands you can format a
여기서 <job>은 1, 2, 3 이런 숫자이다. 이러한 명령어를 사용하여 여러분은 디스
켓을 포맷하고 화일을 zip 압축하고 프로그램을 컴파일하고 동시에 다른 화일의
압축을 풀어낼 수 잇다. 그리고 또 여러분의 명령을 기다리는 프롬프트가 나온다.
도스에서 해보라! 그리고 얼마나 퍼포먼스가 차이나는지 윈도우즈에서도 해보기
바란다.
다음
이전
차례