小知识:帮你精通Linux:从Manual手册中获得全局掌控感

%小知识:帮你精通Linux:从Manual手册中获得全局掌控感-猿站网-插图

当今可能我们很多人已经不频繁使用man命令了,取而代之的是更加友好简单的tldr

tldr du |head   du  Disk usage: estimate and summarize file and directory space usage  – List the sizes of a directory andany subdirectories, in the given unit (B/KB/MB):     du -{{b|k|m}} {{path/to/directory}}   – List the sizes of a directory andany subdirectories, in human-readable form (i.e. auto-selecting the appropriate unit for each size):     du -h {{path/to/directory}}r   – Show the sizeof a single directory, in human readable units: 

然而,man命令始终是我个人的最爱。每当心情低落时候,我就会中用man命令信步由缰的做各种查询。从中慢慢获得秩序感,全局的掌控感,低落的心情也慢慢疗愈。

man命令让我们与计算机对话沟通,又仿佛促使我们与计算机融为一体,人机合一。

1.man的9个章节

man可能是唯一一个可以自我陈述的命令。我们先从最直觉的使用方法开始。

man man 

 %小知识:帮你精通Linux:从Manual手册中获得全局掌控感-1猿站网-插图

从结果中,我们看到Manual手册共分为9个章节(sections)。似乎有点多,我们将归类为4个部分。

前三项是commands(shell-commands, system-calls,libraries) 接着是files(special-file,file-format) 然后是Miscellaneous, Game也放在这里 最后是System(Administation,Kernel)

2.存放地址

Linux系统中一切皆为文件,我们首先感兴趣的是,这些manual手册存放在哪里。根据前文 帮你精通Linux:透彻解析Linux的目录树结构 可以简单推测,

配置文件在/etc/目录下,具体则为/etc/manpath.config; 变量文件在/var/目录下,具体则为/var/cache/man/index.(bt|db|dir|pag)

/etc和/var是linux系统下的最重要的两个目录。

man文件本身存储在/usr/share目录下,/usr/share/man

如何查看特定命令的存储位置呢?需要 -w选项(对应长选项–where)

$ man -w time /usr/share/man/man1/time.1.gz 

加上选-a(对应–all)则能查到time在所有章节中的位置。

$ man -aw time /usr/share/man/man1/time.1.gz  /usr/share/man/man2/time.2.gz  /usr/share/man/man7/time.7.gz 

从结果中看到,在man1(shell commands), man2(system calls)和man7(Miscellaneous)中都有time这个命令。

作为补充,我们也可以用-f选项查看命令所属的sections。

$ man -f man  man (7)              – macros to format man pages  man (1)              – an interface to the on-line reference manuals  ​  $ man -f time time (7)             – overview oftimeand timers  time (1)             – run programs and summarize system resource usage  time (2)             – get timein seconds  

此处的 -f 等价于–whatis

whatis (1) – display one-line manual page descriptions

3.指定查询章节

从 -w 选项中看到了命令的地址,便可以指定章节查询。

whatis (1)           – display one-line manual page descriptions 

%小知识:帮你精通Linux:从Manual手册中获得全局掌控感-2猿站网-插图

man  7 time

%小知识:帮你精通Linux:从Manual手册中获得全局掌控感-3猿站网-插图

4.正则查询

man命令最有意思的就是正则查询,心情不好的时候,可以玩上一整天。

从正则查询中,能够获得对全局的掌控感,比如查询systemd有多少个命令:

$ man -k ^systemd |nl |tail      158  systemd.service (5)  – Service unit configuration     159  systemd.slice (5)    – Slice unit configuration     160  systemd.socket (5)   – Socket unit configuration     161  systemd.special (7)  – Special systemd units     162  systemd.swap (5)     – Swap unit configuration     163  systemd.syntax (7)   – General syntax of systemd configuration files     164  systemd.target (5)   – Target unit configuration     165  systemd.time (7)     – Timeanddate specifications     166  systemd.timer (5)    – Timer unit configuration     167  systemd.unit (5)     – Unit configuration 

从结果中国马上获知167这个结果。

或者查询有多少与calendar相关的命令:

$ man -k calendar |nl       1  cal (1)              – displays a calendar and the dateof Easter       2  calendar (1)         – reminder service       3  ncal (1)             – displays a calendar and the dateof Easter 

又或者查询全部的ls命令:

$ man -k ^ls |nl       1  ls (1)               – list directory contents       2  lsar (1)             – list archive file contents       3  lsattr (1)           – list file attributes on a Linux second extended file system       4  lsb_release (1)      – print distribution-specific information       5  lsblk (8)            – list block devices       6  lscpu (1)            – display information about the CPU architecture       7  lsearch (3)          – linear search of an array       8  lseek (2)            – reposition read/write file offset       9  lseek64 (3)          – reposition 64-bitread/write file offset      10  lsetxattr (2)        – set an extended attribute value      11  lshw (1)             – list hardware      12  lsinitramfs (8)      – list content of an initramfs image      13  lsipc (1)            – show information on IPC facilities currently employed in …      14  lslocks (8)          – list local system locks      15  lslogins (1)         – display information about known users in the system      16  lsmem (1)            – list the ranges of available memory with their online status      17  lsmod (8)            – Show the status of modules in the Linux Kernel      18  lsns (8)             – list namespaces      19  lsof (8)             – list open files      20  lspci (8)            – list all PCI devices      21  lspcmcia (8)         – display extended PCMCIA debugging information      22  lspgpot (1)          – extracts the ownertrust valuesfrom PGP keyrings and list…      23  lstat (2)            – get file status      24  lstat64 (2)          – get file status      25  lsusb (8)            – list USB devices 

