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

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

  1. 2《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——操作文件

    已经学习了基本的命令,现在是时候学习操作文件了,这也是命令行的重要任务.还是基于本教程的事先规定,本教程是入门级的,不要求熟悉类似编辑文本的程序(这些文本编辑程序,将在下个系列教程中介绍, Learn ...

  2. 2.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——重定向文件和添加文件

    回忆第一章节的内容,我们用echo命令输出莎士比亚的第一首十四行诗的第一行(Listing 6): $ echo "From fairest creatures we desire incr ...

  3. 3.2《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——检查文件开始与结尾

    检查文件两个互补的命令是head 和tail, 它们分别用于查看文件的开始(头部)和结束(尾部).head命令展示了文件的前10行.(Listing 11). ##Listing 11: 查看示例文件 ...

  4. 3.《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——检查文件

    上面我们已经学过如何创建及操作文件,现在我们再来学习检查内容.当文件太长以至于屏幕一页显示不完时,这显得尤其重要.特殊情形下,如我们在第2.1章节开始部分中使用cat命令将内容展示到屏幕上,但这对于长 ...

  5. 4.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—链接到目录

    在4.2章中我们已经会用cd进入到指定的目录中.这是导航最常见的用途之一,但是它还有几个值得关注的用途.第一个是使用cd ..(读作'see-dee 点点')返回当前目录级别的上一级: $ pwd / ...

  6. 1.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——运行终端

    终端是个允许我们运行命令行的程序,运行命令前,先打开它.在MacOS系统上,可以使用macOS应用 Spotlight来打开终端窗口,Spotlight也有其他两种方式触发,一种是键入⌘␣(comma ...

  7. 1.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——手册页

    我们运行的命令行程序,通常在技术上称作shell, 它包含了一个非常强大(也很神秘)的工具,我们将用它来学习更多可用的命令.这个工具本身就是个称作'man'的命令('manual'的简写).它的参数是 ...

  8. 2.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——重命名,复制,删除

    最常用的文件操作除了将文件列出来外,就应该是重命名,复制,删除了.正如将文件列出来一样,大多数现代操作系统为这些任务提供了用户图形界面,但是在许多场景中,用命令行还是会更方便. 使用mv命令重命名一个 ...

  9. 1.2《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——开始第一条命令

    现在开始准备运行我们的第一条命令了,在屏幕上打印'hello'.(字符打印的地方被称为'标准输出',通常指的是屏幕,很少指真的物理打印机设备).这条命令就是echo,这条命令的参数是想要输出的字符串或 ...

随机推荐

  1. JS中的数学方法

    1 . Math.ceil()      向上取整 2.  Math.floor()     向下取整 3. Math.round()    四舍五入取整 4.  Math.random()   生成 ...

  2. Ajax的实现及使用-zepto

    正文 之前归纳了ajax技术的基础知识,汗颜的是这两篇本应该在年初补上的,但因为种种原因,并没有补上.不过还好最近有空,所以开始整理之前的日记.共分为两篇:对于zepto ajax代码的实现解析;对于 ...

  3. Visual Flow 简介

    Visual Flow(流) Salesforce提供了几种自动化流程工具,其中的Visual Flow(流)可以用来实现用户界面和逻辑,并对数据进行CRUD(Create 创建,Read 读取,Up ...

  4. 在Apex中使用sObject

    sObject对象的定义 Salesforce中的标准对象或自定义对象在Apex中使用时被称作"sObject".sObject对象的一个实例相当于Salesforce中的一条记录 ...

  5. RNN,LSTM中如何使用TimeDistributed包装层,代码示例

    本文介绍了LSTM网络中的TimeDistributed包装层,代码演示了具有TimeDistributed层的LSTM网络配置方法. 演示了一对一,多对一,多对多,三种不同的预测方法如何配置. 在对 ...

  6. vue.js的安装

    使用nodejs安装Vue-cli 1.安装完成node,node有自带的npm,可以直接在cmd中,找到nodeJs安装的路径下,进行命令行全局安装vue-cli.(npm install --gl ...

  7. [20180619]oradebug peek.txt

    [20180619]oradebug peek.txt --//我以前一直以为oradebug peek查看某个地址开始的内容,后面的长度有限制的.--//在linux下,我的测试是60.实际上ora ...

  8. redis慢查询日志的配置和查看

    Redis是单线程运行的,一个慢执行,会让后续的大量执行延时,吞吐量也会极大的降低.记录.查询.监控Redis慢执行意义重大.Redis的slowlog只记录在内存中,效率很高,不用过于担心影响性能. ...

  9. January 06th, 2018 Week 01st Saturday

    In life the most interesting things tend to happen when you are on your way to do something else. 生活 ...

  10. java 实现Word或Excel 转Pdf

    1:首先需要引入相关的jar word转pdf需要引入 aspose-words-15.8.0-jdk16.jar 下载JAR包 Word http://note.youdao.com/notesha ...