2014-04-28 4 views
1

저는 c 쉘 (tcsh)을 사용합니다.defaul에서 -i 옵션을 사용할 때 cp를 덮어 쓰게합니다.

나는 기본적으로 cp 것을 항상 -i 플래그가 정의되고, 그래서 내 .custom 파일에 다음과 같은 별칭이

:

alias cp cp -i 

내가 쓰기 위해 노력하고 있어요 특정 쉘 스크립트를 cp하는 것이 바람직하다 덮어 쓰기를 강요하고 대상 파일을 덮어 쓸지 묻지 않습니다. 내 셸 스크립트에서 cp --remove-destination을 사용해 보았지만 대상 파일을 덮어 쓸지 묻는 메시지가 여전히 표시되었습니다. -i이 이미 기본 동작 인 경우 덮어 쓰기를 강제하는 데 사용할 올바른 플래그는 무엇입니까? 매개 변수를 추가 할 수

답변

1

당신은 두 가지 가능성을 가지고이 :

먼저 별명 호출하는 대신 시스템 CP를 사용

/bin/cp ..... 

둘째 -i 옵션을 재정의을

(그래서 CP -i -n 대신 모양)
cp -n .... 

두 번째 것은 읽기 쉽지 않으므로 첫 번째 방법을 사용하는 것이 좋습니다.

2

앨리어싱은 예를 alias cpi cp -i에 대한 앨리어싱을 해제 아마 더 좋을 것 같아, 다른 예기치 않은 결과를 가져올 수 있습니다. 그렇게하면 가능한 충돌을 피할 수 있고 또한 일반적인 방식으로 명령을 사용할 수 있습니다. 당신이 당신의 별칭을 유지를 주장하는 경우
또는, 당신은 단지 /bin/cp를 통해 직접 cp를 사용할 수 있습니다.

1

'\'(프리픽스 : '대 which \cp) 접두사를 붙이면 원래/앨리어스가 적용되지 않은 명령을 언제든지 호출 할 수 있습니다.

그래서 실행 : \cp a b 별칭을 우회, 즉 당신이 별명이 없다면 호출 할 것이다 원래의 명령을 호출합니다. 이는 명시 적으로 /bin/cp을 실행하는 것보다 더 나은 이유는

  • 이 더 짧고 직관적이다 (당신이 cp을 실행하려고 할 때, 당신은 cp을 실행하지 /bin/cp)
  • 당신이 전체를 알 필요가 없습니다 실행 파일이 아닌,이를위한 "전체 경로"
이없는 명령은 또한 쉘 내장 명령 작동
  • (예 cd), 경로