![여러 -exec 옵션을 사용하여 리디렉션&>/dev/null을 찾으십시오. exec 명령은 프로세스를 백그라운드로 보냅니다.](https://linux55.com/image/20603/%EC%97%AC%EB%9F%AC%20-exec%20%EC%98%B5%EC%85%98%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%26amp%3B%26gt%3B%2Fdev%2Fnull%EC%9D%84%20%EC%B0%BE%EC%9C%BC%EC%8B%AD%EC%8B%9C%EC%98%A4.%20exec%20%EB%AA%85%EB%A0%B9%EC%9D%80%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%A5%BC%20%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C%EB%A1%9C%20%EB%B3%B4%EB%83%85%EB%8B%88%EB%8B%A4..png)
여러 개의 -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
허용되지 않습니다 .