명령어 유틸리티 -> 파일 형식 -> 기억장치

 

파일 시스템의 개념 -> 파일 시스템의 구조 -> 경로의 지정 -> 파일 제어 명령어

 

1. 리눅스 파일 시스템

파일 시스템이란 파일을 적절한 위치에 보관하고 빠르게 검색하는 등의 기본적인 저장 장치의 역할을 수행하는 것을 말한다.  리눅스에서는 여기에서 한걸음 더 나아가 터미널 , 테이프 , 마우스등과 같은

주변 장치들에 해한 제어도 특별한 형태의 파일(디바이스 파일) 을 통해 제어를 합니다.

 

파일 시스템은 어떻게 이루워져 있는지 , 그리고 리눅스의 표준 디렉토리는 어떤 내용을 가지고 있는지 등에 대해서 알아보도록 하겠습니다.

 

 2. 파일명의 지정

    파일명 , 타임 스탬프 , 사이즈 , 소유자 , 사용권한 등을 공통요소로 가지고 있음

 

2. 1 파일 명의 기본사항

    1. 파일명으로 /를 제외한 어떤 ASCII 문자라도 사용 가능함

       - 편의상 알파벳과 점 언더 스코어(_) 문자를 이용하여 파일명을 지정하는것이 좋음

    2. 파일명의 최대 길이는 255자로 제한 대소문자 구별이 엄격하다

    3. MS 윈도우나 VMS 등의 운영 체제와는 달리 리눅스의 파일명은 특별히 확장자를 따로 가지지

       않음 단, 컴파일러나 링커등과 같은 특정 프로그램에서 c , cppp , a등과 같은 suffix 를 인식하여

       각각에 따라 다른 동작을 하는 경우는 있음

     4. 백업 파일은 -나 ~을 포함함

        - 대부분의 리눅스 프로그램들은 백업 파일 이름이나 끝에 대시(-)나 물결 무늬(~)를 추가함

        - 예를 들어 original_file.suffix 의 백업 파일 이름은 riginal_file.suffix- 또는 original_file.suffix

          가 됨.

     5. 닷. 으로 시작되는 파일은 보통 숨김 파일

        - 기본적인 디렉토리 내용 보기 명령으로는 보이지 않고 특별한 옵션을 이용할 때만 보임

        -  보통 프로그램 별 설정이나 쉘에서 특별한 용도로 사용되는 파일들이 이러한 이름을 갖음

            (.profile , .netscape , .elmrc 등)

 

2.2 경로명

     경로명 (PathName)이란, 파일 시스템 상의 특정 디렉토리나 파일을 지칭합니다.

     경로면은 크게 절대경로와 상대 경로로 구분 할 수 있습니다.

     절대 경로

     * 루트 디렉토리와의 상관관계로 지칭하는 경로

     * 루트에서 부터 시작하여 현재 위치를 나타내는 경로

     상대 경로

     * 현재 디렉토리와의 상관 관계로 지칭하는 경로

 

2.3 디렉토리 단출 경로

    리눅스에서 디렉토리 이름으로 "."이나 ".."이 사용되면 , 이들은 ASCII 문자 이상의 특별한 의미를

    가짐 (.은 현재 디렉토리 를 나타냄 ..은 상위 디렉토리를 나타냄)

 

 

2.4 홈 디렉토리

   1. 모든 사용자에게는 홈디렉토리가 있음

      - 모든 사용자는 로그인 했을때 UID 를 할당 받으며 자신의 홈 디렉토리로 옮겨짐

      - 이후의 모든 파일 제어 및 명령은 사용자가 특별히 디렉토리를 옮기지 않는한 홈 디렉토리

         에서 이루어 지게 됨

    2. 홈 디렉토리 에서는 사용자의 파일을 만들 수 있음

      - 홈디렉토리는 다른 사용자로 부터 보호됨

    3. 홈 디렉토리에는 사용자별 개별 설정 사항(Configurator)이 보관도미

      - 앞서 설명 드린 닷(.)파일 형태로 숨겨진 파일(Hiddent File)로 보관

   

