Programing

확인없이 cp를 강제로 덮어 쓰는 방법

crosscheck 2020. 10. 3. 09:59
반응형

확인없이 cp를 강제로 덮어 쓰는 방법


cp명령 을 사용 하고 강제로 덮어 쓰려고합니다.

을 (를) 시도 cp -rf /foo/* /bar했지만 여전히 각 덮어 쓰기를 확인하라는 메시지가 표시됩니다.


할 수 yes | cp -rf xxx yyy있지만 내 직감에 따르면 루트로 수행 .bashrc하거나 to .profile의 별칭이 cp있으면 cp -i대부분의 최신 시스템 (주로 RH 파생물)이 루트 프로파일에 대해 수행합니다.

alias명령 프롬프트에서 실행 하여 기존 별칭 which cp을 확인 하거나 cp.

정의 된 별칭이있는 경우 실행 unalias cp하면 현재 세션에서 해당 별칭이 제거됩니다. 그렇지 않으면 셸 프로필에서 제거 할 수 있습니다.

별칭을 일시적으로 무시하고 \예를 들어 접두사를 붙여 별칭이 지정되지 않은 명령 버전을 사용할 수 있습니다.\cp whatever


이것은 아마도 cp이미와 같은 별칭이 지정 되어 있기 때문일 것입니다 cp -i. cp직접 전화 는 작동해야합니다.

/bin/cp -rf /zzz/zzz/* /xxx/xxx

이 문제를 해결하는 또 다른 방법은 다음 yes명령 을 사용하는 것입니다 .

yes | cp -rf /zzz/zzz/* /xxx/xxx

다른 답변의 일부가 언급했듯이, 당신은 아마 매핑하는 별칭 어딘가에 사용 cpcp -i또는 이와 유사한합니다. 백 슬래시를 앞에 붙여 별명없이 명령을 실행할 수 있습니다. 귀하의 경우에는

\cp -r /zzz/zzz/* /xxx/xxx

백 슬래시는 호출 한 모든 별칭을 일시적으로 비활성화합니다 cp.


당신은 아마 매핑 별칭 곳이 cpcp -i; 기본 설정에서는 cp덮어 쓸지 묻지 않기 때문입니다 . .bashrc, .profile등을 확인하십시오 .

cp 맨 페이지 참조 : -i매개 변수가 지정된 경우에만 cp실제로 덮어 쓰기 전에 메시지 가 표시됩니다 .

다음 alias명령을 통해 확인할 수 있습니다 .

$ alias
alias cp='cp -i'
alias diff='diff -u'
....

별칭을 정의 해제하려면 다음을 사용하십시오.

$ unalias cp

다른 답변에서 언급했듯이이 cp별칭이 cp -i.

명령 \앞에 를 추가하여 cp별칭없이 사용할 수 있습니다 .

\cp -fR source target

기본적으로 cp별칭은 cp -i. 확인하고 입력 alias하면 다음과 같은 것을 볼 수 있습니다.

alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'

이 문제를 해결하려면 /bin/cp /from /to대신 명령을 사용하십시오.cp /from /to


cp -u ...
cp --update ...

또한 작동합니다.


cp 일반적으로 이렇게 별칭이 지정됩니다

alias cp='cp -i'   # i.e. ask questions of overwriting

덮어 쓰기를 원할 경우 다음을 사용하십시오.

/bin/cp <arguments here> src dest

나는 이것을 찾았다

'cp' -rf * /data/danalonso_testing/target/

출처 : https://superuser.com/questions/358843/how-to-replace-all-the-contents-from-one-folder-with-another-one/358851


이 명령도 사용할 수 있습니다.

cp -ru /zzz/zzz/* /xxx/xxx

그래도 기존 파일을 최신 파일로 업데이트합니다.


별칭없이 명령을 호출하는 또 다른 방법 command은 bash 에서 내장 을 사용하는 것 입니다.

command cp -rf /zzz/zzz/*


-n은 "덮어 쓰지 말 것"이지만 그의 질문은 당신이 대답 한 것과 완전히 반대입니다.

이 확인을 피하기 위해 절대 경로로 cp 명령을 실행하면 별칭을 피할 수 있습니다.

/ bin / cp 소스 파일 대상


별칭을 그대로 전역 수준으로 유지하고 스크립트를 변경하려는 경우.

다음을 사용하십시오.

별칭 cp = cp

그런 다음 후속 명령을 작성하십시오.


I simply used unalias to remove the "cp -i" alias, then do the copy, then set back the alias. :

unalias cp  
cp -f foo foo.copy  
alias cp="cp -i"  

Not the most beautiful code, but easy to set and efficient. I also check the alias is already set back with a simple

alias |grep cp

It is not cp -i. If you do not want to be asked for confirmation, it is cp -n; for example:

cp -n src dest

Or in case of directories/folders is:

cp -nr src_dir dest_dir

참고URL : https://stackoverflow.com/questions/8488253/how-to-force-cp-to-overwrite-without-confirmation

반응형