본문 바로가기
# Computational Chemistry/Shell script & Linux command

[L] #3. cp

by 푸른삿포로 2024. 9. 11.
반응형

3. cp

리눅스를 사용하다 보면 어떤 파일을 복사해야 할 때가 있다. 이 때 사용하는 커맨드가 바로 cp이다. cpcopy의 약자인 듯 하다.

  1. 기본 사용법

기본 사용법은 다음과 같다.

cp [option] $1 $2

 

  이해가 안되는 분들을 위해 해석해 보자면

복사 [이 옵션으로] 이것을 이것으로

  순서라고 보시면 되겠다.

  옵션을 사용하지 않는다면, 옵션을 빼고 진행하면 되겠다.

첫 시간에 배운 ls를 이용해보았다. 1.txt가 바탕화면에 존재한다. 이제 이것을 복사해 보자.

복사를 진행한 후 리스트를 확인해보았다. 2.txt가 생긴 모습이다. 열어서 확인해보자. vi를 이용해서 열어보면

12의 내용물이 모두 같다는 것을 알 수 있겠다.

 

2. 그럼 이제 옵션을 써보자.

cp 역시 여러가지 옵션이 있다. 모두 설명하기는 좀 귀찮고 몇 가지 주요 옵션에 대해서 설명해도록 하겠다. 옵션에 대한 도움말은 리눅스에도 있고, 요즘은 인터넷이나 챗지피티에 검색해도 나오니깐 한글자 한글자 직접 해보는 것을 추천한다.

GPT 형님이 만들어주신 표이다. 각각에 대한 간단한 설명과 예시를 들어보겠다.

 

2-1) -r

디렉토리와 그 안의 파일 및 하위 디렉토리를 재귀적으로 복사한다.

  재귀적이라는 말 자체가 생소해서 잘 이해가 안되고 뻑뻑함을 느낄 수 있는데, 겪을 수 있는 상황은 다음과 같다.

  위에서 보인 예시에서는 txt 파일을 복사하였으나, 가끔 우리는 디렉토리(폴더)를 복사하고 싶을 수도 있다. 이 경우 cp를 사용해보면

이렇게 오류 메시지가 뜬다.

그 이유는 본래 cp는 내가 명령을 내린 $1$2로 복사해주어야 하는데, 그 내부에 다른 무언가가 존재한다면 이에 대해서는 명령을 내릴 수 없기 때문이다.

  -r은 이것들도 모두 하나의 뭉탱이라고 생각하고 한번에 복사를 때려달라는 말이 된다.

  보이는 바와 같이 복사가 잘 되었고, 디렉토리 내부의 파일 역시 같음을 알 수 있다.

 

2-2) -i

-iinteractive에서 따왔으며, 덮어쓰기 전 사용자에게 확인을 요청하는 옵션이다.

cp 명령어는 내가 원하는 이름의 파일이 이미 존재함에도 이를 덮어쓰는데, 가끔 실수를 하면 원래의 파일들이 날아가버리는 불상사가 발생하기도 한다. 이를 막기 위해 존재하는 옵션이다.

  만일 내가 1.txt 파일을 2.txt 파일로 복사하고 싶은데, 디렉토리 내에 이미 2.txt가 존재한다고 가정해 보자.

이렇게 덮어써도 되는지에 대한 경고문구가 나오게 되는것이다.

  2-3) -n

  그런데 하고 있는 업무가 중요한 업무라서, 절대로 복사를 하면 안되는 경우엔 덮어지지 않게 만들어야 할 수도 있다. 이 때 사용하는 옵션이 바로 n이다.

폴더 내부에 이미 2.txt가 있으므로, 이 명령은 진행되지 않았다고 볼 수 있다.

  3. 마치며..

벌써 세 번째 커맨드를 학습하고 있다. cp 역시 많이 사용되는 현역 커맨드이니만큼, 익숙해져서 나의 것으로 만들 수 있기를 바란다.

  실제로 이 글을 쓸 때 커맨드를 고르는 기준은 쉬운 것 부터도 있지만 아무래도 많이 사용하는 것부터 가지고 오는 느낌이 든다.

 

Edited 2024.09.11.
Edited by 푸른삿포로

반응형

'# Computational Chemistry > Shell script & Linux command' 카테고리의 다른 글

[L] #2. cd  (0) 2024.03.26
[L] #1. ls  (1) 2024.03.20
[L] #0. Shell script & Linux command 목차  (0) 2024.03.20

댓글