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

Listing 11: 查看示例文件的开始

$ head sonnets.txt

Shake-speare's Sonnets

I

From fairest creatures we desire increase,

That thereby beauty's Rose might never die,

But as the riper should by time decease,

His tender heir might bear his memory:

But thou contracted to thine own bright eyes,

Feed'st thy light's flame with self-substantial fuel

同样的,tail展示了文件的结尾后10行(Listing 12)

Listing 12:查看示例文件的末尾

$ tail sonnets.txt

The fairest votary took up that fire

Which many legions of true hearts had warm'd;

And so the general of hot desire

Was, sleeping, by a virgin hand disarm'd.

This brand she quenched in a cool well by,

Which from Love's fire took heat perpetual,

Growing a bath and healthful remedy,

For men diseas'd; but I, my mistress' thrall,

Came there for cure and this by that I prove,

Love's fire heats water, water cools not love.

当你确定只需要检查文件的开始和结尾时(也是常用场景),这两个命令就非常有用了。

单词计数和管道

顺便说一下,我已经忘记headtail默认显示了多少行。由于这里默认只显示了10行,我还可以手动去数,但事实上,可以使用wc命令(“wordcount”简写,图16)来计算。

wc使用较多的场景是在整个文件上,例如,我们可以通过wc运行sonnets.txt文件:

$ wc sonnets.txt
2620 17670 95635 sonnets.txt

3个数字分别表示该文件的行数,单词数,字节数。所以这个文件有2620行(正如3.1章节末尾得到的答案),17670个单词,95635个字节。

现在你可能猜到了数head sonnets.txt的行数的方法。像这样特别地,我们可以结合head和重定向操作符(2.1章节)创建只有该内容的文件,然后对该文件执行wc命令,正如Listing 13:

Listing 13: 重定向head内容,并对其结果应用wc命令

$ head sonnets.txt > sonnets_head.txt

$ wc sonnets_head.txt

10 46 294 sonnets_head.txt

从Listing 13中可以看到head wc有10行(46个单词,294字节)。同样的方法,也能检查tail结果。

另一方面,你可能也觉得只为了wc可以执行而创建中间文件不友好,确实也有个方法可以避免它,那就是使用管道技术。Listing 14展示了如何做:

Listing 14: 通过wc管道连接head

$ head sonnets.txt | wc

10 46 294

Listing 14的命令执行了head sonnets.txt然后使用管道符号|(在多数的QWERTY键盘中使用shift+ 反斜线)来管道连接wc的结果。这能运行的原因是wc命令,额外接受文件名作为参数,(和多数的Unix程序样)可以通过"标准输入"(与1.2章节提到的"标准输出"相反),在这个例子中是sonnets.txt文件中head的输出像Listing 11.wc程序接受这个输入并且像为文件计数样计算它,同样如Listing 13那样以行数,单词数,字节数的顺序输出。

练习

1.通过wc输出管道连接tail sonnets.txt的结果,确认(像head那样)tail命令的输出默认显示10行。

2.运行man head命令,学习如何查看文件的前n行。实践练习给n设置不同的值,找到 用head命令显示整个文件中的第一首诗(插图12).

3.根据前面对tail的练习(使用合适的选项)只输出第一首诗的14行。备注:这条命令看起来像head -n <i> sonnets.txt | tail -n <j> , <i><j> 代表-n选项的数字参数。

4.tail一个最有用的应用是运行tail -f 来查看文件是否改变。这常用于监测文件活动记录,例如,web服务器,一个众所周知的项目是跟踪日志文件.为模仿创建一个日志文件,执行ping learnenough.com > learnenough.log在一个终端标签窗口。(ping命令测试是否能连接一个服务器)在另一个终端标签窗口中,输入命令跟踪日志文件(这时,两个标签窗口都会卡住,所以一旦掌握了tail -f的要点,使用Box4逃离窘境)。

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

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

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

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

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

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

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

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

    首先,为了不手动创建一个长文件(这太麻烦了),我们将使用强大的curl(有时也写作"cURL")工具从网上下载一个文件,这个命令可以让命令行与URL交互.尽管这不是Unix核心命令 ...

  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. 3.4《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——grepping(检索目标行命令)

    grep是检查文件内容最强大的工具之一,这也许不能代表什么,但这不是重点.的确,grep常用作动词,比如'你完全应该检索(grep)那个文件'. grep最常用于在文件中搜索子字符串.例如,我们在第三 ...

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

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

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

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

随机推荐

  1. 3dmax导入模型,解决贴图不显示的问题

    在3dmax中导入模型数据后,经常出现贴图不显示的情况,效果如下图: 解决方法: 1.怀疑是贴图文件的路径设置有误.快捷键 shift+T打开“资源追踪”界面,重新设置贴图的正确路径(这里如果快捷键无 ...

  2. NO.1食品超市经营管理的数据方案

    背景 丸悦是一家日资企业,经营管理方式有着很强的日本文化风格:讲流程.重细节.丸悦2013年进入中国,沿袭固有经营管理方式,并且只选择日本供应商合作,日常经营出现诸多摩擦,最终多方原因导致年亏损300 ...

  3. JMeter 扩展JMeter插件获取更多监听器

    扩展Jmeter插件获取更多监听器 by:授客 QQ:1033553122 为了获取更多监听器,方便的监控系统及应用,有必要安装第三方插件. 插件下载地址: https://jmeter-plugin ...

  4. ios开发GCD(2)-dispatch_semaphore_t信号量计数器

    思考:现在有多个线程异步执行,我们想要同时最多只能执行2个或n个,该怎么办? dispatch_semaphore_t 看代码解析: NSLog(@"开始"); dispatch_ ...

  5. C# winform三种定时方法

    1. 直接用winform 的 timers 拖控件进去 代码 public partial class Form1 : Form     {         public Form1()       ...

  6. 使用mysqladmin extended-status查看MySQL的运行状态脚本

    一个好用的使用mysqladmin extended-status查看MySQL的运行状态脚本: mysqladmin -P3306 -uroot -p -h127. -r -i extended-s ...

  7. LDAP Filter用法

    #根据Pager过滤域用户 $pagers = gc D:\Operations\tmp\u.txt foreach ($p in $pagers) { $user = Get-ADUser -Fil ...

  8. SVN服务端VisualSVN数据转移说明

    两台服务器,进行SVN的迁移: 系统平台:windows server 2008 and windows server 2012 版本库:meishu 源服务器:192.168.0.245 目标服务器 ...

  9. VS code 修改主题设置代码对其齐线

    用VS Code 写代码的时候有时候缩进太多就不知道对应的是哪一个标签了,那么可不可以让它显示缩进参考线,这样就清楚的多了.答案是肯定的,方法如下: 找到 文件-->首选项——>设置→搜索 ...

  10. 使用POI读写Word doc文件

    使用POI读写word doc文件 目录 1     读word doc文件 1.1     通过WordExtractor读文件 1.2     通过HWPFDocument读文件 2     写w ...