现在我们很多人可能不经常使用man命令,取而代之的是更友好、更简单的tldr。$tldrdu|headduDiskusage:estimateandsummarizefileanddirectoryspaceusage.-Listthesizesofadirectoryandanysubdirectories,inthegivenunit(B/KB/MB):du-{{b|k|m}}{{path/to/directory}}-Listthesizesofadirectoryandanysubdirectories,inhuman-readableform(i.ttheelectingauto-app-ro):du-h{{path/to/directory}}r-Showthesizeofasingledirectory,inhumanreadableunits:但是,man命令始终是我个人的最爱。每当心情低落的时候,我就会用man命令悠闲地做各种查询。从中,我慢慢有了秩序感,有了全局掌控感,低落的情绪也慢慢得到了治愈。man命令让我们可以和电脑进行交流,它似乎让我们与电脑、人与机器融为一体。1.manman的9章可能是唯一可以自我宣告的命令了。让我们从最直观的使用方式开始。manman从结果中,我们看到手册分为9章(节)。似乎有点多,我们将其分为4个部分。前三项是命令(shell-commands、system-calls、libraries)接着是文件(special-file、file-format)然后是Miscellaneous,Game也放在这里最后是System(Administation、Kernel)2.存放地址Linux系统中的一切都是文件。我们感兴趣的第一件事是这些手册存放在哪里。根据上一篇助你掌握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选项(对应long选项--where)$man-wtime/usr/share将/man/man1/time.1.gz加入-a(对应--all)即可找到时间在所有章节中的位置。$man-awtime/usr/share/man/man1/time.1.gz/usr/share/man/man2/time.2.gz/usr/share/man/man7/time.7.gz从结果It原来在man1(shell命令)、man2(系统调用)和man7(杂项)中都有时间命令。作为补充,我们还可以使用-f选项查看命令所属的段。$man-fmanman(7)-macrostoformatmanpagesman(1)-aninterfacetotheon-linereferencemanuals$man-ftimetime(7)-overviewoftimeandtimerstime(1)-runprogramsandsummarizesystemresourceusagetime(2)-gettimeinseconds这里的-f相当于--whatiswhatis(1)-显示单行手册页说明3。指定要查询的章节从-w选项中看到命令的地址后,您可以指定要查询的章节。whatis(1)-显示一行手册页描述man7time4。常规查询man命令最有趣的地方是常规查询。心情不好的时候可以玩一整天。从正则查询中可以得到整体的控制感,比如查询systemd有多少命令:$man-k^systemd|nl|tail158systemd.service(5)-Serviceunitconfiguration159systemd.slice(5)-Sliceunitconfiguration160systemd.socket(5)-Socketunitconfiguration161systemd.special(7)-Specialsystemdunits162systemd.swap(5)-Swapunitconfiguration163systemd.syntax(7)-Generalsyntaxofsystemdconfigurationfiles164systemd.target(5)-Targetunitconfiguration165systemd.time(7)-Timeanddatespecifications166systemd.runit-timer(5)Unitconfiguration立马学会了结果167来自中国的结果。或者查询有多少与calendar相关的命令:$man-kcalendar|nl1cal(1)-displaysacalendarandthedateofEaster2calendar(1)-reminderservice3ncal(1)-displaysacalendarandthedateofEaster又或者查询全部的ls^1cal(1)ls(man)|nl1cal(1)-displaysacalendarandthedateofEaster2calendar(1)-reminderservice3ncal(1)-displaysacalendarandthedateofEaster-listdirectorycontents2lsar(1)-listarchivefilecontents3lsattr(1)-listfileattributesonaLinuxsecondextendedfilesystem4lsb_release(1)-printdistribution-specificinformation5lsblk(8)-listblockdevices6lscpu(1)-displayinformationabouttheCPUarchitecture7lsearch(3)-linearsearchofanarray8lseek(2)-repositionread/writefileoffset9lseek64(3)-reposition64-bitread/writefileoffset10lsetxattr(2)-setanextendedattributevalue11lshw(1)-listhardware12lsinitramfs(8)-listcontentofaninitramfsimage13lsipc(1)-showinformationonIPCfacilitiescurrentlyemployedin...14lslocks(8)-listlocalsystemlocks15lslogins(1)-displayinformationaboutknownusersinthesystem16lsmem(1)-listtherangesofavailablememorywiththeironlinestatus17lsmod(8)-ShowthestatusofmodulesintheLinuxKernel18lsns(8)-listnamespaces19lsof(8)-listopenfiles20lspci(8)-listallPCIdevices21lspcmcia(8)-displayextendedPCMCIAdebugginginformation22lspgpot(1)-extractstheownertrustvaluesfromPGPkeyringsandlist...23lstat(2)-getfilestatus24lstat64(2)-getfilestatus25lsusb(8)-listUSBdevices5。我们不禁对命令感到好奇,什么是系统调用?$man-s2-k.|nl|tail484vm86old(2)-entervirtual8086mode485vmsplice(2)-spliceuserpagesto/fromapipe486vserver(2)-unimplementedsystemcalls487wait(2)-waitforprocesstochangestate488wait3(2)-waitforprocesstochangestate,BSDstyle489wait4(2)-state,waitForprocessto2style(2)等待BSDstyle49-waitforprocesstochangestate491waitpid(2)-waitforprocesstochangestate492write(2)-writetoafiledescriptor493writev(2)-readorwrite9calliers下面分析一下这行命令:man-s2-k。短选代表长选项--section,-k是关键字,相当于apropos命令,最后一个点是正则表达式方式中任意字符的表达方式。因此,仅仅通过上面简单的命令,你就可以获得对整个文档,甚至整个计算机,乃至整个计算机科学的全局控制感。让我们快速浏览一下这9个部分。第1节Shell命令系统命令:$man-s1-k.|nl|tail-n52451zless(1)-fileperusalfilterforcrtviewingofcompressedtext2452zlib_decompress(1)-decompressmysqlpumpZLIB-compressedoutput2453zmore(1)-fileperusalfilterforcrtviewingofcompressedtext2454znew(1)-recompressz1-zfiles25(1)-recompress.zfiles25(1)satisfy.sorequestsinroffinputSection2SyetemCalls系统调用$man-s2-k.|nl|tail-n5489wait4(2)-waitforprocesstochangestate,BSDstyle490waitid(2)-waitforprocesstochangestate491waitpid(2)-waitforprocesstochangestate492write(2)-writetoafiledescriptor493tochangestate493waitid(2)-writetoafiledescriptor493readwritebudatainC(2)LibrariesC语言库$man-s3-k.|nl|tail-n51899y1l(3)-Besselfunctionsofthesecondkind1900yn(3)-Besselfunctionsofthesecondkind1901ynf(3)-Besselfunctionsofthesecondkind1902ynl(3)-Besselfunctionsofthesecondkind1903zlib(3)-压缩/解压库Section4SpecialFiles文特废man-s4-k.|nl|tail-n548veth(4)-VirtualEthernetDevice49vmware(4)-VMwareSVGAvideodriver50wacom(4)-Wacominputdriver51wavelan(4)-AT&TGISWaveLANISAdevicedriver52zero(4)-datasinkSecion5文件格式和约定文件格式及习惯示例$man-s5-k.|nl|tail-n5424xorg.conf(5)-configurationfilesforXorgXserver425xorg.conf.d(5)-configurationfilesforXorgXserver426Xsession(5)-initializeXsession427Xsession.options(5)-configurationoptionsforXsession(5)428Xwrapper.config(5)-XorgXserverbinarywrapperSecion6Games游戏$man-s6-k.|nl|tail-n51intro(6)-introductiontogames2kmahjongg(6)-MahjongggameforKDE3kmines(6))-KDE扫雷游戏4kpat(6)-Ahighlyaddictivecardgame.5ksudoku(6)-KDESudokugamesSection7Miscellaneous(includingmacropackagesandconventions)杂项$man-s7-k.|nl|tail-n5470XConsortium(7)-XConsortiuminformation471xkeyboard-config(7)-XKBdatadescriptionfiles472XOrgFoundation(7)-X.OrgFoundationinformation473Xsecurity(7)-Xdisplayaccesscontrol474XStandards(7)-XWindowSystemStandardsandSpecificationsSection8系统管理命令(通常只针对root)系统管理命令$man-s8-k.|nl|tail-n5890xtables-nft-multi(8)-iptablesusingnftableskernelapi891xtables-translate(8)-translationtooltomigratefromiptablestonftables892zdump(8)-timezonedumper893zic(8)-timezonecompiler894zramctl(8)-setupandcontrolzramdevicesSection9内核例程[非标准]~内蒙v核m-x9冰(9)-vmwarekernelmodule还有一种控制全局的方法,就是intro命令:$man-fintrointro(8)-introductiontoadministrationandprivilegedcommandsintro(7)-introductiontooverviewandmiscellanysectionintro(3)-introductiontolibraryfunctionsintro(4)-introductiontospecialfilesintro(1)-introductionto(command5)-introductiontofileformatsandfilesystemsintro(6)-introductiontogamesintro(2)-introductiontosystemcalls我们看到每个部分都有一个介绍。比如我们看第2节的介绍:6.游戏的man命令有很好的治愈效果。让我们来看看KubuntuFour游戏自带的介绍。$man-s6-k.|nl1intro(6)-游戏介绍2kmahjongg(6)-KDE3麻将游戏(6)-KDE扫雷游戏4kpat(6)-Ahighlyaddictivecardgame.5ksudoku(6)-KDE数独游戏7。结语总结mancommandisourbestcompany,帮助您对工作和生活有掌控感。
