여러 개의 -exec 매개변수가 있는 find 명령이 있고 명령 중 하나의 출력(stdout 및 stderr)을 억제하려고 합니다. 내가 사용할 때&>/경로/대상/파일, 이는 출력을 리디렉션하는 대신 프로세스를 백그라운드로 보냅니다.
find /some/path -type f -exec sh -c 'scriptA.sh "$1"' _ "{}" \; -exec sh -c 'scriptB.sh "$1" &>/dev/null' _ "{}" \;
아래 명령("&" 문자도 사용)을 사용하여 문제에 대한 해결책을 찾았지만, 평소처럼 출력을 리디렉션하는 대신 프로세스를 백그라운드로 보내는 이유를 알고 싶습니다. 그렇다면 아래 명령은 작동하지만 위 명령은 작동하지 않는 이유는 무엇입니까?
find /some/path -type f -exec sh -c 'scriptA.sh "$1"' _ "{}" \; -exec sh -c 'scriptB.sh "$1" >/dev/null 2>&1' _ "{}" \;
감사해요!
답변1
리디렉션의 올바른 구문은 입니다 2>&1
. bash
확장 구문은 허용되지만 &>
호출하는 Bourne 쉘이나 ash 변형은 find -exec
허용되지 않습니다 .