Home | All | RecentChanges | SearchPages

StartUnix 

Category: Computer, Unix, Linux

옛날 나우누리 리눅스 동호회에 올렸던 내용, 인터넷을 검색해보니 이런것도 남아 있었다.  

  1. 옛날 나우누리 리눅스 동호회에 올렸던 내용, 인터넷을 검색해보니 이런것도 남아 있었다.
  2. 시스템의 출입
    1. 시스템의 접속
    2. 암호의 설정 및 변경
    3. 계정의 변경 및 종료
  3. 명령어의 사용법
    1. 명령어의 형식
    2. 입출력의 공유및 변경
    3. 도움말
  4. 화일
    1. 화일의 종류
    2. 화일 시스템의 구조와 위치
    3. 화일을 찾는 명령 (ls, find)
      1. ls
      2. find
    4. 디렉토리 옮기기
  5. 화일 및 디렉토리 조작
    1. 화일및 디렉토리의 생성,제거 내용 보기
    2. 화일의 복사 및 이동
안녕하세요.. 김지인입니다. 저는 리눅스를 사용해 본지 얼마 되지도 않은 신참인데.. 감히 이렇게 강좌를 한다고 하니...떨리는군요. 제가 처음 리눅스에 발을 딪기 시작할 무렵 강좌란의 도움을 많이 받았습니다. 그런데, 강좌란이나, 질문란에도 올라오지 않는 아주 기초적인 사항들을 모를 때의 그 난처함이란...흑...

그리고 이번에 저희과 컴맹들을 위해서 유닉스의 아주, 아주 기초가 되는 명령어들을 다루게 되었는데.. 아깝기도 하고 저처럼, 아주 처음 리눅스를 대했을 때의 난감함을 격으시는 분이 한분이라도 계시다면 도움이 될까해서 이렇게 감히 강좌라고 써봅니다.

이강좌를 보시게 될 분들은 다음 중의 한 경우가 될 것입니다.

  1. 난 유닉스라고는 구경도 못해 보았다.
  2. 사실 도스도 잘못쓰는데, 리눅스가 좋아보여서 시스템은 설치했는데,
      darkstar~/# 라고 나오면, 기를 못펴겠다.
    
  3. 기본적인 에디터는 커녕, 시스템이 어떻게 생겼는지도 모르겠다.
  4. 아니 왜 이렇게 모르겠는 디렉토리가 이리도 많으냐?
  5. 아... 리눅스를 내 하드에서 지워야겠다.

특히 5번에 해당하시는 분들, 이좋은 운영체계를 포기하시다니요. 전 얼마전까지만해도 도스와 리눅스를 같이 쓰고 있었는데, 모든 환경을 구축하고서 도스를 지울 생각입니다. 통신, 워드프로세싱, 프로그래밍, 요즘에 한참나오는 도스용 오락만을 사용하시는 분이 아니라면야.. 리눅스를 지울 수야 없지요. 한번 저의 강좌를 들으시고, 밑에 있는 강좌들을 음미해보세요.. 리눅스의 참맛을 느끼시면, 절대로 지운다는 생각은 못하실 겁니다.

다시한번 말씀을 드리지만, 이 강좌는 완전한 유닉스 초보자를 위한 것입니다. 잘못된 것이 있느면 언제든지 메일을 주세요.


이제 강좌를 해볼까요? 처음에 써놓은 글이 경어를 생략했기 때문에 이해해 주시고 보아주세요.

Part I 유닉스의 기본 명령(프로그램)

시스템의 출입  

개인용 컴퓨터의 DOS와는 달리 유닉스 시스템은 다수의 사용자가 사용하도록 설계된 멀티 태스킹 시스템이다. 따라서 유닉스 시스템을 사용하려면 시스템의 출입 권한을 부여받아야 하며, 이를 계정(account)을 부여받는다고 말한다. 계정을 부여받아서 시스템의 출입허가를 얻으면, 시스템 사용자로서 자격을 가진다. 각사용자는 기본적으로 단지 자신이 부여받은 계정을 통해서만 시스템에 접속이 가능하며 다른사람의 불법적인 사용을 막기위해 암호를 설정해 두어야한다. 또한 시스템 사용을 끝내고 싶으면, 이를 시스템에 알려야한다. 이러한 특징은 유닉스가 다중사용자 시스템이기 때문에 발생하는 것이다.

시스템의 접속  

