Skip to content
Published at:

理解命令行程序

**Hacker News**上有一个关于man手册的讨论非常有意思:对于Gui程序,界面可以去指导/指示用户去如何使用程序;而对于命令行的程序你必需去阅读man手册才能了解如何去使用它,所以应该把命令行的man手册视为命令行程序的一部分

命令行程序: 程序 + 手册

程序

在大多数人开始接触Linux系统的时候,学的第一个东西大概就是命令行:ls, cp, mv, mkdir, cat, touch... 之类,就是用这些命令来给Linux系统下发指令,和电脑交互。在接触命令行相当长的时间内去死背命令行,有哪些命令行、有什么用,以及这个命令有哪些选项;毫无疑问,在你没有完全理解这个东西的时候,死背是很有用的,但是,然后呢,命令行为什么是这样?内部是如何实现的?

命令行为什么是这样?

$ cmd [--option] [arguments]这是一个通用命令行的语法基本格式。

输入指令就是给电脑下达指令,好像在说:电脑,你给我去干啥?干啥由cmd命令来决定;以什么样的方式去做这个由option选项来决定,比如ls -hal中的-hal决定了用什么方式显示内容;参数更像是电脑在干啥时的附加参数或是操作对象。 下面来一一讨论

  • cmd命令名字
  • option命令选项
  • arguments参数

cmd命令

我们敲的命令都是具有一定功能的程序。

命令的分类

  • shell内置的命令
  • 电脑里的二进制可执行程序,在系统安装好的时候就存在了
  • 自己下载安装的程序
  • 其它的bash、python脚本文件

**命令名字:**记得当时我当时死背了很多的电脑快捷键,突然冒出一个问题:为什么命令行的命令行是长这样?为什么快捷键是那些键?后来总结、搜索相关资料写了:我为什么喜欢用键盘/快捷键,而不是鼠标?;这里回到命令行命名的部分,大多命令都是相应单词的缩写或是有特定的含义:知乎上有人写了总结:知乎:Linux中常用的命令都是哪些单词的缩写?

man手册

简介

man的全称是manual,也就是手册、指南的意思,更现代的说法就是文档。文档是软件工程中非常重要的一部分

文档的分类:

分类分为很多章节section,可以通过$ man man可以查看,如下:

区块说明
1一般命令
2系统调用
3函数,涵盖C标准函数库
4特殊文件(通常是/dev中的设备)和驱动程序
5文件格式和约定
6游戏屏保
7杂项
8系统管理命令守护进程

常用man命令:

  • man cmd_name:打开查找到的第一个对应的手册
  • man -a cmd_name:按章节顺序,依次打开找到的手册
  • man num cmd_name:打开指定章节中对应手册
  • man -f cmd_name:搜索命令:命令的名字,命令的简介

手册内命令:

  • h:help帮助
  • q:quit退出
  • vim命令模式命令:jk du Ggg /nN

man命令的本质

man还有个命令选项$ man -w cmd_name,可以去查找命令手册所在的路径。用vim打开,这个文件本质上就是一个拥有特定语法的文档,所以手册的本质上就是一个文档文件,

man手册中的语法

  • 包括哪些部分

  • SYNOPSIS中的语法含义
    • [...]:可选
    • a|b:二选一
    • <command>:强制一定要写

Updated at: