zoukankan      html  css  js  c++  java
  • 3.2《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——检查文件开始与结尾

    检查文件两个互补的命令是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逃离窘境)。

  • 相关阅读:
    基于Canvas的时钟
    注意A链接的默认行为
    基于Aptana3+Django开发blog的示例
    使用vbscript替换excel文件的内容
    使用Ajax建立的Server Push和Iframe建立的Comet
    ajax和它的超时
    通用SQL分页程序
    简简单单学习ASP.NET之三
    功能很强大的UI封装类
    封装的一些实现图片水印与图片自动结合缩放的类
  • 原文地址:https://www.cnblogs.com/AliceX-J/p/8579402.html
Copyright © 2011-2022 走看看