계정을 부여받으면, 사용자는 해당 시스템에 단말기를 통해서 접속을 하게 된다. 여기서 단말기는 사용자들이 해당 시스템에 접근할 수 있게 해 주는 입출력 장치를 말하는데, 단말기를 통해서 입력을 전송하거나 출력을 볼 수 있다. (리눅스 시스템을 pc에 설치하면, 키보드와 모니터가 단말기가 되는 것이다. 리눅스는 가상 단말기를 지원하는데, alt-F1 , alt-F2,... 순으로 누르면 또 다시 계정과 암호를 물어오는 화면을 보게 될것이다. 각각의 단말기 모드는 모두 다른 사용자로써의 사용을 가능하게 해주며, 같은 계정으로 여러번 접속이 가능하다.)접속과 동시에 보통은

login:_

과 같은 화면을 볼 것이다. 여기서 자신의 계정을 써넣고(리눅스를 처음 부팅할때는 root 라고 치면 된다. 하지만 곧 암호를 설정하고, 다른 계정을 만들어서 사용하는 것이 안전하다. 도스나 윈도우즈와는 다르게 리눅스에서 한번 지운 화일은 다시 복구되지 않는다.)

password:_

를 물어보면, 자신이 설정한 암호를 써넣으면 접속이 된다. 당연히 입력을 마치면 CR(Carriage Return)을 쳐야 한다. 그러면, 단말기는 계정에 맞는 홈 디렉토리에서 부터 작업을 진행한다.

암호의 설정 및 변경  

암호는 자신의 계정을 타인이 비정상적으로 사용하는 것을 막기 위한 보호 수단중에 하나이다. 유닉스 시스템이 보안에 중점을 두고 제작된 것이 아니기 때문에 비교적 암호체계가 약한 것이 사실이지만, 암호를 제대로 설정하면 많은 부분 시스템을 보호할 수 있다. 암호를 바꾸는 명령어(실은 하나의 프로그램)는

passwd

이다. 그러면, 일반적으로 알고 있듯이 지금의 암호를 묻고, 바꾸고 싶은 암호를 물어보게 된다. 또 한번의 확인 작업이 끝나면, 자신의 계정 암호가 바뀌게된다. 시스템에 따라서는 평범한 암호에 대해서는 경고를 주는 경우도 있다. 되도록이면 암호는 자신은 기억하기 쉽고, 타인은 예측하기 어려운 것으로 택하는 것이 좋다. 암호에 특수기호를 섞는 것도 좋은 방법이다.

계정의 변경 및 종료  

현재 접속하고 있는 계정이외에 다른 계정을 갖고 있거나 알고 있는 경우에 그 계정을 사용하는 방법에는 여러가지가 있다. 만일 알고 있는 계정이 자신이 사용하고 있는 시스템과 동일한 시스템에 있다면 su 명령어를 사용할 수 있다. 즉,

%su 자신이 알고 있는 계정

(여기서 %은 프롬프트로 도스의 C:> 와 같은 것이라고 생각하면 된다.)라고 명령하면 암호를 물어보게 되는데, 암호를 입력하고 나면 새로운 계정의 사용자로써 시스템을 사용하게 되는 것이다. (리눅스에서 계정을 만들어서 시험해보면 알 수가 있다. 참고로 새로운 계정을 만드는 명령어는 adduser 이다.) 보통 su 만을 입력하게 되면, 시스템관리자의 계정을 사용하겠다는 뜻이 된다.

변경하고자하는 계정 이름이 지금 사용하고 있는 시스템과 다른 시스템에 있을 때 에는 telnet 이나, rlogin, rsh 등을 사용할 수 있다. 이때는 앞에서와 같이 계정 이름을 표시해 주는 것은 물론이고, 해당 시스템의 주소도 표기해 주어야 한다. 또, 연결하고자하는 시스템은 현재의 시스템과 연결되어 있어야 함은 물론이다. 이에 관한 것은 네트웍과 인터넷 부분에서 자세히 보도록하자.

예를들어서 지금 사용하고 있는 시스템의 주소는 tiger.korea.ac.kr (여기서 korea.ac.kr 은 도메인 네임으로 인터넷부분에서 자세히 다루어보자.)이고, 자신이 접속하기를 원하는 시스템 주소는 kuccsx라고 가정하면,

%rlogin kuccsx -l 계정

라고 명령하면, 암호를 물어보고 해당 시스템을 해당 계정으로 사용할 수 있게 되는 것이다. 같은 방법으로는

