大多数时候,当我下载某些东西时,它是某种文件存档 - 通常是tarball或zip文件。这可能是Gentoo的Portage树中未包含的应用程序的一些源代码,内部企业应用程序的一些文档,甚至是新的WordPress安装的平凡内容。

在终端中下载和解开某些东西的传统方式是这样的:

wget http://wordpress.org/latest.tar.gz

tar xvzf latest.tar.gz

rm latest.tar.gz

或者更紧凑的形式:

wget http://wordpress.org/latest.tar.gz && tar xvzf latest.tar.gz && rm latest.tar.gz

无论哪种方式都有点笨拙。这是一个非常简单的操作,像bash这样强大的shell应该允许以更“光滑”的方式执行这样的任务。

好吧,多亏了一个有用的小命令“curl”,我们实际上可以在一个管道语句中完成上面的混乱:

curl http://wordpress.org/latest.tar.gz | tar xvz

没有临时文件可以摆脱,没有与&符号混乱。简而言之,一个高度紧凑,高效的命令。实际上,从理论角度来看,curl方法可能比连接的wget / tar / rm混乱更快,因为stdout管道将尽可能使用RAM作为缓冲区,而wget和tar(使用-f开关)必须读/写直接来自磁盘。

顺便说一下,使用-v选项的tar(我们在上面所有示例中使用它的方式)将每个文件名打印到stdout,因为每个文件都是untarred。这可能会妨碍curl很好,ncurses输出显示下载状态。我们可以通过在没有-v的情况下调用它来沉默tar:

curl http://wordpress.org/latest.tar.gz | tar xz

这就是它的全部!

重要提示:
编辑点评: