사이트 내 전체검색
[ajax] 인터넷 사용자를 위한 유닉스 기본
로빈아빠
https://cmd.kr/server/110 URL이 복사되었습니다.

본문

유닉스는 가장  훌륭한 운영체제이다. PC에서  동작하는 주요 OS로는  DOS, MS-WINDOWS,
OS/2 등을 들 수 있다. DOS의 시대는 이미 지났으며(MS-DOS 6.x 버젼이 DOS의 마지막 버젼),
MS-Windows나 NT는 수많은 소프트웨어군들을 가지고  있고, OS/2는 화려한 개체 지향 인터페
이스와 DOS나 MS-Windows와의  특유의 호환성을 지원하고 있다. 유닉스는 이러한  운영체제
들의  모범이  되어온 강력한  멀티태스킹과  멀티유저기능을  보유하고 있으며,  GUI  환경으로
는 X-Windows를 제공한다. 특히,  리눅스는 유닉스의 공개 버젼으로써  486 PC를 유닉스가 탑
재된 워크스테이션급의 성능과 맞먹는 기능을 제공하는 훌륭한 유닉스 시스템이다.

 근래들어, 많은 소프트웨어들이  사용자 인터페이스에 역점을 두어  개발되고 있다. 일반적으로
유닉스는 사용자 인터페이스가 좋지 않다고 알려져 있으며, 따라서 배우기 어렵다고 한다. 이것에
대한 필자의 생각은 이렇다.  아무리 쉽게 설계된 운영체제나  응용프로그램들도 그  기능을 충분
히 활용하려면 적지  않은  시간과 노력이 들기 마련이다.  DOS의 허약한 체력을 뒷바침해주는
것은  비정상적인 트릭과 하드웨어를 직접 제어하여  그 체력의 한계를 뛰어 넘는 훌륭한 응용프
로그램들이다. 실제로 스스로 부팅하여 동작하는 프로그램도 있었다.  결국, 사용자의 입장에서는
운영체제와 응용프로그램과의 어떠한  통일성이나 일관성을 찾아 보기 어려우며, 서로  다른 유
틸리티나  응용 프로그램을 각각  열심히 배워야 한다.  각각의 응용프로그램들이 고유의  인터페
이스를 가지고 있는  것은  수많은 프로그램을 이용해야하는 사용자에게는  결코 사용하기 편한
인터페이스는 아닐 것이다.
 훌륭한 사용자 인터페이스는 깔끔한 화면이나 쉽게 실행시킬 수 있는 구조를 가지고 있는 것보
다는 사용자가 원하는 최종 결과를 쉽게 얻을 수 있어야 한다.

 응용프로그램들이 방대해지고 있다. 이제는 응용프로그램 하나가 10MB 이상되는 것을 쉽게 찾
아 볼 수 있다. 통합적인 기능을 제공하기 위해서 수많은 루틴과 폰트들이 첨가되고, 사용자 인터
페이스를 위해서 적지  않은 코드들이 사용된다. 아무리 수많은 기능을  제공하는 응용프로그램

라 할지라도 모든 작업을 할 수 없는 것이 컴퓨터상의 작업이다. 따라서, 당연히 여러가지의 응용
프로그램을 사용하며, 그러인해 똑같은 루틴과 폰트 등이 여러개 존재하게 된다. 이것은 프로그래
머나 사용자에게 낭비가  아닐  수 없다. 유닉스는  라이브러리를 서로 공유하며, X상의  폰트들

함께 사용한다. 적은 용량이 아닌 유닉스는 실제로 최적화된 시스템인 것이다.

 OS/2나 NT는 모두 훌륭한  운영체제들이다. 하지만, 실제로 이들 운영체제를 사용하기  위해

는 최소한 각각  8MB와 12MB의 RAM용량을 가지고 있어야  하며, 이들 전용의 응용프로그램도
많지 않다. 대부분  DOS와의 호환성으로 그 응용프로그램들을 실행할 수  있으나, 큰 패키지같은
경우는 운영체제에 다소 무리가 따르며, 실행이 불가능한 것도 있다.

 리눅스는 전세계의 해커들에 의해 만들어진  80386 이상의 PC에서 운영할 수 있는  공개  유닉