%rsh kuccsx -l 계정

이라고 해도 된다. 암호가 틀리면, 해당 시스템의 접속과정과 같이

login:_

화면이 나타나게 된다. 또 telnet 명령어는 시스템 주소와 계정을 한꺼번에 사용할 수 없는 명령어이다. 즉,

%telnet kuccsx

라고 명령하면, 계정과 암호를 묻는 화면이 나타나게 되는 것이다. 근본적으로 rlogin, rsh 와 telnet 의 차이점은 r~ (Remote LOGIN, Remote SHell)은 썬(SUN) 워크스테이션을 사용할 경우에 제공되는 명령어이며, telnet 과는 근본적으로 같지만, 사용자의 홈디렉토리안에 ~/.rhost 화일을 조작해서 암호없이 접속이 가능하다는 잇점이 있다.("~/"는 자신의 홈 디렉토리를 표현하는 것이다. 보통"/"는 시스템의 메인루트 디렉토리를 표시한다. 또 유닉스는 도스가 ""로 디렉토리를 구분하는 것과는 다르게 "/"로 디렉토리를 구분한다.) 보통 ~/.rhost 의 내용을 살펴보면 다음과 같이 되어 있다.

solid1.korea.ac.kr jiinny
nowcom.co.kr       jiinny
tiger.korea.ac.kr  grjiinny

이는 필자의 경우에 해당되며, jiinny 나 grjiinny는 시스템 계정임을 쉽게 알 수 있을 것이다.

유닉스 시스템에서 사용종료를 알리는 명령어는 exit 혹은 logout 인데 자신의 계정사용을 끝냈다고 시스템에 알리는 명령이다. (리눅스에서는 보통 한 사용자가 사용할 경우가 많은데, 이 때 전원까지 끄고 싶으면, 일반 도스나 윈도우즈와는 다르게 해야한다. 일반계정으로 사용하다가 로그아웃을 하면, 다시 root 계정으로 시스템에 접속해서 shutdown을 시킨후 전원을 내려야한다. 보통은

#halt

같은 명령을 내릴 수 있는데, 이 것보다는

#shutdown -h now

라는 명령어가 더 안전하다. 또 시스템을 재부팅하고 싶으면,

#shutdown -r now 

라는 명령을 쓸 수도 있다. "now" 대신에 시간을, "-r"이나"-h" 대신에 다른 명령들을 사용할 수 있는데, 자세한 내용은 "man shutdown"이라고 명령하고서 읽어보기 바란다.(위에서 "#" 표시는 시스템관리자의 경우에 붙는 프롬프트이다. 이 프롬프트에 관한 설명은 나중에 쉘을 설명할 때 자세히 다루기로 하자. 또, 자신이 어떤 명령어에 대해서 자세히 알고 싶으면, man 명령어를 사용하도록 하자. man 명령어는 manual의 약자로 프로그램의 사용법을 알려주는 역할을 한다.

%man 프로그램 명령어

하면, 사용법을 자세히 나열해서 설명한다. 영어공부도 하고 컴퓨터도 공부하고:) )

다음에는 명령어의 일반적인 사항과 man 명령어를 다루는 방법 그리고, 유닉스의 꽃이랄 수 있는 입출력의 공유, 변경을 공부하도록 하겠다.

명령어의 사용법  

일반적인 명령어 사용법은 도스의 그것과 같다. 그이유는 도스자체가 처음에 개발될때 유닉스를 많이 본떴기 때문이다. 예를 들면, 화일과 디렉토리의 개념 주변장치를 화일로 간주하는 것등이 그렇다. 일반적으로 유닉스 명령어(전에도 얘기했지만, 명령어라기 보다는 유틸리티 프로그램이다.)는 인수가 붙는 것과 붙지 않는 것등으로 나뉠 수가 있다. 우선 현재의 디렉토리에 어떤 화일이 있는지 알아보는 ls 를 알아보면서 인수가 있는 명령, 없는 명령을 알아보자.

명령어의 형식  

우선 ls 명령을 수행해보자.

%ls

출력결과는 단지 화일의 이름만을 나타낼 것이다.(리눅스에서는 확장되 ls 프로그램을 사용하기 때문에 디렉토리 구분도 가고, 색도 화일에 따라 다르게 나타난다.) 여기에 인수 -F 를 붙여보자.(대문자임을 주의)

