🦇 Linux

리눅스 기초 명령어8 - cp, rm

ji-hyun 2021. 7. 13. 22:44

< cp >

 

cp /etc/a* . : .(점) 이라는 것은 현재 위치를 의미하며, 현재 위치로 a로 시작하는 것들을 복사하라는 의미이다.

 

허가거부는 무시하자.

 

ls 명령을 하면 a로 시작하는 파일들이 복사된 것을 볼 수 있다.

 

 

 

 

 

 

 

 

< cp의 -r 옵션 >

 

 

이번엔 b로 시작하는 파일들을 복사해온 뒤 ls 명령을 했을 때

-> bashrc 라는 파일 하나가 추가된 것을 볼 수 있다.

 

 

여기서 -r 옵션을 추가적으로 주면 무슨 일이 일어날까? ls 명령으로 확인해보면.. 파란색 글씨들이 추가되었다.

파란색 글씨들은 디렉터리이다.

 

즉, -r 옵션은 디렉터리까지 모두 복사해오는 옵션이다.

 

 

 

 

 

 

 

 

 

< rm의 -r 옵션 > 

 

 

rm a* : a로 시작하는 파일들을 제거한다.

rm b* : b로 시작하는 파일들을 제거한다.

 

rm 할 경우, 디렉터리는 삭제할 수 없다고 뜬다. 이런 경우 역시 -r 옵션을 주면 디렉터리까지 삭제 가능하다.

-> ( rm -r b* )

 

 

 

 

 

 

 

+ ) 짜투리 팁

 

cp /etc/passwd passwd.txt

-> /etc/passwd 라는 파일을 현재 디렉터리의 passwd.txt 라는 파일로 복사한다.

 

 

 

 

 

 

 

 

< cp 의 -i 옵션, -f 옵션 >

 

a의 파일 크기를 주목해보자

 

ll 명령을 했을 때, a 라는 파일은 크기가 0이었다.

그 후 cp /etc/bashrc  a 라는 명령을 했을 때 파일 크기가 2853으로 바뀐 것을 볼 수 있다. 덮어씌어진 것이다.

 

 

 

 

 

 

 

이런 현상을 미리 방지하려면 -i 옵션을 주면 된다.

-i 옵션을 추가해버리면 a 를 덮어써도 되냐는 질문이 나온다. 이때 y, n 으로 답하여 결정을 해주면 된다.

 

 

(중요한 파일들이 있을 경우, 덮어쓰여지는 것을 방지하기 위해서 -i 옵션을 추가해주면 좋다.)

 

 

 

 

 

 

 

 

위와 반대로 강제로 덮어쓰기 옵션이 있다. -f 옵션이다.

-f 옵션을 주게 되면 물어보지도 않고 덮어쓰여지게 된다. a2의 파일 크기를 주목해보자. 156 에서 2858 으로 바뀐 것을 볼 수 있다.

 

 

 

 

 

<정리>

-i : 덮어쓰기? 물어본다. interactive(상호작용)

-f : 안물어본다. force(강제)

 

 

 

 

 

 

 

 

< cp 특징 : 디렉터리이면 그 아래로 들어간다>

 

 

① d2 라는 디렉터리를 만든다.

cp /etc/bashrc  d2 명령을 한다. 

ls d2 명령을 하여 d2 안을 확인해보면 bashrc 라는 파일이 생성됨을 알 수 있다..

-> 기존 d2가 Directory 라면 그 하위로 파일이 들어간다.

 

cp /etc/bashrc  d2/b30 명령을 한다.

ll d2 명령을 하여 d2 안을 확인해보면 b30과 bashrc 존재한다. (b30이 생성)

-> d2 밑에 b30 이름으로 복사하라는 뜻

 

 

 

 

 

 


 

< cp 특징 정리 > 

 

  • 이미 존재하면 덮어쓸 수 있다.
  • 디렉터리이면 그 아래로 들어간다.
  • 복사하면서 이름 변경도 가능하다.

 

 

 

< 추가적으로 알아두기 >

 

rm a* : a 로 시작하는 것 지우기

rm [b-t]* : b부터 t까지 범위를 정해줌. 이 단어로 시작하는 것 지우기

rm [^xyz]* : xyz 시작하는 것 제외하고 지우기

ls a* : a로 시작하는 것 보여주기

rm [^a]* -f : 묻지 않고 강제로 a로 시작하는 것 제외하고 지우기

 

 

 

 

< 옵션 정리 >

 

-i : interactive

-f : force

-r : recursive (디렉터리 포함)

cp -r : 디렉터리까지 포함해서 복사해라

rm -r : 디렉터리까지 포함해서 제거해라

 

cp -r /etc eee : eee라는 이름으로 디렉터리까지 모두 복사해오기