스이며, FSF(Free Software Foundation)에서 GNU(Gnu's Not Unix) Project의 일환으로 계획 개
발된 것이다. FSF는 "소프트웨어는 소스를 포함하여  공개적으로  배포되어야 소프트웨어 자체를
비롯하여 사용자나 개발자에게 진정한  발전이  이루어진다"라는 주의를 펼치고자 설립된 비영리
재단이며, GNU는 그것을 실천으로 옮기고자하는 프로젝트이다.

 해커의  시대가 하드웨어에서  소프트웨어로 변화되었다.  이 시대  마지막 해커라고  불리우
는 Richard Stallman이  설립한 FSF는 진정한 해커주의를  실현하고 있는  재단이다.  해커라는
말이 사회적으로 나쁜 용어로 쓰이고  있는게 현실이지만,  이들은 반드시 범죄자와는 구분되어야
한다.
해커주의는 근본적으로 정보는 모든이에게  공유되어야 한다는 것이 주된 바탕이다. 따라서, 프로
텍트를 걸거나 소프트웨어를  판매하는 행위로 정보의 흐름을 막는 것을  거부한다. 소프트웨어
에 관한 지적 소유권이나 특허권에  위배된다고 볼 수 있으나, 이들 법률적 장치는  궁극적으로
소프트웨어를 발전시키는  것이 목적이지  쇠퇴시키는  것이 아니다. Richard  Stallman이 생각해
낸 것은 상업용이 되어버린 수많은 프로그램을  지적 소유권 침해없이 공개용 프로그램으로 만드
는 것이었다. 이것이 바로, 법에 위배되지 않으면서 소프트웨어를 마음대로 사용할  수 있게 하는
GNU 프로그램들이다. 결론적으로, 리눅스라는  훌륭한 공개 유닉스와 수많은 GNU 프로그램들이
개발되었다.

 현실적으로, 절대적인 기술  우위로 미국 주도인 소프트웨어  산업을  우리나라같은 후발주자들
이 따라잡기 위한 방법중의 하나가  GNU라고 생각한다. `한글화'라는  울타리에 언제까지나 안주
할 수는 없으며,  유니코드(UNICODE)는 그 울타리마저 허물어  버릴 것이다. 소수의 개발자팀에
의해 힘들게 쫓기 보다는 다수의 사용자와 개발자들 모두 서로 나누고 발전시키는 것이 유니코드
를 역이용할 수 있는 방법이 될 것이다.





인터넷 사용을 위한 기본적인 유닉스의 명령과 체계에 대한 글이다.


  ■ 로그인/로그아웃(login/logout)
  유닉스 시스템을 사용할 때 최초로 접속하는 것을 '로그인(login)'이라
하고 작업을 종료하고 빠져나오는 것을 '로그아웃(logout)'이라고 한다.
모뎀을 통해 접속하면 'login:'이 나타나면서 사용자번호(id)를 물어본다.
  이때 자신의 계정을 입력하면 시스템은 다시 그 id에 대한 암호를
'Password:'라고 묻는다. 암호를 입력하면 비로소 해당 시스템에 로그인이
된 것이다. gglim이라는 id를 가진 사용자가 로그인하는 예는 다음과 같다.
암호는 보안상 화면에 나타나지 않는다.

  login: gglim
  Password: ________

  유닉스 시스템을 끝낼 때는 'logout' 또는 'exit' 명령어 중 하나를
입력한다.
  한가지 주의할 것은 유닉스 시스템은 도스와는 달리 대문자와 소문자를
구분한다는 점이다. 대부분의 유닉스 명령어와 사용자 id는 소문자이므로
입력할 때 대문자로 입력하지 않도록 주의해야 한다.


  ■ 유닉스 셸

  유닉스 셸은 사용자와 운영체제 커널 사이에 위치하는 명령어
해석기다. 셸은 사용자의 입력을 받아 이를 해석한 후 상응하는 동작을
취해주는, 사용자와 시스템 사이의 인터페이스며 일반 프로그래밍 언어의
기능도 포함되어 있다. 유닉스 시스템에서 기본적인 셸은 'Bourn
Shell(/bin/sh)'과 'C Shell(/bin/csh)'이다. 일반적으로 로그인하면 csh이
로그인될 때 기본으로 작동되어 csh 상태에서 모든 명령을 수행하는
것이다. csh의 기본 프롬프트는 "%" 이다.


  ■ 명령어 문법 구조

  일반적인 유닉스의 명령어는

        command [-옵션] [파라메터]

  와 같은 형식을 취한다. 여기서 명령어란 셸 내부의 내장(built-in)
명령어이거나 실행가능한 파일로 따로 존재하는 외장 명령어다. '-옵션'은
명령어의 기본적인 동작을 바꾸기 위해 사용된다. 도스에서는 '/'를
사용하는데 여기서는 '-'를 사용한다는 점이 다르다. '파라메터'는 주로
파일명을 나타낼 때 사용하는데 명령어마다 파일명을 요구하는 것과
하지않는 것이 있다.
  그러면 도스의 dir에 해당하는, 파일 리스트 보기 'ls' 명령어을 통해
명령어에 대한 개념을 익혀보자. 다음은 "abc"란 파일의 정보를 자세히
보고자 한 경우다.

        % ls  -l  abc
        -+ -+- -+- -+-
        |  |  |  +-- 파라메터(파일명)
        |  |  +----- 옵션(l=long;자세한 정보)
        |  +-------- 명령어
        +----------- 프롬프트

  박스처리
  -------------
  한 번으로 여러 번을...
  - 메타문자 -

  유닉스 셸에서 메타문자들를 이용하면 한 번의 작업으로 다양한 파일을
지정할 수 있다. 도스의 와일드카드에 해당한다. 기본적인 메타문자와 그
의미를 아래에 정리했다.

  ----------------------
    *    0개 또는 그 이상의 모든 문자와 대응
    ?    정확하게 하나의 문자와 대응
    []    리스트 또는 명시한 범위 내의 모든 문자와 대응
    {}    명시한 리스트 항목으로 대치
    ~    사용자의 홈디렉토리
  -----------------------


  ■ 디렉토리 구조

  유닉스는 트리(Tree) 구조의 디렉토리에 파일들이 배치되어 있다.
도스의 디렉토리도 알고보면 유닉스에서 따온 개념이다. 디렉토리
경로(path)는 도스서는 '\\'로 구별하지만 유닉스서는 반대로 '/'를 사용한다.
도스의 루트디렉토리인 "C:\\" 는 유닉스에서는 "/"다.
  하지만 유닉스는 루트디렉토리와 각 사용자들의 홈디렉토리를
구별한다. 따라서 일반 사용자가 접속하면 루트디렉토리가 아니라 자신의
홈디렉토리로부터 시작한다. 그 이유는 유닉스가 기본적으로 여러 사람이
함께 사용하는 시스템이기 때문이다. 홈디렉토리서는 자신의 파일이나 서브
디렉토리를 만들고 작업을 할 수 있다. 예를 들어 soback.hana.nm.kr
호스트의 gglim이라는 계정의 홈디렉토리는 '/user2/staff/ggilm'인데 자신의
홈디렉토리를 $HOME이나 ~로 표현한다. 자신의 홈디렉토리로 바로
이동하려면 'cd(Changer Directory)' 명령을 이용해 다음 3가지 방법으로 쓸
수 있다.

      % cd  /user2/staff/gglim
      % cd  $HOME
      % cd  ~


  파일관련 유닉스명령어

  이번에는 유닉스 시스템에서 파일 조작과 관련된 주요 명령어들을 살펴
보자. 도스에서는 파일이름은 ????????.???로 길이와 형식이 지정되어
있으나 유닉스에서는 그러한 제약이 없다. 그러므로 파일이나 디렉토리
이름은 자신이 원하는 대로 만들 수 있다. 예를 들어
"i_am.LimGyooGun-입니다" 등의 파일이름이나 디렉토리 이름이 가능한
것이다. 하지만 인터네트서도 표준화된 확장자가 몇몇 있다. <표 1>에 주요
확장자를 정리해 두었다.

  -----------------------------------------------------------------
          확장자                    확장자 의미
  --------------------- -------------------------------------------
        love.doc              도큐먼트(텍스트) 문서
        love.tar              tar라는 형식으로 압축되어 있는 파일.
                                ('tar -xvfp'로 푼다)
        love.Z                compress로 압축되어 있는 파일
                                (uncompress로 푼다)
        love.txt              텍스트 파일
        love.ks              KS완성형 코드로 된 한글 파일
        love.gif              gif 포맷 그래픽 파일
        love.ps              포스트스크립트형식의 그림파일
        love.au              오디오 파일.
                              ('cat love.au > /dev/audio'로 듣는다)
    ---------------------------------------------------------------
    표 1. 유닉스 파일의 확장자와 그 의미


  ■ ls 명령어

  ls는 파일의 목록을 보는 명령어로 가장 많이 쓰인다. 도스의 d  에
해당하는 ls 명령어에는 40 여개가 넘는 옵션이 있다. 그 중 가장 많이 쓰는
중요한 옵션은 다음과 같다, 옵션은 '-lt' 식으로 조합해 사용할 수도 있다.

  ------------------------------------------------------------------
    -F  파일의 유형을 나타내는 기호를 파일명 끝에 표시(디렉토리의 경
        우 "/", 실행파일의 경우 "*", 심볼릭 링크파일의 경우 "@"를)
    -l  파일에 관한 더 상세한 정보를 출력
    -a  dot 파일(.cshrc 등)을 포함한 모든 파일을 리스트
    -t  파일이 생성된 시간별로 리스트
  ------------------------------------------------------------------

  ■ cat 명령어

  cat은 특정파일을 읽어서 화면에 출력하는 명령으로 도스의 TYPE
명령과 같지만 그외에도 다양한 용도가 있다.

        ◆ 파일의 화면 출력
            % cat 파일명

        ◆ 파일의 생성
            % cat > 새파일명
            ...
            파일의 내용을 입력
            ...
            ^D (입력종료:Ctrl+D키)
            %

        ◆ 복수개의 파일을 하나의 파일로 결합
            % cat 파일1 파일2 파일3 > 새파일명

        ◆ 한 파일에 다른 파일을 붙이기
            % cat 파일1 >> 파일2


  ■ mv 명령어

    mv는 파일이나 디렉토리의 위치를 옮기거나 이름을 바꾸는데
사용된다. 디렉토리를 mv시키면 그 디렉토리 밑의 서브디렉토리들과 파일
모두가 옮겨진다.

        ◆ 이름변경
            % mv 원래파일명 새파일명

        ◆ 파일의 위치 변경
            % mv 파일명 디렉토리명

        ◆ 디렉토리 위치 변경
            % mv 원래디렉토리명 새디렉토리명


  ■ cp 명령어

  파일을 복사하는 명령어로 도스의 copy와 같은 기능을 한다. '-r'
옵션을 붙이면 그 밑의 모든 서브 디렉토리의 내용까지 복사한다.


┌─────────────────────────────────┐
│% cp file.org file.cp      ; file.org를 파일 file.cp로 복사      │
│% cp file.org ../doc        ; doc이 디렉토리일 경우 ../doc 디렉토 │
│                              리에 file.org 란 이름으로 복사된다. │
│% cp file.org ../doc/file.cp ; ../doc 디렉토리에 file.cp 로 복사  │
│% cp -r /usrme/work        ; /usr 밑의 모든 파일과 디렉토리 구조 │
│                              가 /home/work 으로 copy 된다.      │
└─────────────────────────────────┘

  ■ rm 명령어

  rm은 파일을 삭제하는 명령어로 도스의 DEL에 해당한다.


┌─────────────────────────────────┐
│  % rm a.dat        ; a.dat 파일 삭제                            │
│  % rm -r ../doc    ; ../doc 디렉토리 밑을 모두 삭제 (recursive) │
│  % rm -i a.*        ; "a"로 시작하는 모든 파일을 일일이 삭제할  │
│                      것인지 확인하면서 삭제 (interactive)      │
└─────────────────────────────────┘

  ■ more/head/tail 명령어

  more 명령은 한 화면이 넘는 파일을 한 화면 단위로 보여준다.
스페이스바를 누르면 다음 화면으로 넘어가고 "q"를 누르면 출력을
중간에서 종료한다. 이 외에도 많은 more 의 내부 명령어가 있으며 이들에
관한 간략한 설명은 "h" 를 누르면 얻을 수 있다.
  head(tail) 명령은 파일 앞부분(뒷부분)을 출력해준다. "-" 다음에
파일의 앞(끝)에서부터 출력을 원하는만큼 행 수를 기입할 수 있다. 이
명령은 파일 내용을 간단히 살펴볼 필요가 있을때 사용한다.

  % head letter.doc      ; letter.doc의 앞의 몇줄을 출력
  % tail -100 letter.doc  ; letter.doc 파일의 마지막 100 행을 출력


  ■ chmod 명령어

  유닉스에서는 각 파일과 디렉토리마다 이용권한이 있는 사용자와 없는
사용자를 구분한다. 일종의 보안 유지 차원과 자원의 활용을 위해 구분하는
것이다. chmod 명령어는 사용자에 대한 파일의 접근을 제한하는데
사용된다. 유닉스에서 각 파일은 읽기(r, read), 쓰기(w, write), 실행(x,
executiuon)에 관한 권한을 소유자(u, user), 그룹멤버(g, group),
일반사용자(o, other)로 나누어 할당한다. <표 2>는 "love.doc" 파일에 대한
"ls -l" 명령을 수행해 그 파일의 상세정보를 보여 주고 있다.

┌──────────────────────────────┐
│  -rwxrwxrwx  gglim  staff  9633  Jan 12 10:15 love.doc    │
│  | || || |  -----  -----  ----  ------------ --------    │
│  +-++-++-+  소유자 그 룹  크기  마지막 갱신  파일명      │
│    u  g  o    u      g                                    │
└──────────────────────────────┘
  표 2. 유닉스 시스템에서는 파일과 디렉토리를 소유자(u), 그룹멤버(g),
일반사용자(o)로 나누어 이용권한을 부여한다.


  <표 2>에서 제일 처음의 "-"는 일반 파일을 의미하는 것이며
디렉토리일 경우에는 "d"로 표시된다.
  chmod 명령의 사용법은 다음과 같다.

    +--------------------------------------------------+
    |    chmod [augo][+-=][rwx] 파일명                |
    |            -+--  -+-  -+-                        |
    |        +----+    |    ---------+              |
    |        | +-a all  |  +-+ add    | +-r read      |
    |        +-+ u user +--+ - remove  +-+ w write    |
    |          | g group  +-= set      +-x excute    |
    |          +-o other                              |
    +--------------------------------------------------+

  실제 사용 예를 보이면 다음과 같다.

      % chmod u+x love.doc ; love.doc 파일의 소유자에게 실행할
                            수 있는 권한을 부여
      % chmod go-rwx *    ; 모든 파일에 대해 그룹/일반 사용자
                            에게 모든 권한을 없앰


  ■ grep 명령어

  grep은 파일 내에서 특정 항목을 찾는데 이용되는 명령어으로 'grep
찾을내용 파일명'의 형식으로 사용된다. grep의 첫번째 파라메터는 찾고자
하는 내용에 대한 표현식이고 나머지 파라메터는 찾을 파일명들이다. 사용
예는 다음과 같다.
  % grep xterm *.doc ; '.doc' 으로 끝나는 모든 파일에서
                        'xterm'을 포함하는 모든 행을 출력

댓글목록

등록된 댓글이 없습니다.

1,139 (17/23P)

Search

Copyright © Cmd 명령어 3.17.79.188