%ls -F

이번에는 화일구분이 생긴다.(리눅스에서는 변화가 없다.)이때 "-"을 붙인 이유는 "F"가 선택사항(optin)임을 나타낸다.(도스에서의 arj.exe같은 압축프로그램의 선택사항을 상기하자.) 화일 뒤에 붙는 "/"는 디렉토리임을 나타내고, "@"는 링크된 화일임을 나타낸다. 또, "*"가 붙은 것은 실행이 가능함을 표시한다.(리눅스는 이것뿐 아니라, 색으로도 구분이 가능하며, 이색은 /etc/DIR_COLORS 화일에 지정이 되어있다. 이번 기회에 리눅스에서 사용하는 config 화일은 대부분 /etc 디렉토리나 서브디렉토리 ~~~/etc 내에 들어 있는 경우가 많음을 알아두자. 또한 자신의 홈 디렉토리에 "." 로 시작되는 화일들에는 자신의 환경에 맞는 CONFIG 화일들이 들어있다.) 또 다른 인수 -s 를 사용해보자.

%ls -s -F (혹은 %ls -sF)

s 옵션은 화일의 크기를 나타내는 선택사항이다. ls 프로그램을 살펴보면 알 수 있듯이 일반적으로 유닉스 명령어는 다음과 같은 체계를 가지고 있다.

%명령어   화일이름
       |                       |
       +
인수 부분
+

명령어는 항상 프롬프트의 처음에 위치한다. 또 안의 내용은 필요한 경우에만 선택하면 된다. 옵션은 "-"으로 시작하며 여러개가 올 수도 있다. 또 하나의 선택사항에서는 다른 선택사항이 반듯이 따라서 붙어야되는 경우도 있다. 이를 잘살펴야한다. 또한 식부분에는 졍규식을 포함한 문자열도 올 수가 있다. 문자열을 " "나 ' '로 묶어주어야 한다. 또한 한줄에 여러개의 명령어를 사용할 경우에는 세미콜론(;)으로 구분을 해주어야한다.

입출력의 공유및 변경  

유닉스의 명령어 수행시 입력과 출력은 기본적으로 키보드와 모니터이다. (이는 도스의 경우도 마찬가지인데, IBM PC 호환기종의 바이오스와 어셈블러를 공부하면 이해가 빠르겠지만, 우선은 그렇게 생각하자) 하지만, 유닉스에서는 특정한 기호를 이용해서 입출력의 방향을 변경할 수가 있다. 그 기호들을 나열하면 다음과 같다.

  1. < filename

     표준입력으로 filename을 이용한다.
     (이는 도스를 처음 배울때도 나오는 내용이다. 기본적으로 입력장치 (console : 
      keyboard)에서 입력을 받아야 하는 프로그램이 있을 경우 이기호를 사용하면, 
      filename 에서 그 입력을 대신 수행한다.)
    
  2. > filename (>!, >&, >&!)

     표준출력으로 filename을 이용한다.
     (입력과 반대로 기본출력장치(console: CRT)에 출력할 내용을 filename에 출력한다
      기존에 존재하는 filename 이 있으면, 그내용이 무시된다.)
     C shell 의 경우에는 출력방향 변경에 대해서 >, >!, >&, >&! 등의 네가지가 있다.
     하지만, 리눅스에서는 기본적으로 Bourn Shell을 사용하고 있으므로, > 만 알고 있
     으면 된다.
     (shell 은 쉽게 도스의 command.com 이라고 생각하면 된다. 사용자가 컴을 사용할
     때의 서비스를 제공하는 프로그램이라고 생각하자. 우리가 메모리에 어떤 0과 1을
     쓸지 생각하지 않고 프로그램을 수행하거나 하는 것등의 서비스, 예를들어 키보드
     로 ls 라고 친다고 가정했을때 그것이 명령인지 무엇인지 컴퓨터가 어떻게 알 수 
     있는가?)
    
  3. >> filename

    근본적으로는 > 와 같지만, 기존에 filename 이 존재하면 출력을 filename 의 뒤를 이어서 하게 된다. filename 이 존재하지 않으면, 새로 만든다.
  4. << string

    표준입력을 재지정하지는 않는다. 하지만 표준입력을 string 이라는 문자열이 들어올 때까지 받는다. 즉, 키보드에서 string 라고 칠때까지 문자를 계속 입력 받는다는 의미이다. 이때 string 문자열은 행의 맨처음에 와야하고, 해당행은 string 이외의 문자열을 가져서는 안된다. 이해가 잘안갈테니 예를 들어보자

%cat << 끝 > out                                 <-명령행
지금은 연습 중... 끝이라고 처음에 쳐야 진짜로 끝이다.  +
지금이 끝일까?                                     |
아니다...진짜는 끝이라고만 쳐야한다.                 |
입력 끝. | 끝 +
예에서는 "끝"이라는 문자열이 나올때까지 키보드로 입력을 받아서 out 이라는 화일에 저장을 하는 것이다. cat 명령어는 도스의 type 과 비슷한 명령어이지만, 약간은 다르다. 그럼 out에는 어떻게 저장이 되어 있을까?
%cat out
지금은 연습 중... 끝이라고 처음에 쳐야 진짜로 끝이다.
지금이 끝일까?
아니다... 진짜는 끝이라고만 쳐야한다.
끝.
위와같이 되어 있다. 예를 보면, << 의 사용법을 이해할 수 있을 것이다.

<입출력의 공유>

  1. 파이프라인
    유닉스를 유명하게 만드는 요인 중 하나였던 파이프라인을 보도록하자. 파이프라인이 란, 명령어들 간을 | 혹은 |& 기호에 의해 연결해 선행하는 명령어 실행 결과를 뒤에 오는 명령어의 입력으로 이용하는 것을 말한다. 따라서 중간에 임시 화일이 만들어지 지를 않는다. 결국 출력을 입력에 이용함으로써 입력과 출력을 공유하게 되는것이다. 사용형태는 다음과 같다.
    명령어1 | 명령어2 | ...
    
    |&은 진단출력도 파이프라인 뒤에 오는 명령어의 입력으로 이용할 수 있게한다.예를 들어서
    %ls -sF | more
    
    라고 하면, ls 를 통해서 화일 목록을 화면에 보여주어야 할것이 more 프로그램의 인 수로 들어가서 more 프로그램의 입력값이 된다. more 는 입력 내용을 한화면 단위 즉,25 라인(text mode) 단위로 출력하는 프로그램이므로, 화일 목록이 한 화면 단위 로 출력이 된다.
  2. 집단 명령어
    여러 명령어들을 ( ) 문자로 둘러싸면 표준입출력을 공유하게 된다. 일반적으로는
     (명령어1;명령어2;...)
    
    처럼 쓴다. 아까 얘기했듯이 ;는 명령을 구분하는 구분자이다.(C 언어의 그것과는 다르고 Pascal의 그것과 비슷하다.)
  3. 출력의 분할
    출력방향 변경 > 과 >> 는 기본적으로 하나의 장소만을 지정하는데, 동시에 여러장소 에 하고 싶으면, 출력분할 명령인 tee 를 사용한다. tee의 일반적인 사용방법은 다음 과 같다.
     tee -ai filename ...
    
    여기서 선택사항 -a 는 출력결과를 기존 화일에 붙여 저장하는 것이고 -i는 인터럽트 를 무시하는 것이다. 그런데 tee는 입출력에 관계되는 기호라기 보다는 프로그램의 하나이다. (리눅스에서 사용되는 tee 는 GNU version 으로 -i 대신에 --ignore-interrupt , -a 대신에 -append 등을 쓸 수 있다.)

원래는 man 을 사용하는 법과, 기타 기본적인 명령어까지 하려고 했지만.. 새벽이라 힘이 드네요 :) 오늘은 여기까지 하고 다음에 명령어들을 더 알아보도록 하지요.. 그리고 지금 제가 하는 내용은 시중에 나와있는 유닉스 관련 서적에 나와 있으니까... 참고하세요. 또, 프로그램에 관심이 있는 분이, 언어 강좌를 했으면 좋 겠어요..물리학과 게시판을 키워나갑시다.

도움말  

