如果这听起来很菜鸟,请原谅。我只是在检查节流阀的手册页,了解管道如何与节流阀携手工作。因此,在检查手册页示例时,我在下面的命令中保留了“-”。在示例部分的手册页中,第一个示例如下:
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 传输到tar
在 上运行的命令host
,使用 SSH 作为管道传输。该xzf -
参数意味着tar
从标准输入读取并提取存档。提取之前,tar
更改/bak
目录。
总而言之,在创建归档文件时,-f -
tar 意味着将结果输出到标准输出(stdout)。
当提取归档文件时,-f -
tar 意味着从标准输入(stdin)读取输入归档文件。
答案2
要查看的相关部分确实是-f -
(-
您问题中的参数是选项的参数-f
,指定文件名)
这意味着读取/写入文件-
,这是文件名的常见特殊情况。-
在这种情况下,通常指的是 stdin(读取时)或 stdout(写入时)。
即,第一个tar
进程将存档写入 stdout,然后通过管道传输到throttle
,然后通过管道传输到tar
从 stdin 读取存档的第二个进程。