5.全局掌控

文章开头就介绍过section 2 中是system-calls命令。我们不免心生好奇,哪些是system-calls呢?

$ man -s 2 -k . |nl |tail     484  vm86old (2)          – enter virtual 8086 mode     485  vmsplice (2)         – splice user pages to/from a pipe     486  vserver (2)          – unimplemented system calls     487  wait (2)             – wait for process to change state     488  wait3 (2)            – wait for process to change state, BSD style     489  wait4 (2)            – wait for process to change state, BSD style     490  waitid (2)           – wait for process to change state     491  waitpid (2)          – wait for process to change state     492  write (2)            – write to a file descriptor     493  writev (2)           – reador write data into multiple buffers 

由上可知,系统中共有493个system-calls。我们分析下这一行命令:

man -s 2 -k .  

短选代表的是长选项–section,-k 是 keyword,等价于 apropos命令,最后的 dot 点 乃是正则表达式里的任意字符的表达方式。

于是,仅仅通过上面的简单命令获得对整个文档乃至整台计算机,整个计算机科学的全局掌控感。我们迅速掠览一遍这9个sections。

Section 1 Shell Commands系统命令:

$ man -s 1 -k . |nl| tail -n 5    2451  zless (1)            – file perusal filter for crt viewing of compressed text    2452  zlib_decompress (1)  – decompress mysqlpump ZLIB-compressed output   2453  zmore (1)            – file perusal filter for crt viewing of compressed text    2454  znew (1)             – recompress .Z files to .gz files    2455  zsoelim (1)          – satisfy .so requests in roff input 

Section 2 Syetem Calls系统调用

$ man -s 2 -k . |nl| tail -n 5     489  wait4 (2)            – wait for process to change state, BSD style     490  waitid (2)           – wait for process to change state     491  waitpid (2)          – wait for process to change state     492  write (2)            – write to a file descriptor     493  writev (2)           – reador write data into multiple buffers 

Section 3 C LIbraries C语库

$ man -s 3 -k . |nl| tail -n 5    1899  y1l (3)              – Bessel functions of the second kind    1900  yn (3)               – Bessel functions of the second kind    1901  ynf (3)              – Bessel functions of the second kind    1902  ynl (3)              – Bessel functions of the second kind    1903  zlib (3)             – compression/decompression library 

Section 4 Special Files 特殊文件

$ man -s 4 -k . |nl| tail -n 5      48  veth (4)             – Virtual Ethernet Device      49  vmware (4)           – VMware SVGA video driver      50  wacom (4)            – Wacom input driver      51  wavelan (4)          – AT&T GIS WaveLAN ISA device driver      52  zero (4)             – data sink 

Secion 5 File Format and conventions 文件格式及惯例

$ man -s 5 -k . |nl| tail -n 5     424  xorg.conf (5)        – configuration files for Xorg X server     425  xorg.conf.d (5)      – configuration files for Xorg X server     426  Xsession (5)         – initialize X session     427  Xsession.options (5) – configuration options for Xsession (5)     428  Xwrapper.config (5)  – Xorg X server binary wrapper 

Secion 6 Games 游戏

$ man -s 6 -k . |nl| tail -n 5       1  intro (6)            – introduction to games       2  kmahjongg (6)        – Mahjongg game for KDE       3  kmines (6)           – KDE mine sweeper game       4  kpat (6)             – A highly addictive card game.       5  ksudoku (6)          – KDE Sudoku games 

Section 7 Miscellaneous (including macro packages and conventions)杂项

$ man -s 7 -k . |nl| tail -n 5     470  XConsortium (7)      – X Consortium information     471  xkeyboard-config (7) – XKB data description files     472  XOrgFoundation (7)   – X.Org Foundation information     473  Xsecurity (7)        – X display access control     474  XStandards (7)       – X Window System Standards and Specifications 

Section 8 System administration commands (usually only for root)系统管理命令

$ man -s 8 -k . |nl| tail -n 5     890  xtables-nft-multi (8) – iptables using nftables kernel api     891  xtables-translate (8) – translation tool to migrate from iptables to nftables     892  zdump (8)            – timezone dumper     893  zic (8)              – timezone compiler     894  zramctl (8)          – set up and control zram devices 

Section 9 Kernel routines [Non standard] 内核函数

➜  ~ man -s 9 -k .  vmxnet (9)           – vmware kernel module 

掌控全局还有另外一种方法,就是intro命令:

$ man -f intro  intro (8)            – introduction to administration and privileged commands  intro (7)            – introduction to overview and miscellany section intro (3)            – introduction to library functions  intro (4)            – introduction to special files  intro (1)            – introduction touser commands  intro (5)            – introduction to file formats and filesystems  intro (6)            – introduction to games  intro (2)            – introduction to system calls 

我们看到每个section都有一个intro。

比如我们查看section 2的intro:

%小知识:帮你精通Linux:从Manual手册中获得全局掌控感-4猿站网-插图

6.游戏

man命令有良好的疗愈功效,不妨来看看Kubuntu自带的四个游戏。

$ man -s 6 -k . |nl       1  intro (6)            – introduction to games       2  kmahjongg (6)        – Mahjongg game for KDE       3   (6)           – KDE mine sweeper game       4  kpat (6)             – A highly addictive card game.       5  ksudoku (6)          – KDE Sudoku games 

7.收尾总结

man命令是我们最好的陪伴,帮助满血复活对工作和生活的掌控感。

原文地址:https://www.toutiao.com/i6903830053050794507/

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:2021年面向初学者的5个优秀Linux发行版

2023-5-4 5:59:16

建站知识

小知识:如何将 Linux 终端中命令的输出保存到文件中

2023-5-4 6:16:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索