유닉스에서 사용하는 명령어는 그 수가 무척이나 많다. ( ls /bin 혹은 ls /usr/bin 이라고 타이핑해보면 알 수 있다. 여기서 상식하나 일반적으로 .../bin 이라는 서브 디렉토리에서 실행이 가능한 binary 화일들이 저장된다.) 또한 명령어가 이용할 수 있는 옵션들도 무척이나 많기 때문에 모두를 기억하기란 쉽지가 않다. 따라서 필요할 때마다 사용법들을 참조해야 하는데, 유닉스에서 man 이란 명령어로 온라인 도움말을 제공해 주고 있다. 사용법은 다음과 같다.
%man 명령어
그러면 시스템은 명령어에 해당하는 사용법을 콘솔상에 나타내줄 것이다. 여기에 추 가할 것은 유닉스는 명령어만 도움말을 제공하는 것이 아니라, 프로그래머와 시스템 관리자를 위한 도움말도 포함한다는 점이다. 즉, 시스템호출이나 라이브러리 루틴, 특수화일, 시스템 유지보수에 관한 도움말도 포함한다. man 명령의 결과 수행시 출력 되는 결과물의 관례를 보면 다음과 같다.
  1. 단순한 문자 : 사용할 경우 도움말에 나타난 형태대로 사용해야한다.
  2. 괄호() : 안의 문자들은 선택 사항이다.
  3. 밑줄이 있는 문자들 : 실제 명령어 사용시 사용자가 자신의 필요에 따라서 기술해야하는 문자열
  4. 생략부호 : 바로 앞의 인수를 반복할 수 있음을 표시.
  5. 부가적으로 붙는 도움말

기타의 사항들은 유닉스 버젼에 따라 달라짐.(실제로 리눅스에서 man 명령을 수행해 보면 알 수 있는 사항들임)

화일  

화일이란 하나의 저장 단위이다. 우리가 만드는 문서나 프로그램등을 화일이라고 할 수 있다. 화일 시스템이란 이러한 화일들을 체계적으로 분류하고 저장하며 보안을 유 지해주는 등의 기능을 제공한다. 유닉스의 화일시스템은 각 화일들을 디렉토리 단위 로 분류하고 저장하고 있으며, 이들 디렉토리는 계층구조(hierachial structure) 혹 은 트리구조(tree structure)로 구성되에 있다. 또 디렉토리는 또하나의 화일로 취급 이 된다. /* 실제로 이러한 화일 시스템을 본따서 만든 도스가 크게 히트를 쳤으니, 유닉스 화
  일 시스템의 장점을 여기서 알 수가 있다. */

화일의 종류  

유닉스 시스템에서의 화일은 크게 일반 화일, 디렉토리 화일, 특수 화일로 나눌 수가 있다.

  1. 일반화일 : 좁은 의미의 화일, 일반 사용자가 작성한 문서, 프로그램, 자료등을 말한다.
  2. 디렉토리 화일 : 사용자만 만들고서 유닉스 시스템이 관장을 하는 화일인데, 디렉토리는 화일들의 분류단위라고 생각하면 된다.
  3. 특수화일 : 유닉스 시스템에서는 일반화일과 동일한 방식으로 주변장치를 이용할 수 있는데, 이렇게 되면 하나의 입출력장치는 최소한 하나의 화일과 연결되어 있다. 입출력 장치에 해당하는 특수 화일들을 /dev 에 모두 저장이 되어 있다.

이러한 화일들은 ls -l 명령으로 구분이 가능하다. (리눅스에서는 vdir 도 가능하다)

ls -l 은 화일에 관한 상세한 내용 즉, 화일타입, 화일에 관한 권한, 소유자, 그룹, 등의 정보가 나오는데 맨 앞줄에 나오는 정보가 화일의 타입과 화일권한 구분이다.

-rwxr-xr-x  ....
drwxr-x--x  ....
crw-rw-rw-  ....
brw-r
....
이런식으로 화일 목록 출력이 되는데, 여기서 맨앞에 나오는 정보가 화일타입이다. 그뒤에 나오는 정보는 나중에 설명이되겠지만, 소유자와 그룹 그리고 일반 사용자의 접근 권한이 표기가 된다.( - 는 불가, r 은 읽기가능, w 은 쓰기가능, x 실행가능) 그리고 맨앞에 붙은 문자에 따라서, - 는 일반화일, d 는 디렉토리 화일 그밖에는 특수화일이 되는데, c는 입출력단위가 문자(character)인 입출력장치를 말하고, b 는 입출력단위가 블럭(block)인 입출력장치 l은 링크되어 있는 화일을 말한다.

화일 시스템의 구조와 위치  

유닉스의 화일구조가 디렉토리간의 계층적인 구조라는 것은 앞에서 설명을 했다. 화 일들은 모두 디렉토리들 가운데 하나에 속해야하고 루트(root)디렉토리 ( / )를 제외 한 모든 디렉토리들은 반드시 자신을 포함하는 부모 디렉토리를 가진다.

