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' 라고 되어있죠? ---------------------------------------------------
|
[목차] |