Mac OS X를 사용하고 있습니다. 이와 같은 빌드 스크립트를 위해 cp 명령으로 일부 파일을 복사하려고합니다.
cp ./src/*/*.h ./aaa
그러나 ./src 디렉토리에 .h 파일이 없으면이 명령이 오류를 발생시킵니다. 명령이 오류를 발생시키지 않는 방법? (자동 실패) 오류로 인해 빌드 결과가 실패하지만 헤더 파일 만있을 때 복사하고 싶습니다.
답변
오류 메시지에 대해 이야기하는 경우 비트 버킷으로 보내서이를 억제 할 수 있습니다.
cp ./src/*/*.h ./aaa 2>/dev/null
종료 코드 및 오류 메시지를 표시하지 않으려면 다음을 수행하십시오.
cp ./src/*/*.h ./aaa 2>/dev/null || :
답변
당신은 라인을 따라 뭔가를 찾고 있습니다
if [ -e file ]
then cp file /somewhere
fi
(불행히도, -f
옵션은 당신이 찾고있는 드로이드가 아닙니다.)
글로브와 일치 시키려면 작동하지 않습니다. 사용하는 find
대신에, 예를 들면 :
find ./src -name \*.h -exec cp {} ./destination \;
답변
오래된 질문이지만 여전히 다른 사람들과 관련이있을 수 있습니다. cp를 사용할 필요
가 없으면 rsync를 사용해보십시오.
소스에서 대상 디렉토리로 모든 파일을 복사하려면 다음을 실행하십시오.
rsync -avzh --ignore-errors /path/to/source /path/to/destination
Rsync는 Linux, Mac OS X 또는 FreeBSD와 같은 대부분의 유닉스 계열 시스템과 함께 제공됩니다.
답변
결과를 true로 파이프하면 명령이 항상 성공합니다. Linux에서는 시도했지만 Mac OS에서는 시도하지 않았습니다.
cp ./src/*/*.h ./aaa | true
답변
올바른 오류 상태를 강요 할 수 있습니다. 기능으로 :
$ cpalways () { cp $1 $2 2>/dev/null ; return 0 ; }
다음과 같이 주어진다 :
$ ls foo bar baz
ls: baz: No such file or directory
bar foo
일반 복사는 오류를 반환합니다. 종료 상태 1을 리턴합니다.
$ cp baz bar ; echo $?
cp: baz: No such file or directory
1
위의 cpalways () 함수를 사용하면 오류가 숨겨집니다.
$ cpalways baz bar ; echo $?
0
$ cpalways foo bar ; echo $?
0
$ cpalways baz bar ; echo $?
0