Embedded Linux

리눅스 기본 명령 : [ 2 ] 파일 및 디렉터리 관리

작성자 임베디드코리아 작성일15-11-23 09:39 조회4,520회 댓글0건
<*  파일 및 디렉터리 관리 *>
[ 1 ]  ls
◆  ls 명령어는 list의 줄임말로 현재 위치나 특정 경로의 디렉토리 내용의 리스트를 출력하는 명령어 이다.
◆ 리눅스의 기본 명령어 중 제일 많이 사용하는 명령어 이다.
◆ 자주 사용하는 옵션이나 그 외 옵션들의 사용법을 숙지하시면 업무 및 개발에 유용하게 쓰일 수 있다.
◆ 다양한 옵션을 사용하여 디렉토리 및 파일의 권한과 소유자의 데이터를 확인할 수 있고 원하는 형식으로 출력 형식을 변경할 수 있다.

        기본 형식  :  ls  [옵션]  [파일 및 디렉토리]​
     
        [ 옵션 ]
        •  -a  :  all의 줄임말로 모든 파일(숨김 파일 및 디렉터리 포함) 형식을 출력한다.
        •  -l  :  옵션과 조합하여 사용할 수 있다.
                  ※ 숨김 처리된 파일 및 디렉터리는 이름 앞에 . 이 붙습니다.
                        ex) a의 숨김 파일. a
        •  -h  :  human의 줄임말로 사용자가 보기 좋은 형태의 단위로 출력한다.
                      K 킬로바이트, M 메가바이트, G 기가바이트 형태로 출력한다.
                      다른 옵션과 조합하여 사용할 수 있다.  (파일 크기를 보기 위하여 -l 옵션 사용)
        • -l  :  long의 줄임말로 파일 출력 형식을 긴 목록 형식으로 출력한다.
        • -r  :  reverse의 줄임말로 파일 출력을 거꾸로 출력한다.
                      다른 옵션과 조합하여 사용할 수 있다.
        • -S  :  파일 출력 형식을 파일의 크기별로 정렬하여 출력한다.
                      다른 옵션과 조합하여 사용할 수 있다.
        • -t  :  최근 수정된 파일을 맨 위로 정렬시켜 출력한다.
                      다른 옵션과 조합하여 사용할 수 있다.
        •  -A  :  지정된 디렉토리의 현재 디렉터리(.)와 상위 디렉토리( .. )을 제외한 모든 파일 및 디렉토리를 출력한다.
        •  -b  :  c-style 알파벨 순으로 파일 및 디렉토리를 출력한다.
        •  -i  : 각 파일의 인덱스 값을 첫 번째 열에 출력한다.
                    ※ 인덱스: 위에서 설명하는 인덱스는 파일 시스템과 관련한 중요한 자료구조 중 하나로서 inode라고 부른다.
        •  -I    :  지정한 파일 및 디렉토리를 제외하고 출력한다.
        •  -L  :  심볼릭 링크의 정보를 출력할 때 원본 파일의 정보를 출력한다.
        • -m  :  파일의 출력 형식이 디렉토리 및 파일을 쉼표로 구분한다.
        •  -n  :  소유자와 소유자 그룹을 UDI와 GID로 출력한다.
        •  -R  :  현재 위치 및 지정한 디렉토리 및 경로에 하위 디렉토리 파일까지 모두 출력한다.

[ 2 ]  cd
◆  change directory의 약자로, 현재 작업중인 디렉토리를 이동하는 명령어이다. 
◆  현재 위치한 디렉토리의 위치를 이동할 수 있다.
◆  이동할 디렉토리 경로 인자 값에는 절대 경로 뿐만 아니라 상대 경로를 통해 상위 폴더 이동, 이전 폴더 이동을 할 수 있다.
      *** 절대 경로 vs 상대 경로 ***
      * 절대 경로란 파일 경로의 FULL name을 시작(root)부터 끝까지 다 입력한 것을 말한다.절대 경로의 기준은 "/" (root) 이다.
      * 상대 경로란 현재 위치한 폴더를 기준으로 이동하고자 하는 디렉토리로 바로 이동할 때 사용하는 방법이다.

        .      : 현재 디렉토리
        ..      : 상위 디렉토리

        예 ) 
              $  cd ..
                  한 단계 상위 디렉토리로 이동

              $ cd  /
                최상위 디렉토리로 이동 

              $ cd  $변수명
                변수에 저장된 경로로 이동

              $ cd  ~
                  사용자 홈 디렉토리로 이동

              $ cd  &HOME     

              $  cd  ~계정명
                  입력한 사용자의 홈 디렉토리로 이동

          $ cd  - 
              이전 경로로 이동 

[ 3 ]  pwd
 ◆ 현재 작업 디렉터리 확인 (Print Working Directory)

        예 )
            $ pwd -L
                심볼릭 링크 안에 있다면 심볼릭 링크의 경로를 표시한다.
            $ pwd -P
                심볼릭 링크 안에 있다면 심볼릭 링크가 가리키는 디렉토리 경로를 표시한다.

          *** 심볼릭 링크 란? ***
          * 단순히 원본 파일을 가리키도록 링크만 연결시켜둔 것으로 윈도우에서의 바로가기 파일과 비슷한 개념이다.
          * 원본 파일을 가리키기만 하므로 원본 파일의 크기와 무관하고 원본 파일이 삭제되어 없을 경우 빨간색으로 깜빡이면서
            링크 파일의 원본 파일이 없다는 것을 알려준다.

[ 4 ] mkdir
      ◆ mkdir은 make directory의 약자로 디렉토리(폴더)를 생성할 때 사용하는 명령어 이다.

        < 기본 형식 >      mkdir  [옵션]  [생성 할 디렉토리]

        ▶ 경로를 지정하지 않으면 현 위치를 Defualt로 한다.
        ▶ 생성할 디렉토리를 여러개 나열하여 한번의 명령어로 복수의 디렉토리를 생성할 수 있다.

        [ 자두 사용되는 옵션 ]
        •  -m  : 디렉토리를 생성할 때 권한을 설정한다. (defualt : 755)
        •  -p  : 상위 경로도 함께 생성한다.
        •  -v  : 디렉토리를 생성하고 생성된 디렉토리에 대한 메시지를 출력한다.

      예 )
              $ mkdir  new_folder
                  new_folder 디렉토리를  생성 한다.

              $  mkdir  /WORK/project/new_folder
                  " /WORK/project/"위치에 new_folder 디렉토리를 생성 한다.

              $ mkdir  new_folder  new_folder2  new_folder3
                  new_folder, new_folder2, new_folder3 디렉토리를 생성 한다.

          예 )  디렉토리 안에 디렉토리를 만들고 싶을때
               
                  $ mkdir folder/sub_folder
                    명령어를 실행시킨다면 리눅스에서는 현재 경로 내에 있는 folder 디렉토리안 에 sub_folder 디렉토리가 생성된다.
                  **< 에러 발생 > **
                    sub_folder 상위에 folder의 경로를 찾지 못하여 No such file or directory라는 에러가 난다
                    $ mkdir  -p  folder/sub_folder
                        -p 옵션을 사용해주면 존재하지 않는 folder 디렉토리를 자동으로 생성해주어 계층형 디렉토리를 한번에 만들 수 있다.

[ 5 ]  touch
      ◆  touch 명령어는 파일의 생성과 파일의 날짜, 시간을 변경하는 명령어 이다
            - 빈 파일 생성 또는 파일 시간 업데이트
      ◆  옵션 없이 사용할 경우 서버의 현재시간으로 변경 된다.

                < 기본 형식 >      touch  [옵션]  [파일이름]

                [ 옵션 ]
                •  -m : 파일의 생성, 수정 시간을 서버 시간으로 변경할 경우 사용한다.
                •  -t : 파일의 생성, 수정 시간을 사용자가 원하는 시간으로 변경할 경우 사용되한다.

          예 )  touch 명령어 - 파일 생성
                  $ touch textfile
                  $ ls  -l  textfile
                  -rw-r--r-- 1 root root 0 Jun  14 10:25  textfile

          예 )  touch 명령어 - 날짜, 시간 변경
                  $ touch  -t  202506061230  textfile    <----    파일의 날짜를 수정할 경우 년, 월, 일, 시간으로 입력해야 한다.
                  $ ls  -alh  textfile
                  -rw-r--r-- 1 root root 0 Jun  6  2025  textfile

            예 )    touch 명령어 - 서버시간으로 변경
                    $ touch  -m  textfile
                    $ ls -l
                      -rw-r--r-- 1 root  root    0 Jun  6 08:43  textfile

[ 6 ]  rm
      ◆  rm은 remove의 약자로 파일이나 디렉토리( -r 옵션시 삭제가능)를 삭제 시킬 때 사용하는 명령어 이다.
          -  파일 또는 디렉터리 삭제 (Remove)
      ◆  한번 지운 파일은 복구가 어렵기 때문에 삭제 시 확인 해야 한다.

                < 기본 형식>    rm  [옵션]  [삭제 할 디렉토리/파일]

              [ 자주 사용하는 옵션 ]
              •  -f  : 강제로 파일이나 디렉토리를 삭제하고 대상이 없는 경우에는 메시지를 출력하지 않는다.
              •  -r  : 디렉토리 내부의 모든 내용을 삭제한다.
              •  -d  : 비어있는 디렉토리들만 제거
              •  -i  :  매번 삭제할 때마다 사용자에게 삭제할 것인지 묻는다.
              •  -l  : 3개의 이상의 파일을 삭제하거나 디렉토리 내부가 비어있지 않을 때만 삭제할 것인지 묻는다.
              •  -v  :  삭제되는 대상의 정보를 출력한다.

          예 )
                  $  rm  test.txt  new_folder
                      test.txt 삭제 한다.

                  $ rm  /home/user/test.txt
                    /home/user/test.txt 삭제 한다.

                  $ rm  -r  new_folder
                    new_folder 디렉토리 삭제 한다.

                  $ rm -rf  new_folder
                      new_folder 디렉토리 삭제 시 삭제 확인 메시지를 출력하지 않는다.

            예 )  여러 개를 한번에 삭제하고 싶을 때
                  $ rm  test1.txt  test2.txt  test3.txt
                      지정한  test1.txt  test2.txt  test3.txt 를 삭제한다.

                  $ rm  -rf  *
                      현재 위치의 모든 파일 제거 한다.

                  $ rm  *.txt
                      현재 위치의 .txt로 끝나는 모든 파일 제거 한다.

[ 7 ]  cp : 파일 복사 (Copy)
      ◆  cp은 copy의 약자로 파일이나 디렉토리를 복사할 때 사용하는 명령어 이다.

                    < 기본 형식 >    cp  [옵션]  [복사 할 디렉토리/파일]  [복사 될 디렉토리/파일]

                  [ 자주 사용하는 옵션 ]
                    •  -i : 복사될 파일이 이름이 이미 존재할 경우, 사용자에게 덮어 쓰기 여부를 묻다.
                    • -b : 복사될 파일이 이름이 이미 존재할 경우, 백업파일을 생성한다.
                    • -f : 복사 될 파일이 이름이 이미 존재 할 경우, 강제로 덮어쓰기 한다.
                    • -r : 하위 디렉토리 까지 모두 복사한다.
                    • -a : 원본 파일의 속성, 링크 정보까지 모두 복사 한다.
                    • -p : 원본 파일의 소유자, 그룹, 권한 등의 정보까지 모두 복사 한다.
                    • -v : 복사 진행 상태를 출력한다.

              ▶  cp 명령어의 옵션을 제외한 인자 값은 생략이 불가능 하다.
              ▶ 경로를 지정하지 않으면 현 위치를 Defualt로 한다.
              ▶ 복사할 때 새로운 이름을 지정하여 복사할 수 있다.
              ▶ 다양한 옵션을 사용하여 기존의 파일이나 디렉토리를 보호하는 등의 행동을 취할 수 있다.
 
          예 )  디렉토리 복사
                  $  cp  -r  org_folder  /WORK/
                      현재 위치에 있는 org_folder 디렉토리를 /WORK/ 디렉토리로 복사
 
                  $  cp  -r  org_folder  new_folder
                      현재 위치에 있는 org_folder 디렉토리를 new_folder 디렉토리라는 이름으로 복사
                   
            예 )  여러 개를 한번에 복사
                  $ cp test1.txt  test2.txt  test3.txt  /WORK/
                      test1.txt  test2.txt  test3.txt 들을  /WORK/로 복사

                  $  cp  *  /WORK/
                      현재 위치에 있는 모든 파일을  /WORK/ 복사

