Unix提供了两个工具查看不止文件的头部和尾部。这个功能程序叫做more,但有种更强大的变异体叫做less(起初我认为这是玩笑)。less这个程序是交互性地,所以很难在输出时捕获,但是仍然为大家提供了粗略地样本如下:

$ less 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,
Making a famine where abundance lies,
Thy self thy foe, to thy sweet self too cruel:
Thou that art now the world's fresh ornament,
And only herald to the gaudy spring,
Within thine own bud buriest thy content,
And tender churl mak'st waste in niggarding:
Pity the world, or else this glutton be,
To eat the world's due, by the grave and thee. II When forty winters shall besiege thy brow,
And dig deep trenches in thy beauty's field,
sonnets.txt

less程序地关键点在于它提供了几种有用的方法让你到文件的指定位置,例如使用箭头向上或向下移动整行内容,按空格键移到页面底部,按^F向前移一页(例如,)或者 ^B向后移一页。退出less, 输入q(‘quit’简写)。

插图18: 莎士比亚时期著名的玫瑰

或许,less最强大的能力是斜杠键/了,它能让你从文件开始一直搜索到结尾。例如,假设我们要在sonnets.txt文件中搜索'玫瑰'(插图18),十四行诗里最常用的意象之一。用less来做就是输入 /rose(读作“斜杠玫瑰”), 如Listing 15:

Listing 15:使用less搜索字符串'rose'

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,

Making a famine where abundance lies,

Thy self thy foe, to thy sweet self too cruel:

Thou that art now the world's fresh ornament,

And only herald to the gaudy spring,

Within thine own bud buriest thy content,

And tender churl mak'st waste in niggarding:

Pity the world, or else this glutton be,

To eat the world's due, by the grave and thee.

II

When forty winters shall besiege thy brow,

And dig deep trenches in thy beauty's field,

/rose

Listing 15中输入/rose后结果就是在该文件中高亮显示第一次出现'rose'。你可以接着输入n指引程序搜索下一个匹配,或者N搜索上一个匹配。

最后两个必会的less命令是G,和1G(1后面接G),分别地作用是移到文件末尾,和返回到开始。Table 4总结了我认为最重要的键组合(即:我认为你需要它才能变得厉害),但是如果你对其他命令也很感兴趣,请查看wiki对less的介绍

我很鼓励你习惯使用less工具查看文件。解锁的新技能同样适用于其他应用;例如:手册页(1.3章)用的less来做操作交互界面,所以通过学习less你也可以更好的在手册页中自由移动。

命令 描述 示例
up & down arrow keys 向上或向下移动一行
空格键 移至上一页
⌃F 移至上一页
⌃B 移至下一页
G 移至文件末尾
1G 回到文件开始
/<string> 在文件中搜索字符串 /rose
n 移到下个匹配的搜素结果
N 移到上个匹配的搜索结果
q 退出less

Table 4: `less` 最重要的命令

练习

1.对sonnets.txt文件运行less。向后移动3页再向前移动3页。移到文件末尾,在回到开始,最后退出。

2.搜索字符串All(区分大小写)。查找前面几个匹配项,再查找后面几个匹配项。接着移至文件的开始,数匹配项,一直数到结尾。最后比较你数的结果和运行grep All sonnets.txt | wc的结果是否相同。(我们将在3.4章节中学习grep

3.使用less/(斜杠),找到诗中'Let me not'开始的行。这首诗中有匹配的吗?备注:按n寻找下个匹配项(如果有的话)。附加题:听听这首诗的现代版原始版,哪个版本的韵律更好?

4. 因为man使用了less,我们现在可以搜索手册页了。在ls的手册页中搜索'sort'字符串,发掘通过文件大小排序的选项操作。什么命令可以让文件以长表的形式列出,并且越大的文件显示在底部?备注: ls -rtl作为模型。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    在编辑模式中,命令行包括几个重复之前命令的功能.这些以及其他很多命令功能时常设计键盘上的特殊键,所以给出Table 1作为参考,给出了许多键在典型的Macintosh键盘上的标记符号.若你的键盘不太一 ...

  9. 4.5《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—第四章小结

    本章相关重要命令总结在Table 6. 命令 描述 示例 mkdir <name> 创建某目录 $ mkdir foo pwd 显示当前所在目录 $ pwd cd <dir> ...

  10. 4.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—目录结构

    Unix风格的目录结构通常使用一个目录名列表并用正斜杠分隔来表示,这样我们可以结合ls命令: $ ls /Users/mhartl/ruby 或者 $ ls /usr/local/bin 正如图20, ...

随机推荐

  1. git命令详解( 三 )

    此篇为git命令的第三篇 目录 git Pull 模拟团队合作 Git Pull 在上一篇的结尾我们已经知道了如何用 git fetch 获取远程的数据, 现在我们学习如何将这些变化更新到我们的工作当 ...

  2. 【代码笔记】Web-利用Dreamweaver实现form

    一,打开Dreamweaver---->File---New---->如下图所示.选择HTML,点击OK. 二,会出现如下图所示界面.把光标放到Body处. 三,将上面的栏切换到Desig ...

  3. 使用CSS兄弟选择器完成复杂垂直边距(vertical margins)的设计

    -------------------sibling选择器如何在完成复杂设计要求的同时,保持CSS可读 这是web前端开发过程中开始简单逐步变的复杂的例子之一:将一篇文章中的所有元素应用垂直边距(ve ...

  4. Web.config配置customErrors mode为Off后依然不显示具体错误的可能原因。

    有时候我们的网站程序在本地运行没有问题,但在上传到远程服务器后则报错.这就需要我们了解具体错误,但IIS默认只显示统一的运行时错误,想要知道具体错误就需要配置Web.config中customErro ...

  5. Nginx 负载均衡原理简介与负载均衡配置详解

    Nginx负载均衡原理简介与负载均衡配置详解   by:授客  QQ:1033553122   测试环境 nginx-1.10.0 负载均衡原理 客户端向反向代理发送请求,接着反向代理根据某种负载机制 ...

  6. linux上部署engineercms、docker和onlyoffice实现文档协作

    等了好久,这次终于下决心在局域网部署了linux系统,并安装docker和load了onlyoffice,利用engineercms进行资料管理和文档协作. 我整理了完整文档,见我的网盘. engin ...

  7. 游标和递归sql 的一些代码

    DECLARE @UserID INT; --推广员帐号 DECLARE @ProxyID INT; --代理帐号 ; --分数 SELECT @UserID = [SpreaderID] FROM ...

  8. 关于elk中filebeat定义好日志输出,但是redis里面却没有输出内容的问题

    这两天在搞elk的时候,filebeat中指定输出日志至Broker(此处Broker采用redis作为缓存),但是redis中却没有内容,所以就开始排查来 filebeat采用RPM安装的方式来的. ...

  9. UITableView详解

    一.建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRectMake(, , , )]; [DataTable setD ...

  10. activiti5.14版本在线流程设计器的国际化中文支持

    参考了前辈的一些国际化支持做法,加上自己对流程的一些理解,做了activiti5.14版本的国际化支持.发现有若干bug,比如属性设置弹出窗口里的grid里的下拉列表不支持显示中文(要修改oryx.d ...