我们运行的命令行程序,通常在技术上称作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. jquery 下拉框插件,实现智能补全,模糊搜索,多选

    近期已朋友问我问题,实现类似淘宝百度的下啦搜索条,看了网上好多帖子,都看起来好复杂,而且引用了好多没用的东西,而且多选选择内容多之后容易样式奔溃, 无奈之下只好自己改了, 话不多说上效果图: 模糊搜索 ...

  2. Jquery 打开新页面

    1.在click事件触发时,先打开空白页面 var newWeb=window.open('_blank'); 2.在事件操作后,写入空白页面的链接 newWeb.location='新页面的链接地址 ...

  3. 001Git & GitHub

    01.创建GitHub账号 请点击标题链接,阅读官网帮助 02.创建代码仓库 请点击标题链接,阅读官网帮助 03.安装Git 注:Git官网下载太慢,可在[360卫士]-->[软件管家]中搜索下 ...

  4. JSTL 标签大全详解

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

  5. VMware Linux虚拟机与WIN7操作系统共享无线网络上网配置

    Linux虚拟机与WIN7操作系统共享无线网络上网配置 by:授客 QQ:1033553122 测试环境: CentOS-7-x86_64-DVD-1503-01.iso Vmware 9 实践操作: ...

  6. ubuntu下android开发工作环境搭建

    www.bubuko.com/infodetail-655571.html 解压软件安装: sudo apt-get install unrar rar zip gzip  串口工具安装: sudo ...

  7. 解决JBoss只能通过localhost访问不能通过IP的问题

    前序 现在EJB是真的有点落伍了么,网上找点资料都挺难的样子,而且都是很久的了..好吧,最近对EJB有点兴趣学习一下,结果下载到服务器启动后,居然不能直接通过服务器IP访问,也是醉了,默认只能通过本地 ...

  8. Python3部分Print输出格式

    print("Hello World!") #直接打印字符串 print('Hello World!') #对于python,单引号也可以表示字符串 name = 'Tom' #自 ...

  9. linux内核完全剖析——基于0.12内核-笔记(1)-CPU 数据通信

    CPU数据通信总线 CPU通过地址线.数据线.控制信号组成的本地总线(或称为内部总线)与系统其它部分进行数据通信. 地址总线 地址总线用于内存或I/O设备的地址,即指明需要读/写数据的具体位置. 数据 ...

  10. How to Be Assertive Asking for What You Want Firmly and Fairly

    What Is Assertiveness? It's not always easy to identify truly assertive behavior. This is because th ...