我们运行的命令行程序,通常在技术上称作shell, 它包含了一个非常强大(也很神秘)的工具,我们将用它来学习更多可用的命令。这个工具本身就是个称作'man'的命令(‘manual’的简写)。它的参数是一个命令的名字(如echo)。具体细节要依赖于系统,我的系统上运行man echo的结果如下Listing 2所示

备注:关于命令行的许多教程都涵盖了文本编辑器和shell元素,而本教程并不计划介绍[前面已经提过],但我们会把这些重要的主题推迟到这一个教程的后续教程[第5章节],毕竟从学习文本编辑器开始挑战太大。

Listing 2: 运行man echo的结果
$ man echo
ECHO(1) BSD General Commands Manual ECHO(1)

NAME
echo -- write arguments to the standard output

SYNOPSIS
echo [-n] [string ...]

DESCRIPTION
The echo utility writes any specified operands, separated by single blank (` ') characters and followed by a newline (`\n') character, to the standard output.

The following option is available:

-n Do not print the trailing newline character. This may also be achieved by appending `\c' to the end of the string, as is done by iBCS2 compatible systems. Note that this option as well as the effect of `\c' are implementation-defined in IEEE Std 1003.1-2001 (``POSIX.1'') as amended by Cor. 1-2002. Applications aiming for maximum portability are strongly encouraged to use printf(1) to suppress the newline character.
:

在Listing 2中的最后一行,注意有个冒号:, 表示下面还有更多的信息。 最后一行的细节信息依赖于系统,但是在任何系统上都可以通过按向下箭头键一次或者空格键一次访问下一行信息。要推出手册页,按q(quit 退出)。(手册页的用户界面跟less程序一样,less程序相关内容将在3.3章节中介绍)

*图10: `man`对`man`*

因为man本身也是条命令,所以我们可以对man添加参数man(图10),运用后显示如Listing 3

Listing 3: The result of running man man.
$ man man
man(1) man(1)

NAME
man - format and display the on-line manual pages

SYNOPSIS
man [-acdfFhkKtwW] [--path] [-m system] [-p string] [-C config_file]
[-M pathlist] [-P pager] [-B browser] [-H htmlpager] [-S section_list]
[section] name ...

DESCRIPTION
man formats and displays the on-line manual pages. If you specify sec-tion, man only looks in that section of the manual. name is normally the name of the manual page, which is typically the name of a command, function, or file. However, if name contains a slash (/) then man interprets it as a file specification, so that you can do man ./foo.5 or even man /cd/foo/bar.1.gz.

See below for a description of where man looks for the manual page files.

OPTIONS
-C config_file
:
我们可以从Listing 3中发现man的概要(SYNOPSIS)如下:
man [-acdfFhkKtwW] [--path] [-m system] [-p string] ...
就像我本节开始描述的那样手册页通常很‘神秘’。的确,我发现在很多情况下手册页的细节几乎不能理解,但是能够从手册页中获得命令的高级概览信息是项宝贵的技能,值得收藏。为了能够习惯阅读手册页,我建议在遇到一条新命令时,运行man <command name。即使这些细节不完全清楚,即使细节不完全清楚,阅读手册页将有助于培养技术精湛的宝贵技能。(技术精湛解释 Box5])

Box5 技术精湛

在数学中,许多的学科是通过基于少量的假设或公理应用纯演绎发展而来,包括代数,几何,数论和分析。因此,这些课程间相互独立,单独学习时无需成立的先决条件——原则上,即使是一个小孩也可以学习。然而,在实践中,还需要别的东西,而数学家通常会建议数学精湛的非正式先决条件,其中包括理解和标写数学证明所需的经验和一般复杂性。
在技术中,技术的精湛是掌握一项相似的技能(或者更确切的说是一系列技能)。除了'硬技能'如熟悉文本编辑器,或Unix命令行以外。技术的精湛还包括'软技能'如寻找可用的菜单选项,如何在Google(搜索引擎)中搜索自己所需知识(图2),还有总能让计算机听我们的命令的态度(Box1)。这些软技能、和态度很难直接传授,所以通过本篇及之后的教程Learn Enough tutorials,你可以不断的找机会精湛自己的技术(比如,学习从手册页获取程序的要点[章节1.3])。随着时间的推移,产生的累积效应就像图11中的作者一样,将拥有在各个程序中做各种事的神奇能力。