또 동일한 디렉토리에 동일한 화일명을 가진 화일이 존재할 수 없고, 다른 디렉토 간에는 상관이 없다. 이는 각 화일은 고유하게 지정이 되어야 하기 때문인데, 고유지 정은 경로명을 표기함으로써 정할 수 있다. 이 경로명이란 화일이 존재하는 디렉토리 들의 관계를 표시하는 것을 말한다. 또 경로명은 절대 경로명과 상대경로명이 존재하 게 된다.

절대경로명은 루트 디렉토리로부터 나타내는 경로명을 뜻하며, 상대경로명 이란 지금 사용자가 들어와 있늘 디렉토리로 부터의 경로명을 뜻한다. 예를들어 사용 자가 /home/jiinny 에 있으며, 서브디렉토리 doc 을 만들어서 그 서브디렉토리로 들 어가서 unix.txt 화일을 작성한다고 가정하자. 그러면. unix.txt 화일의 절대경로명 은 /home/jiinny/doc/unix.txt가 되는 것이고 사용자 jiinny가 있는 경로가 /home/jiinny/doc 이므로 상대적인 경로명은 그냥화일 unix.txt 가 되는 것이다. 또 한 상대 경로명을 표시할때 ./unix.txt 로 표기할 수도 있다. 이는 자신이 위치해 있 는 디렉토리라는 것을 표현하는 것이다. 또 부모 디렉토리 즉, /home/jiinny 에 cap 이라는 화일이 있을 경우는 상대 경로명으로 ../cap 이라고 가리킬 수 있다. 즉, "."은 현재 위치한 디렉토리 ".."은 부모 디렉토리를 표시하는 것이다.

또한 사용자의 홈디렉토리 (위의 예에서는 /home/jiinny)에 대한 상대적인 경로를 나타내고 싶을 때는 ~/라고 나타낸다.

화일을 찾는 명령 (ls, find)  

ls  
디렉토리내에 어떤 화일이 있는지 알아보는 기본적인 명령은 ls 가 있다. ls 의 인수 로 앞에서 언급한 경로중, 디렉토리의 경로(상대적, 절대적)를 넣으면 그 디렉토리내 에 있는 화일들이 출력된다. 기본적인 형식은 다음과 같다.
ls -aAcCdfFgilLqrRstu1 
또한 화일명에는 와일드 카드 * 와 ? 를 사용할 수 있다.

옵션 중에서 많이 쓰는 옵션을 선별해 설명하면 다음과 같다.

기타 여러가지가 있으나, 이정를 가장많이 쓰는편이다.

find  
이밖에 정확한 화일의 위치나 이름을 알지 못할 경우 화일을 찾는 명령어가 있는데, 바로 find 이다. find 의 일반적인 사용법은 다음과 같다.

find "찾고자하는 디렉토리들"

옵션 :

예를 들어보면, unix.txt 를 시스템 전체에 걸쳐서 찾아보는데, 경로명을 모른다면

%find / -name unix.txt -print

라고하면, unix.txt 가 있는 절대경로를 출력하게 된다. 여러개의 unix.txt 가 있다 면 모두 출력을 한다. 자세한 것은 man 명령으로 알아보기 바란다.

그동안의 내용이 좀 지루한 감이 있었지요? :) 이제부터는 진도를 빨리나가도록 하겠습니다. 많이 쓰지않는 내용이나 옵션들은 건너뛰고, 나머지는 필요할 때마다 man 명령으로 찾아보는 식으로 하지요.. 그럼 다섯번째 강좌를 시작하십다.

디렉토리 옮기기  

화일 및 디렉토리 조작  

화일및 디렉토리의 생성,제거 내용 보기  

화일의 생성은 편집기로 제작이 가능하고 입력 지시 문자상에서 직접 작성할 수도 있 다. (> 입력기호를 생각해 보자) 또한 화일을 컴파일시킬 때에도 새로운 화일이 생성 될 수 있다. 이는 후에 보기로 하고 다음의 명령어들을 살펴보자.

 %ln -fs filename linkname

으로 f 는 하드링크를 , s는 심볼릭 링크를 나타낸다.

화일의 복사 및 이동  


info | diff | files | GoTo
2007-12-15 00:09:46 v3:jiinny
2142 hits
Login
0.084 sec
Top
(c)copyright 2002-2007 jiinny