首先,为了不手动创建一个长文件(这太麻烦了),我们将使用强大的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.假设你想要将文件或目录以更可读的字节数,同时要以时间顺序倒序用长表形式列出来。要使用什么命令呢?为什么这个命令会是本篇教程的作者偏爱的命令?