顺便提一下,图2缺少了解决公共问题的2个技术要点

  1. 是否重启程序?
    2.是否重启设备?
    3.是否尝试卸载后重新安装程序

其中第2点通常能解决90%不能解释的计算机错误。

图11:'技术支持的小抄'(通过XKCD),见Box5的技术精湛

练习

  1. 根据手册页,看看你的系统上echo命令的官方简写和详细的描述是什么?
    2.正如Listing1中所说,echo命令默认会在屏幕上输出参数,然后在新的一行中显示新的提示。这是通过添加一个称作newline的特殊字符(这个特殊的字符正如字面的意思,是将字符串放在新的一行中,在许多场景中写做'反斜线n' \n).由于echo常用于输出没被newline分开的一系列字符串,因此有个特殊的命令行选项阻止插入新的行。

通过阅读echo的手册页,确定打印出'hello'所需的命令,而没有尾部的换行符,为了验证你的终端如预期运行。提示:要确定命令行选项的位置,可以参考图5。通过将你的结果与Listing 4 和Listing 5做比较,确定你是否使用了正确的选项。(备注:在一些老版本的macOS系统的默认终端程序上,这个练习可能会失败。这种情况下,我建议安装iTerm(无论如何这不是个坏主意))

Listing 4 : 运行echo 出现新的行(没有加参数)
hello
[~]$

Listing 5 : 运行echo 不出现新的行(加参数)
hello[~]$

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

  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. 3.3《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——less即more

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

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

    本章节学过的重要命令整理,见下表Table 2. 命令 描述 例子 echo <string> 向屏幕输出字符串 $ echo hello man <command> 显示命令 ...

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

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

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

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

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

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

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

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

随机推荐

  1. JSTL 标签大全详解

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53311722  冷血之心的博客) 一.JSTL标签介绍 1.什么是 ...

  2. Visual Studio Code必备插件

    HTML Snippets: 超级实用且初级的 H5代码片段以及提示 HTMLHint: html代码检测 HTML CSS Support : 让 html 标签上写class 智能提示当前项目所支 ...

  3. Android之编写测试用例

    测试是软件工程中一个非常重要的环节,而测试用例又可以显著地提高测试的效率和准确性.测试用例其实就是一段普通的程序代码,通常是带有期望的运行结果的,测试者可以根据最终的运行结果来判断程序是否能正常工作. ...

  4. LeetCode题解之Find All Duplicates in an Array

    1.题目描述 2.问题分析 将数组中的元素 A[i] 放到 A[ A[i] - 1] 的位置.然后遍历一边数组,如果不满足 A[i] == i+1,则将A[i]添加到 结果中. 3.代码 vector ...

  5. 阿里云rds实例恢复到本地

    摘要: 前提: 1,阿里云数据库备份实例,恢复数据的时候需要将数据恢复到本地数据库,是不能直接恢复到RDS上的. 2,需要在本地服务器上下载一个数据库,尽量和RDS数据库版本保持一致.(我现在用的是5 ...

  6. LVM卷的创建及案例演示

    LVM:Logical Volume Manager, Version:2dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块. /dev/dm-# 这里的#表示数字,代 ...

  7. 一次SQLServer数据库宕机问题

    数据库采用SQL Server 2005版本, 数据库文件约为6G,而LDF日志文件已经高达36G. 服务器开始变的不太稳定 .数据没有成功保存. 打开事件查看器发现很多信息日志 数据库 '' 中的文 ...

  8. [pip] pip命令的安装、卸载、查找方法汇总

    比如以selenium的为例 1.打开命令窗口(如果是win10,最好是通过管理员方式打开命令窗口,否则会出现安装时提示访问不拒绝) 2.安装selenium的指定版本,命令:pip install ...

  9. 【js】实现继承的6种方法

    1.原型链 基本思想:利用原型链让一个引用类型继承另一个引用类型的属性和方法. 让原型对象(B.prototype)等于另一个类型的实例(new A()), 即B.prototype = new A( ...

  10. python第三十九课——面向对象(二)之设计类

    1.设计类class 车: #属性 颜色 = red 品牌 = "BMW" 车牌 = "沪A88888" #函数 行驶(): 停止(): 2.实例化车对象 ca ...