티스토리 뷰

CentOS 강좌 PART 1. 3 리눅스 기본 명령어 2편

[파일관리를 위한 명령어]

파일 관리를 위한 다양한 명령어들을 숙지해 두면 리눅스의 기본 파일 관리에 매우 편리하다.

명령어 요약

ls 관련 명령 요약

ls -al 
현재 경로안의 모든 파일을 나열하고, 파일 형태, 사용권한, 하드링크 번호, owner 이름, group 이름, 파일 크기, 시간 (따로 지정하지  않으면  파일이  만들어진 날자다)을 자세하게 나열

ls -alu    파일, 디렉토리 생성 날짜 기준으로 출력
ls -alS    파일,디렉토리 사이즈 크기 순으로 정렬하여 출력
ls-alSr   파일, 디렉토리 사이즈가 작은 순으로 정렬하여 출력
ls /home/whchoi/*_test >> /home/whchoi/ls_test/out.txt ls 출력 결과물을 특정 파일로 생성

touch 관련 명령 요약 

touch test1.txt                  : test1.txt 파일 생성
touch test2.txt test3.txt : test2.txt, test3,txt 파일 생성
touch test4.txt -t 201903061450    : test4.txt 파일을 특정 시간으로 업데이트 생성.
touch -r test1.txt test4.txt                 : 특정 파일의 속성과 Sync
touch ./cp_test/test{1..4}.txt : touch 명령과 shell 변수를 사용하여 한꺼번에 4개의 파일을 생성

CP 관련 명령어 요약

cp test1.txt backup1.txt : test1.txt 파일의 복사본을 생성
cp test1.txt backup1.txt ~/backup_cp/ : 파일 2개를 특정 디렉토리에 복사.
cp -r ~/cp_test/ ~/backup_cp/ : 디렉토리와 하위 파일 전체를 특정 디렉토리 하위에 복사.
cp -rp ~/cp_test/ ~/backup_cp/ : -p 옵션을 통해서 속성까지 그대로 복제 가능
cp -r ~/cp_test/ ~/backup$(date '+_%Y%m%d') : 복제본을 만들때 날짜기반 디렉토리생성

rm 관련 명령어 요약

rm backup1.txt : backup1.txt 파일을 삭제
rm * : 현재 디렉토리의 모든 파일을 삭제
rm -r cp_test/ : -r 옵션을 통해 디렉토리와 하위 파일 전체를 삭제

mv 관련 명령어

mv test1.txt mv_test1.txt : test1.txt 파일을 mv_test1.txt 파일로 변경
mv test2.txt ~/mv_test : test2.txt 파일을 mv_test 디렉토리로 이동
mv mv_test/ rename_test/ : mv_test 디렉토리 이름을 rename_test 디렉토리 이름으로 변경.


ls (list)

가장 기본적이고 많이 사용되는 명령어 중 하나이다. 
ls는 수많은 옵션을 제공하며, 시스템 관리자에게 매우 유용한 도구 이다.

ls 명령에 대한 옵션 요약

      -a, --all
              경로안의 모든 파일을 나열한다. `.'으로 시작하는 파일 들도 포함된다.

       -b, --escape
              알파벳  형식을  사용하는  파일  이름안에서  그래픽  문자가  아닌  문자들을 사용한다.
              C와 같이 여덟가지 역슬래쉬 문자(`\')와 함께 오는 문자들을 사용한다.

       -c, --time=ctime, --time=status
              파일 최근 변경 시간에 따라 정열 해서 보여준다.  
              자세한 나열(-l 옵션)이면, 그 파일의 최근 변경 시간을 보여준다.

       -d, --directory
              경로안의 내용을 나열하지 않고, 그 경로를 보여준다.(이것은 쉘 스크립트에서 유용하게 쓰인다.)

       -f     경로 내용을 정열하지 않는다: 이것은 디스크에 저장된 순으로 보여준다.  
               -a와 -U 옵션과 같은 뜻이며, -l, -s, -t.  옵션과 반대뜻이다.

       --full-time
              시간을 간략히 표시하지 않고, 모두 보여 준다.

       -g     무시: 유닉스 호환을 위해서 있음.

       -i, --inode
              파일 왼쪽에 색인 번호를 보여준다.

       -k, --kilobytes
              파일 크기가 나열되면, kb 단위로 보여준다.  이 옵션은 POSIXLY_CORRECT 환경 변수를 무시한다.

       -l, --format=long, --format=verbose
              파일 나열에 있어, 파일 형태, 사용권한, 하드링크 번호, owner 이름, group 이름, 파일 크기, 시간
              (따로 지정하지  않으면  파일이  만들어진 날자다)을 자세하게 나열한다. 
               시간은 여섯달 이전 것이면, 시간이 생략되고, 파일의 연도가 포함된다.

       -m, --format=commas
              파일을 가로로 나열한다. 가로로 나열할 수 있는 만큼 최대한 나열한다.

       -n, --numeric-uid-gid
              이름의 나열에서 UID,GID 번호를 사용한다.

       -p     파일 형태를 지시하는 문자를 각파일에 추가한다.

       -q, --hide-control-chars
              파일 이름에 그래픽 문자가 아닌 것이 있으면, `?'로 표시한다.

       -r, --reverse
              정열 순서를 내림차순으로 한다.

       -s, --size
              파일 크기를 1Kb 단위로 나타낸다.  POSIXLY_CORRECT 환경 변수가 지정되면, 512b 단위로 지정된다.

       -t, --sort=time
              파일 시간 순으로 정열한다.  최근 파일이 제일 먼저.

       -u, --time=atime, --time=access, --time=use
              파일 사용 시간 순으로 정열한다.  자세한 나열이면, 시간 표시는 만들어진 날자대신, 사용된 날자를 보여준다.

       -x, --format=across, --format=horizontal
              정열 방식을 가로로 한다.

       -A, --almost-all
              `.', `..' 경로를 제외하고 디렉토리안의 모든 파일을 나열한다.

       -B, --ignore-backups
              파일 끝이 `~'인 파일은 목록 나열에 제외된다.

       -C, --format=vertical
              정열 방식을 세로로 한다.

       -F, --classify
              파일  형식을  알리는 문자를 각 파일 뒤에 추가한다.  
              일반적으로 실행파일은 "*", 경로는 "/", 심블릭 링크는 "@", FIFO는 "|", 소켓은 "=",  일반적인 파일은 없다.

       -G, --no-group
              자세한 목록 나열에서 group 정보를 제외한다.

       -L, --dereference
              심블릭 링크 파일들을 그냥 파일로 보여준다.

       -N, --literal
              이름이 영문이 아닌 경우, C에서 사용하는 역슬래쉬 문자(`\')와 함께 사용하는 표기 대신 그대로 출력한다.

       -Q, --quote-name
              -N 옵션과 반대.

       -R, --recursive
              하위 경로와 그 안에 있는 모든 파일들도 나열한다.

       -S, --sort=size
              파일 크기가 가장 큰 것 부터 정열해서 나열한다.

       -U, --sort=none
              정열을 하지 않고, 디스크에 저장된 순서대로 보여준다. 이 옵션은 -f 옵션을 사용할 수 없다. 
              유닉스 용 ls -f는 -a 옵션은  가능하나,  -l, -s, -t 옵션이 불가능하기 때문이다.

       -X, --sort=extension
              파일 확장자 순으로 정열한다.  확장자가 없는 파일이 제일 먼저 나열된다.

       -1, --format=single-column
              한 줄에 한 파일씩 나열.

       -w, --width cols
              가로 길이를 값으로 지정한다.  기본적으로는 한 화면의 가로 값이된다.  
              또한 COLUMNS 환경 변수 값으로 지정할 수 있다.  초기값은 80이다.

       -T, --tabsize cols
              탭이 사용될 때, cols 값으로 지정한다.  초기값은 8이다.  0으로 지정되면 탭 문자는 무시된다.

       -I, --ignore pattern
              pattern 패턴으로 지정된 파일들은 목록에서 제외된다. 이때, 명령행에서 그 파일이 지정되면 물론 나열된다.

       --color, --colour, --color=yes, --colour=yes
              파일의 형태에 따라 그 파일의 색깔을 다르게 보여주는 기능한다.  
              자세한 이야기는 아래 DISPLAY COLORIZATION 부분을 참조한다.

       --color=tty, --colour=tty
              --color  옵션과  같으나,  단지  표준  출력에서만 색깔을 사용한다.  
              이 옵션은 칼라 제어 코드를 지원하지 않는 보기 풀그림을 사용하는 쉘 스크립트나, 명령행 사용에서 아주 유용하게 쓰인다.

       --color=no, --colour=no
              색깔 사용하지 않는다. 이것이 초기값이다.  이옵션은 색깔 사용을 이미 하고 있다면, 이 값을 무시한다.

       --help 도움말을 보여주고 마친다.

       --version
              버전 정보를 보여주고 마친다.

ls 명령어 기반의 유용한 예제.
ls -al
ls -alu
ls -alS
ls -alSr

[whchoi@CentOS153 ~]$ ls -al
total 16
drwx------. 11 whchoi whchoi  226 Mar  6 09:51 .
drwxr-xr-x.  3 root   root     20 Mar  5 04:02 ..
-rw-------.  1 whchoi whchoi 2859 Mar  6 12:29 .bash_history
-rw-r--r--.  1 whchoi whchoi   18 Oct 31 02:07 .bash_logout
-rw-r--r--.  1 whchoi whchoi  193 Oct 31 02:07 .bash_profile
-rw-r--r--.  1 whchoi whchoi  231 Oct 31 02:07 .bashrc
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 cat_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:49 cd_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 cp_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 file_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:50 ls_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 more_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 mv_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 rm_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 touch_test

# ls -al 현재 경로안의 모든 파일을 나열하고, 파일 형태, 사용권한, 하드링크 번호, owner 이름, group 이름, 파일 크기, 시간 (따로 지정하지  않으면  파일이  만들어진 날자다)을 자세하게 나열한다. 

[whchoi@CentOS153 ~]$ ls -alu
total 16
drwx------. 11 whchoi whchoi  226 Mar  6 09:52 .
drwxr-xr-x.  3 root   root     20 Mar  5 23:32 ..
-rw-------.  1 whchoi whchoi 2859 Mar  6 13:20 .bash_history
-rw-r--r--.  1 whchoi whchoi   18 Mar  5 23:40 .bash_logout
-rw-r--r--.  1 whchoi whchoi  193 Mar  6 09:49 .bash_profile
-rw-r--r--.  1 whchoi whchoi  231 Mar  6 09:49 .bashrc
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:55 cat_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:55 cd_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:55 cp_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:55 file_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:55 ls_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:55 more_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:55 mv_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:55 rm_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:55 touch_test

# ls -alu 파일, 디렉토리 생성 날짜 기준으로 출력한다.

[whchoi@CentOS153 ~]$ ls -alS
total 16
-rw-------.  1 whchoi whchoi 2859 Mar  6 12:29 .bash_history
-rw-r--r--.  1 whchoi whchoi  231 Oct 31 02:07 .bashrc
drwx------. 11 whchoi whchoi  226 Mar  6 09:51 .
-rw-r--r--.  1 whchoi whchoi  193 Oct 31 02:07 .bash_profile
drwxr-xr-x.  3 root   root     20 Mar  5 04:02 ..
-rw-r--r--.  1 whchoi whchoi   18 Oct 31 02:07 .bash_logout
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 cat_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:49 cd_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 cp_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 file_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:50 ls_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 more_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 mv_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 rm_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 touch_test

# ls -alS 파일,디렉토리 사이즈 크기 순으로 정렬하여 출력한다.

[whchoi@CentOS153 ~]$ ls -alSr
total 16
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 touch_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 rm_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 mv_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 more_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:50 ls_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 file_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 cp_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:49 cd_test
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 09:51 cat_test
-rw-r--r--.  1 whchoi whchoi   18 Oct 31 02:07 .bash_logout
drwxr-xr-x.  3 root   root     20 Mar  5 04:02 ..
-rw-r--r--.  1 whchoi whchoi  193 Oct 31 02:07 .bash_profile
drwx------. 11 whchoi whchoi  226 Mar  6 09:51 .
-rw-r--r--.  1 whchoi whchoi  231 Oct 31 02:07 .bashrc
-rw-------.  1 whchoi whchoi 2859 Mar  6 12:29 .bash_history

# ls-alSr 파일, 디렉토리 사이즈가 작은 순으로 정렬하여 출력한다.
# r 옵션은 기본 정렬의 역순으로 출력하게 한다.

기타 유용한 ls 명령 조합.

[whchoi@CentOS153 ~]$ ls -al /mnt
# 특정 디렉토리에 대한 ls 결과를 출력

[whchoi@CentOS153 ~]$ ls /home/whchoi/*_test
# 특정 문자열이 포함된 파일과 디렉토리를 출력

[whchoi@CentOS153 ~]$ ls /home/whchoi/*_test >> /home/whchoi/ls_test/out.txt
# ls 출력 결과물을 특정 파일로 생성.


touch

파일을 생성하고, 파일에 대한 시간 정보를 변경한다.

touch 명령에 대한 옵션 정리 요약.

       -a, --time=atime, --time=access, --time=use
              최근 파일 사용 시간(access time)만 바꾼다.

       -c, --no-create
              파일이 이미 존재하지 하고 있지 않다면, 새로 만들지 않는다.

       -d, --date time
              현재  시간 대신 지정한 time 갑을 사용하는데, 이것은 다양한 형식이 될 수 있다.  
              이 시간에는 월 이름, 지역, `am', `pm' 등이 포함될 수도 있다.

       -f     무시; 이 옵션은 BSD 버전과 호환을 위해 있을 뿐.

       -m, --time=mtime, --time=modify
              최근 파일 변경 시간(modify time)만 바꾼다.

       -r, --reference file
              현재 시간 대신 지정한 file의 시간으로 바꾼다.

       -t MMDDhhmm[[CC]YY][.ss]
              현재 시간 대신 지정한 시간(MM:달, DD:날, hh:시, mm:분, [CC]YY:년, SS:초)으로 바꾼다.

       --help 도움말 정보를 보여주고 마친다.

       --version
              버전 정보를 보여주고 마친다.

자주 사용하는 touch 명령 기반의 예제.

[whchoi@CentOS153 touch_test]$ touch test1.txt
# test1.txt 파일 생성

[whchoi@CentOS153 touch_test]$ touch test2.txt test3.txt
#test2.txt, test3,txt 파일 생성

[whchoi@CentOS153 touch_test]$ touch test4.txt -t 201903061450
#test4.txt 파일을 특정 시간으로 업데이트 생성.

[whchoi@CentOS153 touch_test]$ stat test4.txt
  File: ‘test4.txt’
  Size: 25              Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d      Inode: 134735168   Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  whchoi)   Gid: ( 1000/  whchoi)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2019-03-06 14:50:00.000000000 +0900
Modify: 2019-03-06 14:50:00.000000000 +0900
Change: 2019-03-06 15:11:31.372017639 +0900

# stat 명령을 통해 확인해 보면 변경 시간은 생성된 시간이지만, 
  마치 접근과 수정시간이 -t 옵션을 통해 접근과 수정된 것 처럼 보인다.

[whchoi@CentOS153 touch_test]$ touch -r test1.txt test4.txt
# -r 옵션을 통해 특정 파일의 속성과 Sync 시킨다. (접근 시간, 수정 시간)

[whchoi@CentOS153 touch_test]$ stat test1.txt  
  File: ‘test1.txt’
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: 802h/2050d      Inode: 134604723   Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  whchoi)   Gid: ( 1000/  whchoi)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2019-03-06 14:41:02.046102908 +0900
Modify: 2019-03-06 14:41:02.046102908 +0900
Change: 2019-03-06 14:41:02.046102908 +0900

[whchoi@CentOS153 touch_test]$ stat test4.txt
  File: ‘test4.txt’
  Size: 25              Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d      Inode: 134735168   Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  whchoi)   Gid: ( 1000/  whchoi)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2019-03-06 14:41:02.046102908 +0900
Modify: 2019-03-06 14:41:02.046102908 +0900
Change: 2019-03-06 15:13:29.931012113 +0900
Birth: -

#test4.txt 파일은 test1.txt의 접근시간, 수정시간과 Sync 된 것을 확인 할 수 있다.


cp (copy)

파일 및 디렉토리를 복사하며, 주로 리눅스에서는 간단한 백업 및 파일 변경 전 원본 보관용으로 사용된다.

cp 명령에 대한 옵션 정리 요약.

       -a, --archive
              원본 파일의 속성, 링크 정보들을 그대로 유지하면서 복사한다.  
              이 옵션은 -dpR 옵션과 같은 역활을 한다.

       -b, --backup
              복사할 대상이 이미 있어, 이것을 덮어쓰거나 지울경우에 대비해 백업본을 만든다.

       -d, --no-dereference
              만약 복사할 원본이 심블릭 파일이면, cp 명령은 그 심블릭 대상이 되는 파일을 복사한다. 
              이렇게 하지 않고, 단지  그  심블릭  파일  자체를 심블릭 정보와 함께 복사하고 할 때,
              이 옵션을 사용한다.

       -f, --force
              만약 복사 대상 파일이 이미 있으면 강제로 지우고 복사한다.

       -i, --interactive
              만약 복사 대상 파일 이미 있으면 사용자에게 어떻게 처리 할 것인지 물어보는 프롬프트를 나타나게 한다.

       -l, --link
              하드링크 형식으로 복사한다. 물론 하드 링크형식이기에 경로는 복사할 수 없다.

       -P, --parents
              원본  파일에  지정을  경로와  같이  했을 경우, 그 경로 그대로 복사 된다.  
              이때는 대상으로 사용될 수 있는 것은 경로 이름이어야만 한다.
              예를 들어, `cp --parents a/b/c existing_dir' 명령이 사용된다면, 
              이것의 결과는 existing_dir/a/b/c 이런 식이 된다.

       -p, --preserve
              원본 파일의 소유주, 그룹, 권한, 시간정보들이 그대로 보존되어 복사된다.

       -r     일반 파일이면, 그냥 복사되고, 만약 원본이 경로면, 그 경로와 함께 경로 안에 있는 모든 하위경로,
              파일들이 복사된다.

       -s, --symbolic-link
              경로가 아닌 일반 파일을 심블릭 링크 형식으로 복사한다.
              이때는  복사할  원본  파일  이름은  절대경로(`/'로  시작하는  경로)로  지정된
              파일이름이어야 한다.  심블릭 링크를 지원하지 않는 시스템에서 이옵션을 사용할 경우에는
              오류 메시지를 보여준다.

       -u, --update
              복사할 대상이 이미 있는데, 이 파일의 변경 날짜가 같거나, 더 최근의 것이면 복사하지 않는다.

       -v, --verbose
              각 파일의 복사 상태를 자세히 보여준다.

       -x, --one-file-system
              원복과 대상 파일의 파일 시스템이 다를 경우에는 복사하지 않는다.

       -R, --recursive
              경로를 복사할 경우에는 그 안에 포함된 모든 하위경로와 파일들을 모두 복사한다.

       --help 도움말을 보여주고 마친다.

       --version
              버전 정보를 보여주고 마친다.

       -S, --suffix backup-suffix
              만약에  복사  대상이  이미 있어, 백업을 해야할 경우에 
              그 백업 파일에서 사용할 파일 이름의 꼬리 문자를 지정한다.  
              이것은 이미 지정되어 있는 SIMPLE_BACKUP_SUFFIX 환경 변수를 무시하게 된다.
              만약 이 환경변수도 지정되어 있지 않고, 이 옵션도 사용하지 않는다면,  
              초기값으로 Emacs과 같이 `~' 문자를 사용한다.

       -V, --version-control {numbered,existing,simple}
              백업하는  방법을  지정하는데,  이  옵션은 이미 지정되어 있는 VERSION_CONTROL 환경 변수를 무시한다. 
              만약 이 환경 변수도 지정되어 있지 않고, 이 옵션도 사용하지 않는다면,
              초기값으로 `existing'을 사용한다.  
              여기서 사용하는 백업방법은 GNU Emacs의  `version-control'  값과 같다.
              아래와 같이 보다 짧은 지시어들도 사용될 수 있다.  여기서 사용될 수 있는 백업 방법은 아래와 같다.

              `t' 또는 `numbered'
                     항상 번호 있는 백업본을 만든다.

              `nil' or `existing'
                     대상 파일이 이미 있을 경우에만 백업본을 만든다.

              `never' or `simple'
                     간단한 백업을 만듬.

자주 사용하는 cp 명령 기반의 예제.

[whchoi@CentOS153 ~]$ touch ./cp_test/test{1..4}.txt
# 앞서 소개한 touch 명령과 shell 변수를 사용하여 한꺼번에 4개의 파일을 생성.

[whchoi@CentOS153 ~]$ ls -al ./cp_test/
total 0
drwxrwxr-x.  2 whchoi whchoi  74 Mar  6 15:37 .
drwx------. 14 whchoi whchoi 269 Mar  6 15:36 ..
-rw-rw-r--.  1 whchoi whchoi   0 Mar  6 15:37 test1.txt
-rw-rw-r--.  1 whchoi whchoi   0 Mar  6 15:37 test2.txt
-rw-rw-r--.  1 whchoi whchoi   0 Mar  6 15:37 test3.txt
-rw-rw-r--.  1 whchoi whchoi   0 Mar  6 15:37 test4.txt
[whchoi@CentOS153 ~]$ more ./cp_test/test1.txt
test1 text

[whchoi@CentOS153 cp_test]$ cp test1.txt backup1.txt
# cp 명령을 통해 test1.txt 파일의 복사본을 생성.

[whchoi@CentOS153 cp_test]$ diff test1.txt backup1.txt
# diff 명령을 통해 원본 파일과 복사본을 비교.

[whchoi@CentOS153 cp_test]$ more backup1.txt
test1 text
# more 명령을 통해 실제 복사본 내부의 값이 동일한지 확인.

[whchoi@CentOS153 cp_test]$ cp test1.txt backup1.txt ~/backup_cp/
# cp 명령을 통해 파일 2개를 특정 디렉토리에 복사.

[whchoi@CentOS153 cp_test]$ ls ~/backup_cp/
backup1.txt  test1.txt
# 정상적으로 다중 파일이 복사 되었는지 확인.

[whchoi@CentOS153 cp_test]$ cp -r ~/cp_test/ ~/backup_cp/
# 디렉토리와 하위 파일 전체를 특정 디렉토리 하위에 복사.

[whchoi@CentOS153 cp_test]$ ls -al ~/backup_cp/
total 12
drwxrwxr-x.  3 whchoi whchoi   57 Mar  6 15:45 .
drwx------. 15 whchoi whchoi 4096 Mar  6 15:40 ..
-rw-rw-r--.  1 whchoi whchoi   11 Mar  6 15:41 backup1.txt
drwxrwxr-x.  2 whchoi whchoi   93 Mar  6 15:45 cp_test
-rw-rw-r--.  1 whchoi whchoi   11 Mar  6 15:41 test1.txt
# 디렉토리 하위에 원본 디렉토리 "cp_test"가 복사 확인.

[whchoi@CentOS153 cp_test]$ ls -al
total 12
drwxrwxr-x.  2 whchoi whchoi   93 Mar  6 15:38 .
drwx------. 15 whchoi whchoi 4096 Mar  6 15:40 ..
-rw-rw-r--.  1 whchoi whchoi   11 Mar  6 15:38 backup1.txt
-rw-rw-r--.  1 whchoi whchoi   11 Mar  6 15:38 test1.txt
-rw-rw-r--.  1 whchoi whchoi    0 Mar  6 15:37 test2.txt
-rw-rw-r--.  1 whchoi whchoi    0 Mar  6 15:37 test3.txt
-rw-rw-r--.  1 whchoi whchoi    0 Mar  6 15:37 test4.txt
[whchoi@CentOS153 cp_test]$ ls -al ~/backup_cp/cp_test/
total 8
drwxrwxr-x. 2 whchoi whchoi 93 Mar  6 15:45 .
drwxrwxr-x. 3 whchoi whchoi 57 Mar  6 15:45 ..
-rw-rw-r--. 1 whchoi whchoi 11 Mar  6 15:45 backup1.txt
-rw-rw-r--. 1 whchoi whchoi 11 Mar  6 15:45 test1.txt
-rw-rw-r--. 1 whchoi whchoi  0 Mar  6 15:45 test2.txt
-rw-rw-r--. 1 whchoi whchoi  0 Mar  6 15:45 test3.txt
-rw-rw-r--. 1 whchoi whchoi  0 Mar  6 15:45 test4.txt
# 디렉토리 하위에 원본 디렉토리 "cp_test"가 정상적으로 5개가 복사.

[whchoi@CentOS153 cp_test]$ cp -rp ~/cp_test/ ~/backup_cp/
# cp를 통해 복제 되더라도, 속성은 복제 되지 않기 때문에 향후에 권한 등에 문제가 발생.
# -p 옵션을 통해서 속성까지 그대로 복제 가능

[whchoi@CentOS153 cp_test]$ ls -al ~/backup_cp/cp_test/   
total 8
drwxrwxr-x. 2 whchoi whchoi 93 Mar  6 15:38 .
drwxrwxr-x. 3 whchoi whchoi 57 Mar  6 15:45 ..
-rw-rw-r--. 1 whchoi whchoi 11 Mar  6 15:38 backup1.txt
-rw-rw-r--. 1 whchoi whchoi 11 Mar  6 15:38 test1.txt
-rw-rw-r--. 1 whchoi whchoi  0 Mar  6 15:37 test2.txt
-rw-rw-r--. 1 whchoi whchoi  0 Mar  6 15:37 test3.txt
-rw-rw-r--. 1 whchoi whchoi  0 Mar  6 15:37 test4.txt
# -p 옵션을 통해 복제 하게 되면, 파일 생성시간, 소유권 까지 그대로 복제됨.

[whchoi@CentOS153 cp_test]$ cp -r ~/cp_test/ ~/backup$(date '+_%Y%m%d')
[whchoi@CentOS153 ~]$ ls
backup_20190306  backup_cp  cat_test  cd_test  cp_test  file_test  ls_test  
[whchoi@CentOS153 ~]$ ls backup_20190306/
backup1.txt  test1.txt  test2.txt  test3.txt  test4.txt
# cp 명령을 사용할 때 변수들을 일부 적용하게 되면, 복제본을 만들때 날짜기반 디렉토리생성
# 작업시 유용한 명령


rm (remove)

파일 및 디렉토리를 삭제하는 명령어이며, 삭제에 따라 복구가 불가능 할 수도 있기 때문에 주의해서 사용하는 것이 좋다.
rmdir 이 디렉토리 삭제에 관여하는 것과 달리, rm은 옵션 명령에 따라 디렉토리와 내부의 파일 전체를 삭제 할 수 있는 강력한 명령이다.

rm 명령에 대한 옵션 정리 요약.

       -d, --directory
              `rmdir' 명령 대신에 `unlink'와 함께 경로를 지운다.  
              unlink하기 전에 그 경로가 비어있는지 확인하지 않고, 그냥 unlink 해버린다.  
              이렇기 때문에,  만약에  그  지워지는  경로 안에 파일 있다면, 그 파일들의 종속성문제가 생길 수 있다.
              (접근 불가능 현상, 미아 파일.)  
              이 옵션을 사용 한 후에서는 fsck(8)로 파일 시스템을 검사하기 바란다.
              이 옵션은 시스템 관리자만이 사용할 수 있다.

       -f, --force
              지울 파일이 없을 경우에 아무런 메시지를 보여주지 않고 그냥 넘어간다.
              이 옵션은 쉘 스크립트 안에서 사용될 때 유용하게 쓰인다.

       -i, --interactive
              각 파일을 하나씩 지울 것인지 사용자에게 일일이 물어본다.
              이때 `y' 나 `Y'를 눌러야지만 파일이 지워진다.

       -r, -R, --recursive
              일반 파일이면 그냥 지우고, 경로면, 그 하위 경로와 파일을 모두 지운다.

       -v, --verbose
              각각의 파일 지우는 정보를 자세하게 모두 보여준다.

       --help 도움말을 보여주고 마친다.

       --version
              버전 정보를 보여주고 마친다.

자주 사용하는 rm 명령 기반의 예제.

[whchoi@CentOS153 ~]$ cp -r ~/cp_test/ ~/rm_test/
[whchoi@CentOS153 ~]$ ls -al ~/rm_test/cp_test/
total 8
drwxrwxr-x. 2 whchoi whchoi 93 Mar  6 16:03 .
drwxrwxr-x. 3 whchoi whchoi 21 Mar  6 16:03 ..
-rw-rw-r--. 1 whchoi whchoi 11 Mar  6 16:03 backup1.txt
-rw-rw-r--. 1 whchoi whchoi 11 Mar  6 16:03 test1.txt
-rw-rw-r--. 1 whchoi whchoi  0 Mar  6 16:03 test2.txt
-rw-rw-r--. 1 whchoi whchoi  0 Mar  6 16:03 test3.txt
-rw-rw-r--. 1 whchoi whchoi  0 Mar  6 16:03 test4.txt
# rm 테스트를 위해, 앞서 생성한 cp_test 디렉토리를 복제한다.

[whchoi@CentOS153 cp_test]$ rm backup1.txt
# rm 명령을 통해 backup1.txt 파일을 삭제.
[whchoi@CentOS153 cp_test]$ ls
test1.txt  test2.txt  test3.txt  test4.txt
# backup1.txt 파일 삭제 확인.

[whchoi@CentOS153 cp_test]$ rm *
# 현재 디렉토리의 모든 파일을 삭제
[whchoi@CentOS153 cp_test]$ ls -al
total 0
drwxrwxr-x. 2 whchoi whchoi  6 Mar  6 16:10 .
drwxrwxr-x. 3 whchoi whchoi 21 Mar  6 16:03 ..
# 현재 디렉토리의 모든 파일이 삭제 되었는지 확인

[whchoi@CentOS153 rm_test]$ rm -r cp_test/
[whchoi@CentOS153 rm_test]$ ls -al
total 4
drwxrwxr-x.  2 whchoi whchoi    6 Mar  6 16:11 .
drwx------. 16 whchoi whchoi 4096 Mar  6 15:51 ..
# rm 명령의 기본에서는 디렉토리 삭제와 디렉토리 내부의 파일 삭제가 불가능.
# -r 옵션을 통해 디렉토리와 하위 파일 전체를 삭제.

mv(move)

파일 또는 디렉토리의 이름을 변경하는 명령어이며, 파일을 특정 디렉토리로 이동할 수도 있다. 

mv 명령에 대한 옵션 정리 요약.

       -b, --backup
              대상 파일이 이미 있어, 지워지는 것을 대비해 백업 파일을 만든다.

       -f, --force
              대상 파일이 이미 있어도 사용자에게 어떻게 처리할지를 묻지 않는다.

       -i, --interactive
              대상 파일이 이미 있어, 사용자에게 어떻게 처리할지를 물어 본다.  
              이때, `y'나 `Y'를 입력해 주어야지만 그 파일을 옮긴다.  (초기값)

       -u, --update
              대상 파일이 이미 있는데, 그 파일의 최근 변경시간(modification time)이 원본 파일보다 최근의 것이면
              파일을 옮기지 않는다.

       -v, --verbose
              파일 옮기는 과정을 자세하게 보여준다.

       --help 도움말을 보여주고 마친다.

       --version
              버전 정보를 보여주고 마친다.

       -S, --suffix backup-suffix
              만약에  이동  대상이  이미 있어, 
              백업을 해야할 경우에 그 백업 파일에서 사용할 파일 이름의 꼬리 문자를 지정한다.  
              이것은 이미 지정되어 있는 SIMPLE_BACKUP_SUFFIX 환경 변수를 무시하게 된다.
              만약 이 환경변수도 지정되어 있지 않고, 이 옵션도 사용하지 않는다면,  
              초기값으로 Emacs과 같이 `~' 문자를 사용한다.

       -V, --version-control {numbered,existing,simple}
              백업하는  방법을  지정하는데,  이  옵션은 이미 지정되어 있는 VERSION_CONTROL 환경 변수를 무시한다.
              만약 이 환경 변수도 지정되어 있지 않고, 이 옵션도 사용하지 않는다면,
              초기값으로 `existing'을 사용한다.
              여기서 사용하는 백업방법은 GNU Emacs의  `version-control'  값과 같다.
              아래와 같이 보다 짧은 지시어들도 사용될 수 있다.
              여기서 사용될 수 있는 백업 방법은 아래와 같다.

              `t' 또는 `numbered'
                     항상 숫자 있는 백업본을 만든다.

              `nil' or `existing'
                     대상 파일이 이미 있을 경우에만 백업본을 만든다.

              `never' or `simple'
                     간단한 백업을 만듬.

자주 사용하는 mv 명령 기반의 예제.

[whchoi@CentOS153 ~]$ cp -r ~/cp_test/ ~/mv_test/
# cp 명령을 통해 내부 파일들을 mv_test 디렉토리로 전체 복사.
[whchoi@CentOS153 cp_test]$ ls
backup1.txt  test1.txt  test2.txt  test3.txt  test4.txt

[whchoi@CentOS153 cp_test]$ mv test1.txt mv_test1.txt
# test1.txt 파일을 mv_test1.txt 파일로 변경
[whchoi@CentOS153 cp_test]$ ls
backup1.txt  mv_test1.txt  test2.txt  test3.txt  test4.txt
# 파일 이름이 변경되었는지 확인.

[whchoi@CentOS153 cp_test]$ mv test2.txt ~/mv_test/
# test2.txt 파일을 mv_test 디렉토리로 이동
[whchoi@CentOS153 cp_test]$ ls ~/mv_test/
cp_test  test2.txt
# 파일이 정상적으로 이동되었는지 확인

[whchoi@CentOS153 cp_test]$ mv test3.txt test4.txt ~/mv_test/
# mv 명령을 통해 여러개의 파일들을 특정 디렉토리로 이동.
[whchoi@CentOS153 cp_test]$ ls ~/mv_test/                    
cp_test  test2.txt  test3.txt  test4.txt
# 파일들이 정상적으로 이동되었는지 확인.

[whchoi@CentOS153 mv_test]$ mv mv_test/ rename_test/
# mv_test 디렉토리 이름을 rename_test 디렉토리 이름으로 변경.
[whchoi@CentOS153 mv_test]$ ls
rename_test  test2.txt  test3.txt  test4.txt
# 디렉토리 이름이 정상적으로 변경되었는지 확인.



 



공지사항