복사, 붙여넣기

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

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

첫번째 경로는 작업할 대상의 경로, 두번째 경로는 이동할 목적지 또는 변경할 이름이다.

여기서 두번째 경로가 이미 존재하는 디렉토리의 경로일 경우 디렉토리 안으로 이동되고 그렇지 않으면 이름이 변경된다.

  • mv [원본 파일 이름] [바뀔 파일 이름]
  • mv [원본 디렉토리 이름] [바뀔 디렉토리 이름]
  • mv [이동할 디렉토리 이름] [이동할 디렉토리가 도착할 디렉토리 이름]
  • mv [옮길 디렉토리의 부모 디렉토리/옮기고자 하는 디렉토리] [옮기는 위치]
  •  

이미 존재하는 파일의 이름 바꾸기

reports $ ls
Jul  Aug  Sep

$ cd Sep /* sep 디렉토리로 이동 */
$ ls /* Sep 디렉토리의 리스트 확인 */
finances.txt    performane.txt

/* performane.txt를 performane2.txt 파일로 변경해주자 */
$ mv performane.txt performane2.txt 
/* performane.txt = 작업할 대상, performane2.txt = 변경할 이름 */

$ ls 
finances.txt    performane2.txt

이미 존재하는 디렉토리의 이름 바꾸기

Sep $ cd ..
/* 한단계 위에 있는 부모 디렉토리로 이동 */
$ ls
/* 부모 디렉토리로 이동한 뒤 리스트 확인 */
Jul  Aug  Sep

$ mv Sep Oct
/* 이미 있는 Sep이라는 디렉토리를 Oct로 이름 변경 */
$ ls
Jul  Aug  Oct

디렉토리 옮기기

$ mv Jul Aug
/* Jul 디렉토리를 Aug 디렉토리 안으로 이동한다는 뜻 */
$ ls
Aug  Oct

$ ls Aug
Jul  finance.txt  performance.txt

옮긴 디렉토리 다시 꺼내오기

$ ls
Aug  Oct

$ ls Aug
Jul  finance.txt  performance.txt

$mv Aug/Jul .
/* Aug디렉토리 안에 있는 Jul디렉토리를 .(현재위치)로 옮기겠다 */

$ ls
Aug  Jul  Oct

$ ls Aug
finance.txt  performance.txt /* Jul 디렉토리 사라짐 */

+주의사항

mv 커맨드는 똑같은 이름의 파일이 목적지에 있을 경우 아.묻.따 덮어쓴다.

$ ls
reports  warning

$ cd warning
/* warning 디렉토리로 이동 */

warning $ ls /* 리스트 확인 */
test1.txt  test2.txt

$ cat test1.txt /* test1.txt 파일의 안을 전체 다 보여줘 */
test file 1%
$ cat test2.txt
test file 2%

$ mv test1.txt test2.txt
/*test1 파일을 test2 파일에 덮어쓴다.*/

$ ls
tset2.txt

$ cat test2.txt
test file 1%
/* tset1의 파일이 덮어써지면서 안에 test2에 있던 내용이 test1의 내용으로 덮어써졌다. */

이런 현상을 방지하고 싶다면 i(interactive)옵션을 활용하면 된다. 만약 충돌이 있으면 사용자에게 어떻게 할 것인지를 묻는 것.

$ touch test1.txt /* test1 파일 생성 */
$ ls /* 리스트 확인 */
test1.txt  test2.txt

$ mv -i test1.txt test2.txt /* i 옵션을 사용해서 mv 커맨드 사용 */
overwrite test2.txt? (y/n [n])
/* 파일을 덮어쓸 것인지 묻는 멘트가 출력 덮어쓰려면 y, 취소는 n을 입력하자 */

overwrite test2.txt? (y/n [n]) n /* 덮어쓰기 취소 */
not overwritten /* 덮어쓰지 않았다. */

$ ls
test1.txt  test2.txt

mv 커맨드를 안전하게 사용하고 싶다면 i 옵션을 꼭 활용하자

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

복사, 붙여넣기, 삭제 :cp, rm  (0) 2024.12.08
파일 내용 살펴보기  (0) 2024.12.07
CLI 텍스트 에디터 : Vim  (1) 2024.12.07
디렉토리와 파일 생성하기  (0) 2024.12.07
필수 디렉토리  (1) 2024.12.07
cat less head tail
파일을 조회할 때 굉장히 자주 사용하는 커맨드, 한꺼번에 출력 파일 내용을 페이지 단위로 나눠서 보여준다. 파일의 시작 부분 확인 파일의 끝 부분 확인
cat hello_world.txt less hello_world.txt head hello_world.txt tail hello_world.txt
내용을 전체 다 볼 수 있다. ⬆️,⬇️ : 한 줄 씩 이동가능
space, f : 다음페이지로
b : 이전페이지로
G : 마지막 페이지
g : 첫 페이지
q : 종료
파일의 처음 10줄이 보인다. 파일의 마지막 10줄이 보인다.
concatenate : 이어붙이다 파일 내용이 엄청 길다면 less로 나누어 보면 된다. head - n 5 hello_world.txt
파일의 처음 5줄이 보인다.
tail - 8 hello_world.txt
파일의 마지막 8줄이 보인다.
아규먼트를 이어서 써줄 수 있다.   출력할 줄 개수를 n 옵션의 아규먼트로 넘겨주면 된다.  

 

+ Recent posts