善用 POSIX 的 stdin 及 stdout

By | March 28, 2017

Linux / macOS 的 stdin、stdout 完全把 Windows 比下去。

例如,你可以邊 download 邊解壓:

$ curl -L http://ftp.cuhk.edu.hk/pub/packages/apache.org/cassandra/3.10/apa
che-cassandra-3.10-bin.tar.gz | gzip -dc | tar -x

註:
-L => 跟著網站 redirect 如有
gzip -dc => unzip 去 stdout
tar -x => untar

又例如,你想從另一部機的 Docker image 載入這部電腦:

$ ssh remote-machine 'docker save image-name:tag | gzip -c' | gzip -dc | docker load

註:
gzip -c => 壓縮到 stdout
gzip -dc => 解縮到 stdout

由於經網終傳送,壓縮會比較用。用 gzip 只因壓得快,如果網絡慢,可改用 xz

要用起上來方便,要設定好 ~/.ssh/config

[bash]
host remote-machine
hostname [ip or hostname]
port [port]
user [user name]
identityFile [id_rsa]
[/bash]

以上各 field 全是 optional,沒有提供就用使用預設值。

Windows 要做到以上所提及的,恐怕唯有使用 Cygwin 或 Bash Shell on Windows 10 了