리디렉션이 어떻게 작동하는지 알고 싶습니다.이 명령
# tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)
영어 번역은 무엇입니까?
의 모든 데이터는 tar
입력으로 리디렉션된 pv
다음 ? pv
로 리디렉션됩니다 .backup.tgz
그러면 왜 주위에 괄호가 필요합니까 pv
?
그렇다면 이 리디렉션의 요점은 무엇입니까?
tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70
이후은 무슨 pv
뜻 인가요 2>&1
?
답변1
바라보다쉘의 제어 및 리디렉션 연산자는 무엇입니까?그리고주문 리디렉션배경.
tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)
tar -czf - ./Downloads/
로 리디렉션된 표준 출력을 사용하여 실행하도록 쉘에 지시합니다 (pv -p --timer --rate --bytes > backup.tgz)
.
(pv -p --timer --rate --bytes > backup.tgz)
pv -p --timer --rate --bytes
파이프에 연결된 표준 입력으로 실행하고 표준 tar
출력을 backup.tgz
. 압축된 아카이브를 생성하고 표준 출력( )으로 출력하라는 지시를 받았 으므로 tar
전체적인 효과 f -
는 압축된 아카이브를 구축 pv
하고 파이프한 다음 pv
에 기록하는 것입니다 backup.tgz
. pv
데이터 흐름에 따라 업데이트되는 진행률 표시줄을 표시합니다.
괄호는 필요하지 않습니다.
두 번째 명령은 첫 번째 파이프라인의 후반부를 변경합니다.
(pv -n > backup.tgz) 2>&1
다시 작성 backup.tgz
하지만 서브쉘의 표준 오류(괄호로 표시됨)를 표준 출력으로 리디렉션하고 다음을 제공합니다.저것dialog
자체 진행률 표시를 생성합니다 .
명령에 지정된 순서대로 리디렉션을 설정하는 경우 여기에 괄호가 필요합니다. stdout 및 stderr은 로 리디렉션 pv -n > backup.tgz 2>&1
되며 이는 원하는 것이 아닙니다. 표준 오류를 먼저 리디렉션하면 원하는 효과를 얻을 수도 있습니다 .pv
backup.tgz
pv -n 2>&1 > backup.tgz