복사, 붙여넣기

cp(copy) 커맨드는 아규먼트로 파일이나 디렉토리 경로 두 개를 받는다.

첫번째 아규먼트는 복사할 대상의 경로, 두번째 아규먼트는 복사할 위치이다.

여기서 두번째 아규먼트 이미 존재할 경우 그 안으로 복사, 아니라면 두번째 아규먼트 이름을 가진 파일 또는 디렉토리가 생성된다.

  • cp [원본 파일 이름] [옮길 파일 이름]
  • cp [원본 파일 위치/원본 파일 이름] [옮길 파일 위치/옮길 파일 이름]
  • cp [원본 파일 이름] [옮길 파일 위치]
  • cp -r [디렉토리명] [옮길 파일 위치]

동일 디렉토리 안에서 파일 복사하기

reports $ ls /* reports 디렉토리가 현재위치, 리스트를 보여줘 */
Aug  Jul  Oct  Sep

$ cd Jul /* Jul 디렉토리로 이동 */
$ ls /* 리스트 보여줘 */
finances.txt  performance.txt

$ cat finances.txt /* finance 파일 내용 보여줘 */
2024 Jul Finance Report%
$ cat performance.txt /* performance 파일 내용 보여줘 */
2024 Jul Performance Report% 

$ cp finances.txt finances2.txt
/* cp = 복사하겠다. finances파일을 finances2 라는 이름으로 */

$ ls /* 리스트를 확인해보니 복사가 잘 되어있다. */
finances.txt  finances2.txt  performance.txt

$cat finances2.txt /* finances2 파일의 내용을 살펴보자 */
2024 Jul Finance Report%

다른 디렉토리로 파일 복사하기

/* Jul 디렉토리 안에 있는 상태에서 Aug로 파일을 복사해보자. */

Jul $ ls ../Aug
finances.txt  performance.txt

cp 커맨드는 mv 커맨드와 비슷하게 목적지에 똑같은 이름의 파일이 있으면 덮어쓴다. 덮어쓰기를 방지하고 싶다면 이 때도 i 옵션을 사용하면 된다.

Jul $ cp -i finances.txt ../Aug
/* Jul 안에 있는 finances 파일을 Aug 디렉토리로 복사하라는 의미 */
overwrite ../Aug/finances.txt? (y/n [n])?
/* 파일을 덮어쓸 것인지 묻는다. */

디렉토리 복사하기

Jul $ cd .. /* Jul 디렉토리에서 부모 디렉토리로 이동 */
reports $ ls
Aug  Jul  Oct  Sep
$ cp Jul Jul_copy /* Jul 디렉토리를 Jul_copy로 복사하기 */
cp: Jul is a directory (not copied)
/* 복사가 되지 않는다는 멘트가 출력된다. */

디렉토리를 복사할 땐 r(recursive)옵션을 사용해야 한다.

$ cp -r Jul Jul_copy
$ ls
Aug  Jul  Jul_copy  Oct  Sep

삭제

rm(remove)커맨드는 삭제할 파일 또는 디렉토리 경로를 아규먼트로 받는데 경로를 여러개 줄 수 있다.

  • rm [지울 파일 이름]
  • rm -r [지울 디렉토리명]

파일 지우기

$ ls
reports  warning
$ cd warning
$ ls
test1.txt  test2.txt

$ rm test1.txt
$ ls
text2.txt

디렉토리 지우기

warning $ cd ..
$ ls
reports  warning

$ rm warning
rm: warning: is a directory
/* 디렉토리를 지우려고 하니 오류가 발생한다. */

복사 할 때와 마찬가지로 디렉토리를 지울 때는 r 옵션을 사용해야 한다.

$ rm -r warning
$ ls
reports

mv나 cp는 목적지에 똑같은 이름을 가진 파일이나 디렉토리가 있으면 그걸 덮어쓰기 때문에 덮어쓰기 전에 확인을 하기 위해서 i 옵션을 사용했다. rm에도 i 옵션이 있는데 각 파일을 지우기 전에 확실히 지울것인지를 물어본다.

$ cd reports
$ ls
Aug  Jul  Jul_copy  Oct  Sep

$ rm -ri Jul_copy
/* 확실히 지울건지 묻는 i 옵션과, 디렉토리를 지우기 위한 r 옵션을 같이 사용했다. */
examine files in directory Jul_copy? y
/* Jul_copy 안에 있는 파일들을 하나씩 살펴볼건지 묻는다. yes를 하고 살펴보면 */

remove Jul_copy/finance2.txt? y
/* 각 파일을 지울것인지 묻는다. */
remove Jul_copy/performance.txt? y
remove Jul_copy/finance.txt? y
remove Jul_copy? y /* 디렉토리 자체를 지울건지도 묻는다. */

$ ls
Aug  Jul  Oct  Sep

디렉토리를 지울 때는 안에 뭐가 있는지 알고 지우기 때문에 i옵션이 그렇게 유용하지는 않지만 파일 하나씩 확인하며 지우고 싶다면 i 옵션을 사용할 수 있다. 반대로 파일을 지울것인지 확인하지 않고 바로 지우는 f옵션도 있다. 예를들어 읽기 전용 파일을 지울 때는 보통 이 파일을 지울 것인지 물어보는데 f옵션을 사용하면 물어보지 않고 바로 지운다.

그래서 특히 디렉토리를 지울 때는 rm -rf path/to/dir 등 r과 f 옵션을 같이 쓰는 경우가 많다.

'코린이 개념잡기 > 유닉스 커맨드' 카테고리의 다른 글

옮기기 , 이름 변경하기 : mv  (0) 2024.12.07
파일 내용 살펴보기  (0) 2024.12.07
CLI 텍스트 에디터 : Vim  (1) 2024.12.07
디렉토리와 파일 생성하기  (0) 2024.12.07
필수 디렉토리  (1) 2024.12.07

+ Recent posts