"CentOS cp 강제로 덮어쓰기"의 두 판 사이의 차이

잔글 (봇: Jmnote bot의 2017-06-26T16:50:28Z 에 작성한 266924 판으로 되돌림)
잔글 (봇: 자동으로 텍스트 교체 (-source +syntaxhighlight))
 
8번째 줄: 8번째 줄:


==문제상황==
==문제상황==
<source lang='console'>
<syntaxhighlight lang='console'>
[root@zetawiki ~]# echo hello > 1.txt
[root@zetawiki ~]# echo hello > 1.txt
[root@zetawiki ~]# echo world > 2.txt
[root@zetawiki ~]# echo world > 2.txt
[root@zetawiki ~]# cp 1.txt 2.txt
[root@zetawiki ~]# cp 1.txt 2.txt
cp: overwrite `2.txt'?
cp: overwrite `2.txt'?
</source>
</syntaxhighlight>
:→ 1.txt를 2.txt로 복사하려고 하는데 overwrite 하겠냐고 물어본다.  
:→ 1.txt를 2.txt로 복사하려고 하는데 overwrite 하겠냐고 물어본다.  
수작업의 경우에는 y를 눌러주면 되지만, 스크립트를 통한 작업의 경우에는 키보드 입력을 요구하므로 스크립트 실행이 중단되는 문제가 있다.
수작업의 경우에는 y를 눌러주면 되지만, 스크립트를 통한 작업의 경우에는 키보드 입력을 요구하므로 스크립트 실행이 중단되는 문제가 있다.
<source lang='console'>
<syntaxhighlight lang='console'>
[root@zetawiki ~]# cp -f 1.txt 2.txt
[root@zetawiki ~]# cp -f 1.txt 2.txt
cp: overwrite `2.txt'?  
cp: overwrite `2.txt'?  
</source>
</syntaxhighlight>
:→ -f 옵션을 주어도 소용없음
:→ -f 옵션을 주어도 소용없음


==원인==
==원인==
*cp에 대한 [[alias]]로 -i 옵션<ref>--interactive, 덮어쓸 때 대화식 진행</ref>이 있어서 그렇다
*cp에 대한 [[alias]]로 -i 옵션<ref>--interactive, 덮어쓸 때 대화식 진행</ref>이 있어서 그렇다
<source lang='console'>
<syntaxhighlight lang='console'>
[root@zetawiki ~]# alias | grep cp
[root@zetawiki ~]# alias | grep cp
alias cp='cp -i'
alias cp='cp -i'
</source>
</syntaxhighlight>
*alias를 주석처리하거나 unalias하는 것도 방법이겠지만, 필자는 아래 2가지 방법을 추천한다.
*alias를 주석처리하거나 unalias하는 것도 방법이겠지만, 필자는 아래 2가지 방법을 추천한다.


==해결방법 1: 역슬래시 추가==
==해결방법 1: 역슬래시 추가==
아래와 같이 cp 앞에 역슬래시를 넣으면 alias 대신 원래의 명령어가 실행된다.
아래와 같이 cp 앞에 역슬래시를 넣으면 alias 대신 원래의 명령어가 실행된다.
<source lang='console'>
<syntaxhighlight lang='console'>
[root@zetawiki ~]# \cp 1.txt 2.txt
[root@zetawiki ~]# \cp 1.txt 2.txt
[root@zetawiki ~]# cat 2.txt
[root@zetawiki ~]# cat 2.txt
hello
hello
</source>
</syntaxhighlight>


==해결방법 2: 전체경로 사용==
==해결방법 2: 전체경로 사용==
<source lang='console'>
<syntaxhighlight lang='console'>
[root@zetawiki ~]# /bin/cp 1.txt 2.txt
[root@zetawiki ~]# /bin/cp 1.txt 2.txt
[root@zetawiki ~]# cat 2.txt
[root@zetawiki ~]# cat 2.txt
hello
hello
</source>
</syntaxhighlight>


==같이 보기==
==같이 보기==

2020년 11월 2일 (월) 00:55 기준 최신판

1 개요[ | ]

리눅스 cp 강제로 덮어쓰기
리눅스 cp: overwrite 질문 무시하기
리눅스 cp alias 무시하기
우분투에는 cp에 대한 alias가 없어서 이러한 문제가 없음

2 문제상황[ | ]

[root@zetawiki ~]# echo hello > 1.txt
[root@zetawiki ~]# echo world > 2.txt
[root@zetawiki ~]# cp 1.txt 2.txt
cp: overwrite `2.txt'?
→ 1.txt를 2.txt로 복사하려고 하는데 overwrite 하겠냐고 물어본다.

수작업의 경우에는 y를 눌러주면 되지만, 스크립트를 통한 작업의 경우에는 키보드 입력을 요구하므로 스크립트 실행이 중단되는 문제가 있다.

[root@zetawiki ~]# cp -f 1.txt 2.txt
cp: overwrite `2.txt'?
→ -f 옵션을 주어도 소용없음

3 원인[ | ]

  • cp에 대한 alias로 -i 옵션[1]이 있어서 그렇다
[root@zetawiki ~]# alias | grep cp
alias cp='cp -i'
  • alias를 주석처리하거나 unalias하는 것도 방법이겠지만, 필자는 아래 2가지 방법을 추천한다.

4 해결방법 1: 역슬래시 추가[ | ]

아래와 같이 cp 앞에 역슬래시를 넣으면 alias 대신 원래의 명령어가 실행된다.

[root@zetawiki ~]# \cp 1.txt 2.txt
[root@zetawiki ~]# cat 2.txt
hello

5 해결방법 2: 전체경로 사용[ | ]

[root@zetawiki ~]# /bin/cp 1.txt 2.txt
[root@zetawiki ~]# cat 2.txt
hello

6 같이 보기[ | ]

7 주석[ | ]

  1. --interactive, 덮어쓸 때 대화식 진행

8 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}