[ 8 ]  mv: 파일 이동 또는 이름 변경 (Move)
      ◆ mv는 move의 약자로 파일이나 디렉토리를 이동시킬 때 사용하는 명령어이다.

                < 기본 형식 >    mv [옵션]  [이동할 파일 또는 디렉터리(폴더)]  [이동 될 위치]
 
                    [ 옵션 ]
                  • -b : 이동할 파일이 이미 존재할 경우 백업 파일을 만든다.
                  •  -i : 이동할 파일이 이미 존재할 경우 사용자에게 덮어쓰기 여부를 묻는다.
                  •  -f : 이동할 파일이 이미 존재할 경우 강제로 덮어쓰기 한다.
                  •  -n : 이동할 파일이 이미 존재할 경우 덮어쓰기를 하지 않는다.
                  • -u : 파일이 변경된 경우에만 이동한다.
                  • -v : 이동 진행 상태를 화면에 출력해 준다.

          ▷ mv 명령어는 경로를 지정하지 않고 사용하면 현재 위치를 기준으로 사용된다.
          ▷ mv 명령어는 이동할 때 다른 이름으로 변경해서 옮길 수 있다.
          ▷ mv 명령어는 현재 위치에서 다른 이름으로 변경하는 용도로도 사용할 수 있다.
          ▷ mv 명령어는 이동만 하기 때문에 권한이나 소유자/그룹 등이 변경되지 않는다.
          ▷ cp 명령어와 달리 복사가 아니기 때문에 굉장히 빠르다.
            * 그냥 사용할 경우 같은 이름의 파일이 이미 존재하면 덮어쓰기가 되기 때문에 사용에 유의해야 다.

          예 )
                  $ mv  log.txt  folder
                    현재 디렉토리의 log.txt 파일을 folder 디렉토리로 이동
         
                  $ mv  /app/bin/logs/log.txt  /app/dw
                      /app/bin/logs 디렉토리의 log.txt 파일을 /app/dw 디렉토리로 이동

                  $ mv  backup.dump  /opt/backup
                        현재 디렉터리(폴더)의 파일 backup.dump을 /app/backup 디렉터리(폴더)로 이동

                $ mv  backup.dump  old_backup.dump
                    파일 이름을 변경 : 현재 디렉터리(폴더)의 파일  backup.dump 를 old_backup.dump로 변경

                $ mv  -r  ./testDir  /app/backup/
                    현재 디렉터리(폴더) ./testDir 를 /opt/backup/ 디렉터리(폴더) 하위로 이동

          예 ) 여러 개를 한번에 이동
                  $  mv  test1.txt  test2.txt  test3.txt    /opt/
                      test1.txt  test2.txt  test3.txt 를  /opt/ 디렉토리로 이동

                  $ mv  -r  *  /opt/
                      현재 위치의 모든 파일괴 디렉토리를  /opt/ 디렉토리로 이동