Fundamentals

본문 바로가기
사이트 내 전체검색


RedHat Linux >> Fundamentals of the GNU/Linux
[목차]
제3장 리눅스 명령어

    6. 파일 복사하기 - cp


dos에서도 그랬겠지만 파일을 복사한다는 것은 가장 기본적인 일이죠? 아마 dos를 사용해 본 사람은 'copy', 'xcopy' 라는 명령어를 알고 있을 것입니다. 둘 다 파일을 복사할 때 사용하는 명령어인데 디렉토리까지 한번에 복사하려면 'xcopy' 라는 명령어만 가능했을 것입니다. 리눅스에서 파일을 복사할 때는 'cp' 라는 명령어를 사용합니다. 이제 이 명령에 대해 알아볼텐데 기능을 알게 되면 dos의 'copy'명령보다 더 훌륭하다는 것을 느낄 것입니다. 그러면 가장 기본적인 사용 방법에 대해서 알아봅시다.

먼저 현재 어떤 파일이 있는지 그 내용을 봅시다.

[root@leelab /root]# ls -p

gnustep/ xrootenv.0 nsmail/ test.txt

[root@leelab /root]#

여기에 있는 파일 중 test.txt 파일을 test1.txt라는 파일로 복사합니다.

[root@leelab /root]# cp test.txt test1.txt

[root@leelab /root]# ls -p

gnustep/ xrootenv.0 nsmail/ test.txt test1.txt

[root@leelab /root]#

dos에서 사용하는 방법과 차이가 크지 않죠? test.txt 파일을 루트 디렉토리에 복사합니다.

[root@leelab /root]# cp test.txt /

[root@leelab /]# ls -p

bin/ etc/ lost+found/ proc/ test.txt var/

boot/ home/ misc/ root/ tmp/

dev/ lib/ mnt/ sbin/ usr/

[root@leelab /]#

같은 이름으로 파일을 복사했기 때문에 '/' 다음에 파일 이름을 지정하지 않은 것입니다. test1.txt라는 파일 이름으로 루트에 복사하려면 'cp test.txt /test1.txt' 라고 사용하면 될 것입니다.

이번에는 여러 파일을 한꺼번에 복사하는 방법을 알아보겠습니다. 물론 와일드 문자를 이용해서 여러 파일을 한꺼번에 복사하는 방법도 있지만 그 방법을 이용하지 않고 해 보도록 하겠습니다.

[root@leelab /root]# cp test.txt test1.txt /

[root@leelab /]# ls -p

bin/ etc/ lost+found/ proc/ test.txt usr/

boot/ home/ misc/ root/ test1.txt var/

dev/ lib/ mnt/ sbin/ tmp/

[root@leelab /]#

dos에서 사용하는 'copy' 라는 명령어로는 위와 같이 사용할 수 없습니다. 여러 파일을 동시에 복사할 때는 마지막에 디렉토리명이 와야 합니다. 디렉토리가 존재하지 않으면 어떻게 될까요? 아마 파일로 인식하기 때문에 에러가 발생할 것입니다. 마지막에 파일이 오게 되면 앞에 지정한 여러 파일을 동시에 한 파일에 복사할 수 없기 때문에 에러가 발생하는 것은 당연할 것입니다.

[root@leelab /root]# cp test.txt test1.txt test2

cp: copying multiple files, but last argument (test2) is not a directory

try `cp --help' for more information.

[root@leelab /root]#

지금 까지 'cp'라는 명령어의 기본 사용 방법을 알아보았으니 이번에는 이 명령어와 같이 사용할 수 있는 옵션에는 어떤 것이 있는지 알아봅니다.

먼저 'b'라는 옵션의 사용 예입니다.

[root@leelab /root]# cp -b test.txt test1.txt

[root@leelab /root]# ls -p

gnustep/ xrootenv.0 nsmail/ test.txt test1.txt test1.txt~

[root@leelab /root]#

'b' 라는 옵션이 어떤 역할을 하는지 짐작이 갑니까? 바로 복사할 파일이 이미 존재하면 이 파일을 백업받는 역할을 하는 것입니다. 위에 보면 알겠지만 'test1.txt~'라는 파일이 생성되었죠? 이 옵션은 이미 파일이 존재하는지 모르고 복사할 경우를 대비해서 사용하는 것입니다. 이번에는 이와 유사한 다른 옵션을 알아봅시다.

'i' 라는 옵션을 사용하면 복사될 파일이 존재할 경우 덮어 쓸 것인지 사용자에게 물어보는 역할을 하게 됩니다

[root@leelab /root]# ls -p

gnustep/ xrootenv.0 nsmail/ test.txt test1.txt

[root@leelab /root]# cp -i test.txt test1.txt

cp: overwrite `test1.txt'? y

[root@leelab /root]# ls -p

gnustep/ xrootenv.0 nsmail/ test.txt test1.txt

[root@leelab /root]#

이번에는 디렉토리까지 복사하는 방법을 알아봅니다. 디렉토리까지 복사하는 방법은 옵션 'r'을 사용하면 됩니다. 이 옵션을 사용하면 복사할 디렉토리에 있는 서브 디렉토리까지 한꺼번에 복사됩니다.

[root@leelab /root]# ls -p

gnustep/ xrootenv.0 nsmail/ test.txt

[root@leelab /root]# ls -p gnustep

defaults/ library/

[root@leelab /root]# cp -r gnustep test1

[root@leelab /root]# ls -p test1

defaults/ library/

[root@leelab /root]#

이 예제의 의미를 알겠습니까? 'gnustep'라는 디렉토리를 그 서브 디렉토리까지 모두 복사하는 과정을 나타내고 있습니다.

[참고]

--------------------------------------------

'i' 옵션을 사용하지 않고 그냥 'cp' 명령어를 사용해도 마치 옵션을 붙여서 사용한 것과 같은 효과를 보는 사람도 있을 것입니다.

[root@leelab /root]# ls -p

gnustep/ xrootenv.0 nsmail/ test.txt test1/ test1.txt

[root@leelab /root]# cp test.txt test1.txt

cp: overwrite `test1.txt'? y

[root@leelab /root]#

이것은 기본적으로 'cp'명령어를 사용할 때 'i' 옵션을 붙여서 사용한 것과 똑같이 되도록 만들었기 때문인데 이는 레드햇 사용자에 대한 것입니다.

[root@leelab /root]# cat .bashrc

# .bashrc

# user specific aliases and functions

# (사용자 정의 앨리어스와 함수 정의)

alias rm='rm -i'

alias cp='cp -i'

alias mv='mv -i'

.

.

# source global definitions

# (시스템 공용 정의 포함시키기)

if [ -f /etc/bashrc ]; then

. /etc/bashrc

fi

[root@leelab /root]#

위에 보면 알겠지만 cp='cp -i' 라고 되어있죠?

---------------------------------------------------

[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.