帮你精通Linux:从Manual手册中获得全局掌控感
当今可能我们很多人已经不频繁使用man命令了,取而代之的是更加友好简单的tldr。当今可能我们很多人已经不频繁使用man命令了,取而代之的是更加友好简单的tldr。
$ tldr du |head
du
Disk usage: estimate and summarize file and directory space usage.
- List the sizes of a directory and any subdirectories, in the given unit (B/KB/MB):
du -{{b|k|m}} {{path/to/directory}}
- List the sizes of a directory and any subdirectories, in human-readable form (i.e. auto-selecting the appropriate unit for each size):
du -h {{path/to/directory}}r
- Show the size of a single directory, in human readable units:
然而,man命令始终是我个人的最爱。每当心情低落时候,我就会中用man命令信步由缰的做各种查询。从中慢慢获得秩序感,全局的掌控感,低落的心情也慢慢疗愈。
man命令让我们与计算机对话沟通,又仿佛促使我们与计算机融为一体,人机合一。
1.man的9个章节
man可能是唯一一个可以自我陈述的命令。我们先从最直觉的使用方法开始。
man man
从结果中,我们看到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 of time and timers
time (1) - run programs and summarize system resource usage
time (2) - get time in seconds
此处的 -f 等价于--whatis
whatis (1) - display one-line manual page descriptions
3.指定查询章节
从 -w 选项中看到了命令的地址,便可以指定章节查询。
whatis (1) - display one-line manual page descriptions
man7 time
4.正则查询
man命令最有意思的就是正则查询,心情不好的时候,可以玩上一整天。
从正则查询中,能够获得对全局的掌控感,比如查询systemd有多少个命令:
$ man -k ^systemd |nl |tail
158systemd.service (5)- Service unit configuration
159systemd.slice (5) - Slice unit configuration
160systemd.socket (5) - Socket unit configuration
161systemd.special (7)- Special systemd units
162systemd.swap (5) - Swap unit configuration
163systemd.syntax (7) - General syntax of systemd configuration files
164systemd.target (5) - Target unit configuration
165systemd.time (7) - Time and date specifications
166systemd.timer (5) - Timer unit configuration
167systemd.unit (5) - Unit configuration
从结果中国马上获知167这个结果。
或者查询有多少与calendar相关的命令:
$ man -k calendar |nl
1cal (1) - displays a calendar and the date of Easter
2calendar (1) - reminder service
3ncal (1) - displays a calendar and the date of Easter
又或者查询全部的ls命令:
$ man -k ^ls |nl
1ls (1) - list directory contents
2lsar (1) - list archive file contents
3lsattr (1) - list file attributes on a Linux second extended file system
4lsb_release (1) - print distribution-specific information
5lsblk (8) - list block devices
6lscpu (1) - display information about the CPU architecture
7lsearch (3) - linear search of an array
8lseek (2) - reposition read/write file offset
9lseek64 (3) - reposition 64-bit read/write file offset
10lsetxattr (2) - set an extended attribute value
11lshw (1) - list hardware
12lsinitramfs (8) - list content of an initramfs image
13lsipc (1) - show information on IPC facilities currently employed in ...
14lslocks (8) - list local system locks
15lslogins (1) - display information about known users in the system
16lsmem (1) - list the ranges of available memory with their online status
17lsmod (8) - Show the status of modules in the Linux Kernel
18lsns (8) - list namespaces
19lsof (8) - list open files
20lspci (8) - list all PCI devices
21lspcmcia (8) - display extended PCMCIA debugging information
22lspgpot (1) - extracts the ownertrust values from PGP keyrings and list...
23lstat (2) - get file status
24lstat64 (2) - get file status
25lsusb (8) - list USB devices
5.全局掌控
文章开头就介绍过section 2 中是system-calls命令。我们不免心生好奇,哪些是system-calls呢?
$ man -s 2 -k . |nl |tail
484vm86old (2) - enter virtual 8086 mode
485vmsplice (2) - splice user pages to/from a pipe
486vserver (2) - unimplemented system calls
487wait (2) - wait for process to change state
488wait3 (2) - wait for process to change state, BSD style
489wait4 (2) - wait for process to change state, BSD style
490waitid (2) - wait for process to change state
491waitpid (2) - wait for process to change state
492write (2) - write to a file descriptor
493writev (2) - read or 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
2451zless (1) - file perusal filter for crt viewing of compressed text
2452zlib_decompress (1)- decompress mysqlpump ZLIB-compressed output
2453zmore (1) - file perusal filter for crt viewing of compressed text
2454znew (1) - recompress .Z files to .gz files
2455zsoelim (1) - satisfy .so requests in roff input
Section 2 Syetem Calls系统调用
$ man -s 2 -k . |nl| tail -n 5
489wait4 (2) - wait for process to change state, BSD style
490waitid (2) - wait for process to change state
491waitpid (2) - wait for process to change state
492write (2) - write to a file descriptor
493writev (2) - read or write data into multiple buffers
Section 3 C LIbraries C语库
$ man -s 3 -k . |nl| tail -n 5
1899y1l (3) - Bessel functions of the second kind
1900yn (3) - Bessel functions of the second kind
1901ynf (3) - Bessel functions of the second kind
1902ynl (3) - Bessel functions of the second kind
1903zlib (3) - compression/decompression library
Section 4 Special Files 特殊文件
$ man -s 4 -k . |nl| tail -n 5
48veth (4) - Virtual Ethernet Device
49vmware (4) - VMware SVGA video driver
50wacom (4) - Wacom input driver
51wavelan (4) - AT&T GIS WaveLAN ISA device driver
52zero (4) - data sink
Secion 5 File Format and conventions 文件格式及惯例
$ man -s 5 -k . |nl| tail -n 5
424xorg.conf (5) - configuration files for Xorg X server
425xorg.conf.d (5) - configuration files for Xorg X server
426Xsession (5) - initialize X session
427Xsession.options (5) - configuration options for Xsession (5)
428Xwrapper.config (5)- Xorg X server binary wrapper
Secion 6 Games 游戏
$ man -s 6 -k . |nl| tail -n 5
1intro (6) - introduction to games
2kmahjongg (6) - Mahjongg game for KDE
3kmines (6) - KDE mine sweeper game
4kpat (6) - A highly addictive card game.
5ksudoku (6) - KDE Sudoku games
Section 7 Miscellaneous (including macro packages and conventions)杂项
$ man -s 7 -k . |nl| tail -n 5
470XConsortium (7) - X Consortium information
471xkeyboard-config (7) - XKB data description files
472XOrgFoundation (7) - X.Org Foundation information
473Xsecurity (7) - X display access control
474XStandards (7) - X Window System Standards and Specifications
Section 8 System administration commands (usually only for root)系统管理命令
$ man -s 8 -k . |nl| tail -n 5
890xtables-nft-multi (8) - iptables using nftables kernel api
891xtables-translate (8) - translation tool to migrate from iptables to nftables
892zdump (8) - timezone dumper
893zic (8) - timezone compiler
894zramctl (8) - set up and control zram devices
Section 9 Kernel routines 内核函数
➜~ 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 to user 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:
6.游戏
man命令有良好的疗愈功效,不妨来看看Kubuntu自带的四个游戏。
$ man -s 6 -k . |nl
1intro (6) - introduction to games
2kmahjongg (6) - Mahjongg game for KDE
3 (6) - KDE mine sweeper game
4kpat (6) - A highly addictive card game.
5ksudoku (6) - KDE Sudoku games
7.收尾总结
man命令是我们最好的陪伴,帮助满血复活对工作和生活的掌控感。
原文地址:https://www.toutiao.com/i6903830053050794507/
http://www.zzvips.com/article/123293.html
页:
[1]