3.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——下载文件

时间:2022-05-28 23:35:56

首先,为了不手动创建一个长文件(这太麻烦了),我们将使用强大的curl(有时也写作"cURL")工具从网上下载一个文件,这个命令可以让命令行与URL交互。尽管这不是Unix核心命令设置,但是curl命令在Unix系统上被广泛应用。为了确保它在你的系统上能使用,我们可以使用which命令,用它来确认在命令行中程序是否支持该命令。使用方法是在which后面接程序的名字——在这种情况下,就是:

$ which curl
/usr/bin/curl

我的系统上已经输出了内容(/usr/bin/curl,通常读作"user bin curl"),但是可能你的系统上会有差别。有种特殊情况,如果你的结果输出是行空白,你必须安装curl, 你可以google搜索'install curl'后面在接上你操作系统的名字。

一旦curl安装后,我们可以像Listing 10中的命令那样下载一个叫做sonnets.txt的文件,里面包含巨量的文本。

Listing 10: 使用 curl 下载长文件.

$ curl -OL cdn.learnenough.com/sonnets.txt

$ ls -rtl

todo ===================================3.5.1章节链接

要确保命令确实复制正确了哦;特别要注意选项-OL包含了大写字母"O"(O)而不是零(0).(留给你个小任务[3.5.1章节],弄清楚这些选项的作用)。另外,在有些系统上(原因很奇怪)你要运行两次命令才能起作用;通过ls -rtl检查结果,这样可以看到curl调用是否有按照预期创建sonnets.txt文件.(如果你要重复curl命令,你可以使用向上箭头两次,但也可有其他选择看Box 9)

运行Listing 10的结果是产出sonnets.txt文件,该文件包含莎士比亚十四行诗的所有154首。这个文件有2620行,要展示在屏幕上太多了。学习如何检查它的内容是本章的主要目的。(除了这些外,我们也会学习如果计算它含2620行,而非手动去数。)

Box9 重复之前操作过的命令

在使用命令行时重复之前的命令是个频繁地操作任务。本篇教程到目前为止,已经介绍了使用上箭头恢复(输入)之前的命令,但是这不是唯一的方法。更快的方法运行使用过的命令是调用感叹号,在软件开发场景中通常叫做'bang'。运行之前的命令,我们可以使用'bang bang':

$ echo "foo"

foo

$ !!

echo "foo"

foo

'bang'高频使用的用法是后面接些字符,程序将运行以这些字符开始的最后一条命令。例如,要运行使用过的最后一条curl命,令,我们像这样输入:

$ !curl

这可以减少我们在输入选项、URL等的麻烦。根据我们使用过的命令,甚至简单的!cu!c也能有同等作用。当要找许多命令之前的命令,用它就非常适合了,这减去了多次使用上箭头的麻烦。

$ <⌃R>

(reverse-i-search)': curl

在大多数的系统中,输入回车键后将上条curl命令放在提示之后,这时可以在敲入回车键执行命令前编辑(如果你需要的话)。当遇到调用大量相同的命令时,有时可以看作是"以^R开始所有命令"。

练习

1.使用命令curl -I https://www.learnenough.com/抓取Learn Enough网站的HTTP消息头。这个地址的HTTP状态码是什么?这和learnenough.com(没有https://)的状态码有什么区别?

2.使用ls,确认sonnets.txt文件在你的系统中存在。它的字节有多长?注意:查看2.2章节中ls的以长表形式展示文件,会显示字节数。

3.我们在之前的练习中字节数已经很高了,这很容易就联想到千字节(通常认为是1000个字节,但实际上是 2^10=1024 字节)。通过给ls添加-h("更可读")选项,列出十四行诗文件的长表形式,并给出可读性更好的字节数。

4.假设你想要将文件或目录以更可读的字节数,同时要以时间顺序倒序用长表形式列出来。要使用什么命令呢?为什么这个命令会是本篇教程的作者偏爱的命令?