当今可能我们很多人已经不频繁使用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
从结果中,我们看到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 descriptionsman 7 time
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 devices5.全局掌控
文章开头就介绍过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 inputSection 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 buffersSection 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 librarySection 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 sinkSecion 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 wrapperSecion 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 gamesSection 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 SpecificationsSection 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 devicesSection 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:
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 games7.收尾总结
man命令是我们最好的陪伴,帮助满血复活对工作和生活的掌控感。
原文地址:https://www.toutiao.com/i6903830053050794507/