首先,为了不手动创建一个长文件(这太麻烦了),我们将使用强大的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. vue-cli脚手架之build文件夹上半部

    好,接下来一起分析分析配置文件^o^. build.js作用:命令npm run build的入口配置文件,主要用于生产环境. build.js中具体含义标注(vue-cli脚手架官方文件解释,大家可 ...

  2. 如今领占主导地位的19种AI技术!

    如今领占主导地位的19种AI技术! http://blog.itpub.net/31542119/viewspace-2212797/ 深度学习的突破将人工智能带进全新阶段. 2006 年-2015 ...

  3. 《Inside C#》笔记(十二) 委托与事件

    C#的委托与C++的函数指针类似,但委托是类型安全的,意味着指针始终会指向有效的函数.委托的使用主要有两种:回调和事件. 一 将委托作为回调函数 在需要给一个函数传递一个函数指针,随后通过函数指针调用 ...

  4. MVP架构分析与搭建

    一个项目的核心就是架构 1.什么是MVP:MVP是一种项目架构设计模式. 其实MVP的本质就是将view和model完全隔离出来,通过Presenter (主持人) 统一调度管理.

  5. 【js基础】js排序方法——快排+堆排+插排+选择排

    快排 Array.prototype.fastSort = function(){ var arr = this; function sort(left, right, arr){ if( left ...

  6. 【第七篇】SAP ABAP7.5x新语法之F4增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:SAP ABAP7.5x系列之F4增强 前言部分 ...

  7. 使用 Array2XML把数组转成XML格式,有相同的节点

    最近开发一个项目,需要调用第三方的接口,第三方提供的数据是xml,我直接使用Array2XML把php数组转成XML格式. XML格式如: <root> <body> < ...

  8. PCA与KPCA

    PCA是利用特征的协方差矩阵判断变量间的方差一致性,寻找出变量之间的最佳的线性组合,来代替特征,从而达到降维的目的,但从其定义和计算方式中就可以看出,这是一种线性降维的方法,如果特征之间的关系是非线性 ...

  9. [MapReduce_4] MapTask 并发数的决定机制

    0. 说明 介绍 && Map 个数 & Reduce 个数指定 && Map 切片计算 1. 介绍 一个 job 的 Map 阶段并行度由客户端在提交 job ...

  10. Linux防火墙基础与编写防火墙规则

    Iptables采用了表和链的分层结构,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,raw表,mangle表,nat表,filter表,每个表容器内包括不同的规则链,根 ...