맨스로틀 명령 예에서 "-"는 무엇입니까?

맨스로틀 명령 예에서 "-"는 무엇입니까?

초보자처럼 들리셨다면 죄송합니다. 파이프가 스로틀과 어떻게 연동되는지 알아보기 위해 스로틀 매뉴얼 페이지를 확인하고 있었습니다. 그래서 매뉴얼 페이지 예제를 확인하면서 아래 명령에 "-"를 남겨 두었습니다. 예제 섹션의 매뉴얼 페이지에서 첫 번째 예제는 다음과 같습니다.

   To limit the bandwidth of a tar back-up to a remote server to 1 Mbit/s, type:

   $ tar czf - . | throttle -m 1 | ssh host 'tar xzf - -C /bak'

이제 여기서는 czf 뒤의 "-"와 xzf 뒤의 "-"를 이해하고 싶습니다. 질문이 명확하다면 전체 명령을 기꺼이 이해해 드리겠습니다.

미리 감사드립니다.

답변1

명령을 여러 부분으로 나누어 하나씩 설명하겠습니다.

tar czf - .

이 명령은 tar현재 디렉터리에서 아카이브를 생성하고 -f인수로 지정된 파일에 출력을 저장하도록 지시합니다. 여기서 파일은 -표준 출력을 의미합니다.

역할 |은 왼쪽 명령의 표준 출력을 가져와 오른쪽 명령에 표준 입력으로 전달합니다.

이 경우 출력은 tar입력으로 전달된 throttle -m 1다음 마지막 명령에 출력이 제공됩니다.

ssh host 'tar xzf - -C /bak'

출력은 SSH를 통해 파이프로 SSH를 사용하여 tar에서 실행되는 명령 으로 전송됩니다 . host이 매개변수는 표준 입력에서 아카이브를 읽고 추출하는 것을 xzf -의미합니다 . tar추출하기 전에 디렉토리를 tar변경하십시오 /bak.

요약하자면, 아카이브를 생성할 때 -f -tar는 결과를 표준 출력(stdout)으로 출력한다는 의미입니다.

아카이브를 추출할 때 -f -tar는 표준 입력(stdin)에서 입력 아카이브를 읽는 것을 의미합니다.

답변2

살펴볼 관련 부분은 실제로입니다 -f -( -질문의 인수는 -f파일 이름을 지정하는 옵션의 인수입니다)

이는 파일 읽기/쓰기를 의미하며 -, 이는 파일 이름에 대한 일반적인 특수 사례입니다. -이 경우 일반적으로 stdin(읽기 시) 또는 stdout(쓰기 시)을 나타냅니다.

즉, 첫 번째 tar프로세스는 아카이브를 stdout에 쓰고 이를 로 파이프한 throttle다음 tarstdin에서 아카이브를 읽는 두 번째 프로세스로 파이프합니다.

관련 정보