3.1 vi 개론

    ex : vi 편집기가 이용되기 이전 유닉스의 기본 편집기 - ex는 라인 편집기라는 형식

         하이텔등의 vt모드에서 사용하는 기본 편집기와 비슷함

    vi : ex를 visual 하게 만들었다고 하여 이름이 vi라고 함

         기본 명령어들이 ex와 동일(ex 명령어라고 함)

         HP-UX 11.X등의 유닉스 버전에서는 VI와 ed , ex, view , e 등의 프로그램이 아예

         같은 프로그램 코드를 사용하여 하드 링크로 되어 있기도 함

        

     vim : 오리지널 버전의 vi보다 여러가지가 개선

            한글 처리 및 기타 상요자 인터페이스가 vi보다 향상

            사용자에 따라서는 vim이 추가적으로 제공하는 여러가지 멋진 기능을 활용하는데에

            취미를 붙이게 될 수 도 있음

 

      vi 기본 사용법

            vi 편집기

                 - 명령어 모드 : 입력한 글자는 모두 명령어로 인식하여 명령을 수행

                       - search 모드 : 문자열을 검색

                       - ex 모드 : 보다 자세한 명령할 수 있음

                 -  삽입 모드 : 입력한 글자는 문서 내용이 됨

             기본적으로 vi는 두가지의 구분된 모드하에서 동작

                - 명령어 모드 와 삽입모드

                - 최초로 vi를 실행시켰을 때의 모드는 명령어 모드

 

             vi 편집기의 시작

                 - 모드 전환

                    vi에는 명령어 모드와 삽입 모드가 있어 파일을 편집하다가 새로운 내용을 입력하려면

                    삽입 모드로 전환하여야 함.

                    입력을 끝내고 다시 편집하려면 명령어 모드로 전환해야 함

                    MS 윈도우의 워드나 아래 한글등의 문서 편집기에는 이런 모드 전환 없이 입력과

                    편집이 하나의 모드 안에서 이루어짐

 

             vi 개론

                     10dw - 10회 삭제 단어 현재 커서 위치로 부터 10개의 단어를 삭제하라

                     삽입 모드 i,l,A,o,O,c 알파벳의 공통점

                     명령어 모드 -> 삽입 모드

i : 현재 위치한 커서앞에 입력

a : 현재 위치한 커서 앞에 입력

l : 현재 라인의 첫 문자 앞에 입력

A : 현재 라인의 마지막 문자 뒤에 입력

o : 현재 라인 다음에 새로운 라인을 만듬

O : 현재 라인 이전에 새로운 라인을 만듬

 

삽입 모드에서 <ESC>를 누르기 전까지 입력한 글자는

<Backspace> 키로 지울 수 있지만, 삽입 모드로 들어오기 전에

입력한 글자는 <Backspace> 키로 지울 수 없습니다.

이럴 경우에는 다음에 설명되는 삭제 명령어를 사용하셔야 합니다.

 

                <삭제에 관련된 명령어>

                글자 혹은 라인을 삭제할 경우 삭제 명령어와 x와 d를 사용합니다.

                <문자 삭제>

                 x 현재 커서가 위치한 문자 삭제

                 X 현재 커서가 위치한 앞 문자 삭제

 

                 라인 삭제 : 라인을 지우는 명령어는 d

                                 이 명령어를 사용할 때는 d에 뒤이어 쓰는 문자들은 삭제의

                                 범위를 표현

       dd : 현재 커서 라인 전체를 지움

       dw : 현재 커서로 부터 다음 단어 처음까지를 지움

       d3l : 현재 커서로 부터 다음 세 글자를 지움

       d0 : 현재 커서로 부터 다음 라인의 시작까지를 지움

       d1G : 현재 커서로 부터 파일의 시작까지를 지움

       dG : 현재 커서로 부터 파일의 끝까지를 지움

       D : 현재 커서로 부터 라인의 마지막까지를 지움

      

       < 변경 명령어 >

       r - 한글자만 변경

      R - <ESC> 가 눌리기 전까지의 모든 글자를 변경

     

      cc  - 현재 커서가 위치한 라인 전체를 변경

      cw - 현재 커서가 위치한 다음 단어를 변경

      c3l - 현재 커서가 위치한 다음 3 단어를 변경

      c0 -  현재 커서로 부터 라인의 시작까지를 변경

      c1G - 현재 커서로 부터 파일의 시작까지를 변경

      cG - 현재 커서로 부터 파일의 마지막까지를 변경

      c$ - 현재 커서로 부터 라인의 마지막까지를 변경

      

      < 자르기 복사 붙여넣기>

      자르기 : vi의 클립보드는 단 하나이므로 , 두가지를 삭제했다면,

      먼저 삭제한 내용은 영원히 없어지게 됨.

     

      < 복사하기 명령어>

       yy - 현재 커서가 위치한 라인 전체를 복사

       yw -  현재 커서가 위치한 다음 단어를 복사

       y0 - 현재 커서가 위치한    라인의 시작까지를 복사

       yG - 현재 커서로 부터 파일의 마지막까지를 복사

      

       <붙이기 명령어>

       삭제하거나 복사한 항목을 붙여놓고 싶을때는 p또는 P(Paste) 명령을 사용함

       -p : 현재 커서 위치의 다음 문자나 다음 라인에 붙여짐

       -P : 현재 커서 위치에 끼워 넣어지거나 앞쪽 라인으로 삽입됨.

 

       여기에서 삭제하거나 복사한 단위가 문자 단위인지 아닌지 라인 단위인지에 따라

       붙여넣기가 다르게 동작함

 

       < 찾기 명령어>

       찾기를 하려면 명령어 모드에서 seach 모드로 들어가야 합니다.

       

                 명령어 모드 -> search 모드(/ ?)

                 명령어 모드 <- search 모드 (Enter)

 

        명령어 모드 -> search 모드 /- 현재 커서 위치에서 다음 방향으로 찾기 수행

                                               ?- 현재 커서 위치에서 이전 방향으로 찾기 수행

        명령어 모드 <- search 모드 Enter : 즉시 찾기를 수행한 후 다시 명령어 모드로 돌아감

 

        다음 찾기 명령어 n - 이전과 같은 방향으로 찾기 반복

                                N - 이전과 반대 방향으로 찾기 반복

 

        

         바꾸기 명령어 : 다른 명령어와는달리 ex명령어를 사용하기 때문에 약간 복잡

            명령어 모드 -> ex모드 (:)

            명령어 모드 <- ex모드 (Enter)

         :1.#s/old/new/g

            첫번째 라인부터 마지막 라인까지 , 즉 파일 전체에서 old라는 글자를 new 라는 글자

            로 대체함

         :1.20s/old/new/gc

            첫번째 라인부터 20번째 라인까지 , 특 20줄에서 old 라는 글자를 new 라는 글자로

            대체하되 , 바꾸기 전에 물어봄

         : n.ms/old/new/g

             n번째 라인에서 m번째 라인까지 old라는 글자를 new라는 글자로 대체함

         파일 제어 명령어

             다음 명령어들은 ex모드에서 수행되는 명령어 들입니다. 따라서 명령어 앞쪽에서 항

             상 : 가 붙습니다.

        

          ex) 명령에서 수행되는 명령

              :r file 현재 라인 다음으로 파일을 읽어들임

              :w 현재의 내용을 파일로 저장함

              :w! 사용권한을 무시하고 현재 내용을 파일로 덮어씀

              :w file 다른 이름ㅇ로 저장함

              :wq 저장후 종료함

             : x 저장한 후 종료함

             :q 저장하지 않고 종료함

             :q! 저장하지 않고 종료함

             :!cmd 쉘 명령 수행

             :r!cmd 쉘 명령 수행 결과를 현재 커서 이후로 읽어들임

          man

              Name : 명령어 이름(Command line)

              Synopsis : Syntax 요약

              Description : 명령어 , 옵션등의 의미설명

              Examples : 사용 예

              See Also : 유사하거나 관련 있는 명령어

              Files 관련 파일명

         맨페이지와 섹션

              맨페이지는 각 영역에 따라 다음과 같이 여러 섹션으로 나뉘어져 있습니다.

              1번 섹션 :  사용자 명령어

              2번 섹션 : 리눅스 시스템 콜

              3번 섹션 : 라이브 러리

              5번 섹션 : 파일 형식

              8번 섹션 : 시스템 관리 명령어

        기본적인 파일 제어 명령어

              cd , pwd( 경로 이동 및 확인)

              cd 라는 명령어를 이용하여 디렉토리를 이동함.

              $ man 섹션 번호 명령어( 또는 라이브러리 함수명)

 

              여기에서 디렉토리 명을 생략하면 사용자의 홈 디렉토리로 이동합니다.

               pwd : 자신이 현재 어느 위치에 있는지 확인해야 할 경우에 사용함.

              이때 사용하는 명령어는 pwd

        파일 정보 확인 -ls

               디렉토리 안에 어떤 파일이 있는지 알고 싶을 때 사용한다.

               -l 긴 형식으로 파일의 정보를 자세히 보여줌

               -a 숨김 파일을 볼수 있는 옵션으로 파일의 속성까지 보여줌

               -F 파일 타입을 보여줌(flag file type)

               -R 서브 디렉토리를 재귀적으로 나타냄

               -i 파일의 Inode 값을 보여줌(file name wi

 

         사용 권한

               drwxr_xr_x :  열자리의 문자들 중 첫번째 자리를 제외한 나머지 9자리는 세

                                  자리씩 끊어서 세개의 그룹을 형성

                      첫번째 세문자 그룹은 소유자 Owner 혹은 User 권한

                      두번재 세문자 그룹은 그룹(소유 Group)의 권한

                      세번째 세문자 그룹은 그밖의 타인의 권한

          디렉토리 생성 및 삭제 -mkdir , rmdir

                mkdir 디렉토리를 만들때 사용하는 명령어 

                rmdir 디렉토리를 삭제할때 사용하는 명령어

          파일 삭제 , 복사 및 이름 변경

                rm : 파일 제어에 있어서는 파일을 지움

                       -i 삭제전 , 삭제할 지를 물어봄

                       -r 자식 디렉토리까지 삭제함

                cp  :파일을 복사

                        -i 타켓 파일이 이미 존재할때 해당 파일에 덮어 쓰며 복사할 것잊니를 체크

                           하는 옵션

                        -r 자식 디렉토리 및 자식 디렉토리의 파일까지 복사하는 옵션

 

                mv : 파일을 이동시킴

                         -i 타겟 파일이 존재할때 파일을 이동시킬 것인지를 체크하는 옵션

 

          링크라는 개념은 다른 운영 체제에는 없는 조금 특별한 기능입니다.       

          링크의 방법 1. 하드 링크

              파일 시스템이 다르면 inode값을 공유 할 수 없으므로 동일한 파일 시스템 안에서

              만 링크가 가능하다

                          2. 심볼릭 링크 - 원본 파일의 이름을 공유하는 방법

         

          파일 내용보기 - cat , more , less , head , tail

                $cat (파일명) : 파일의 내용 전체를 확인하고자 할때 사용하는 명령어이다.

                $less 파일명 :

                $more 파일명 :  파일의 내용을 페이지 단위로 보여지며, 앞/뒤로 스크롤 시킬수

                                 있는 기능을 가지고 있습니다. 주로 이 명령어는 단독으로

               

                $head 파일명 : 파일의 시작 부분 10줄을 보여줌

                $tail 파일명    : 파일의 끝부분 10줄을 보여줌

 

          파일 찾기 - locate , find

               $locate 파일명

               $find <경로>[옵션] 파일명 - locate보다 다양한 조건으로 파일의 위치를 찾아 낼

                         수 있는 명령어이다

 

               -name filename : 파일명이 filename과 일치하는 파일을 찾습니다.

               -type x : 파일 타입이 x와 일치하는 파일을 찾습니다.

              

           grep 명령어 : 파일 내에서 특정한 문자열 패턴을 검색하여 해당하는 라인을 화면에

                 출력하는 명령어입니다. 파일에서 문자열을 찾아내는 경우뿐만 아니라 명령문의

                 수행 결과가 아주 많을때 필요한 정보가 포함된 부분만 출력하는 경우에 이용할

                 수도 있습니다.

                 $grep 문자열<파일명>

            파일의 압축과 관리 -tar

                공개된 리눅스용 소스 파일들이 많다 이런 경우 대게 .tar.gz 등의 확장자로 된

                 파일로 압축되어 있음. 시스템으로 다운받아 설치하려면 이 파일의 압축을 풀고

                 설치 프로그램을 수행해야 함.

                 $tar[옵션]<tar파일명>[파일명1파일명2...]

                 명령어

                     -cvzf  tar 파일명 다음에 나열되는 파일들을 하나의 파일로 묶어 gzip 도구로

                       압축 시키는 옵션

                     -xvzf  tar 파일명으로 압축된 파일을 풀어 설치하는 옵션

                              다운받은 파일의 확장자가 .tar.gz인 경우 이 옵션을 이용

                      -cvif tar 파일명 다음에 나열되는 파일들으 하나의 파일로 묶어 bzip2도구로

                             압축시키느 옵션

                      -xvjf  tar파일명으로 압축된 파일을 풀어 설치하는 옵션

                            

 

'SYSTEM PROGRAMMING' 카테고리의 다른 글

NETWORK PROGRAMMING for Microsoft Windows  (0) 2015.08.05
리눅스 쉘  (0) 2015.08.05
서버 프로그래밍  (0) 2015.08.05
리눅스 단축키 모음  (0) 2015.08.05
리눅스  (0) 2015.08.05
Posted by 뉴암스테르담
l