Linux man命令的使用方法(整理收集自网络)

Linux提供了丰富的帮助手册,使用Linux man命令来查看一些不熟悉的命令的使用方法,还可以用来查询系统库文件中的一些函数定义和使用方法。

Linux man中的man就是manual的缩写,用来查看系统中自带的各种参考手册,但是手册页分为好几个部分,如下所示:

1   Executable programs or shell commands

2   System calls (functions provided by the kernel)

3   Library calls (functions within program libraries)

4   Special files (usually found in /dev)

5   File formats and conventions eg /etc/passwd

6   Games

7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)

8   System administration commands (usually only for root)

9   Kernel routines [Non standard]

----------------------

解释一下,

1是普通的命令

2是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)

3是库函数,如printf,fread

4是特殊文件,也就是/dev下的各种设备文件

5是指文件的格式,比如passwd,就会说明这个文件中各个字段的含义

6是给游戏留的,由各个游戏自己定义

7是附件还有一些变量,比如向environ这种全局变量在这里就有说明

8是系统管理用的命令,这些命令只能由root使用,如ifconfig

------------------------------------

n新文档,可能要移到更适合的领域。

o老文档,可能会在一段期限内保留。

l本地文档,与本特定系统有关的。

------------------------------------

在shell中输入man+数字+命令/函数即可以查到相关的命令和函数。若不加数字,那Linux man命令默认从数字较小的手册中寻找相关命令和函数。

例 如:我们输入man ls,它会在最左上角显示“LS(1)”,在这里,“LS”表示手册名称,而“(1)”表示该手册位于第一节章,同样,我们输入“man ifconfig”它会在最左上角显示“IFCONFIG(8)”。也可以这样输入命令:“man [章节号]手册名称”。

man是按照手册的章节号的顺序进行搜索的,比如:man sleep,只会显示sleep命令的手册,如果想查看库函数sleep,就要输入:man 3 sleep

------------------------------------

man -f command显示man程序的所有手册

例如:man -f kill

man n command显示指定章节的手册

man -a command显示所有章节的手册

man -w command显示手册所在的路径

man -aw command结合-a参数显示所有章节的手册路径

------------------------------------

在vim编辑器里头,可以通过大写字母K获取光标位置处相关内容的帮助,比如你把光标定位到printf,然后,按下ESC,再按下SHIFT+k就可以获取帮助啦。

关于库函数和系统调用

库 函数是高层的,完全运行在用户空间,为程序员提供调用真正的在幕后完成实际事务的系统调用的更方便的接口。系统调用在内核态运行并且由内核自己提供。标准 C库函数printf()可以被看做是一个通用的输出语句,但它实际做的是将数据转化为符合格式的字符串并且调用系统调用write()输出这些字符串。

是否想看一看printf()究竟使用了哪些系统调用?这很容易,编译下面的代码。

#i nclude <stdio.h>int main(void){ printf("hello"); return 0; }

使 用命令gcc -Wall -o hello hello.c编译。用命令strace hello跟踪该可执行文件。是否很惊讶?每一行都和一个系统调用相对应。strace是一个非常有用的程序,它可以告诉你程序使用了哪些系统调用和这些 系统调用的参数,返回值。这是一个极有价值的查看程序在干什么的工具。在输出的末尾,你应该看到这样类似的一行write(1, "hello", 5hello)。这就是我们要找的。藏在面具printf()的真实面目。既然绝大多数人使用库函数来对文件I/O进行操作(像fopen, fputs, fclose)。你可以查看man说明的第二部分使用命令man 2 write。man说明的第二部分专门介绍系统调用(像kill()和read())。man说明的第三部分则专门介绍你可能更熟悉的库函数(像 cosh()和random())。

你甚至可以编写代码去覆盖系统调用,正如我们不久要做的。骇客常这样做来为系统安装后门或木马。但你可以用它来完成一些更有益的事,像让内核在每次某人删除文件时输出“Tee hee, that tickles!”的信息。

总结:

从程序完成的功能来看,函数库提供的函数通常是不需要操作系统的服务,函数是在用户空间内执行的,除非函数涉及到I/O操作等,一般是不会切到核心态的。系统调用是要求操作系统为用户提供进程,提供某种服务,通常是涉及系统的硬件资源和一些敏感的软件资源等。

函 数库的函数,尤其与输入输出相关的函数,大多必须通过Linux的系统调用来完成。因此我们可以将函数库的函数当成应用程序设计人员与系统调用程序之间的 一个中间层,通过这个中间层,我们可以用一致的接口来安全的调用系统调用。这样程序员可以只要写一次代码就能够在不同版本的linux系统间使用积压种具 体实现完全不同的系统调用。至于如何实现对不同的系统调用的兼容性问题,那是函数库开发者所关心的问题。

从程序执行效率来看,系统 调用的执行效率大多要比函数高,尤其是处理输入输出的函数。当处理的数据量比较小时,函数库的函数执行效率可能比较好,因为函数库的作法是将要处理的数据 先存入缓冲区内,等到缓冲区装满了,再将数据一次写入或者读出。这种方式处理小量数据时效率比较高,但是在进行系统调用时,因为用户进程从用户模式进入系 统核心模式,中间涉及了许多额外的任务的切换工作,这些操作称为上下文切换,此类的额外工作会影响系统的执行效率。但是当要处理的数据量比较大时,例如当 输入输出的数据量超过文件系统定义的尽寸时,利用系统调用可获得较高的效率。

从程序的可移植性的角度来看,相对于系统调用,C语言的标准备函数库(ANSI C)具备较高的可移植性,在不同的系统环境下,只要做很少的修改,通常情况是不需要修改的。

===================================================================

ubuntu安装c语言的库函数man手册的

1.添加库函数手册

ubuntu默认是没有安装c语言的库函数man手册的,所以你在man perror和sendto之类的函数时会显示没有相关文档的问题,这个问题让我郁闷了我好久。解决方法:

sudo apt-get install manpages-dev

2.让man显示中文

ubuntu源里面已经包含了中文的man包,所以不用从其他地方down了,直接

sudo apt-get install manpages-zh

但是这样man默认显示的还不是中文,还需要以下两步

a.把中文man包转换成utf8格式的

新建一个脚本文件

gedit t.sh

把下面内容添加进去

#!/bin/bashcd /usr/share/man/zh_CN/for k in *docd $kfor i in *.gzdo j=`echo ${i%.gz}` gunzip $i iconv -f gb18030 -t utf8 $j >tmp mv tmp $j gzip $jdonecd ..done

然后

sudo ./t

b.修改man默认的语言

sudo gedit /etc/manpath.config把里面的所有的/usr/share/man改成/usr/share/man/zh_CN

保存后退出,然后你再试一下man ls

3.让没有中文帮助的显示英文

做 完上面第二部还不够,这时你再man一下一些c语言函数(不要用printf,socket之类比较有名的函数,这些已经有中文帮助了)的时候就会发现竟 然没有帮助,而刚才明明在第一步已经安装了啊。这是因为你上面把/usr/share/man改成/usr/share/man/zh_CN的操作使 man只在中文帮助中搜索,如果没有就直接放弃,因此还需要以下操作,才能让man在没有中文帮助的时候自动显示英文的帮助,如果英文的也没有,哪就真的 没有了。

sudo gedit /etc/manpath.config

然后搜索你刚才改过的地方,然后在其后面添加同样的一行,只是后面的目录还用原来的/usr/share/man,比如在修改后的

MANPATH_MAP /bin          /usr/share/man/zh_CN

再添加一行

MANPATH_MAP /bin          /usr/share/man

新安装了ubuntu 8.04版本,发现安装过的系统中缺少很多手册页。

用以下命令搞定了

sudo apt-get install manpages

sudo apt-get install manpages-de

sudo apt-get install manpages-de-dev

sudo apt-get install manpages-dev

【转自】https://www.cnblogs.com/Jason-Ch/articles/2772973.html

linux命令之man及ubuntu下man相关推荐

  1. linux终端上网,ubuntu中上网-如何使用ubuntu下用命令行上网?ubuntu下用命令行上网, 爱问知识人...

    2013-08-01 09:07:16 用于基本接口与IP配置的ifconfig ifconfig工具(interface configurator,接口配置器)提供了一些非常基本但是非常重要的功能. ...

  2. linux查看msf安装目录,Ubuntu下安装Metasploit和Linux命令大全

    ①下载Metasploit下的Linux安装包,拷贝至Ubunto的/opt目录. ②在Terminal下运行命令"chmod +x /opt/framework-linux-4.0.0.r ...

  3. linux 搭建开发stm32 stlink,Ubuntu下搭建stm32+stlink的开发环境

    Ubuntu下搭建stm32+stlink的开发环境 热度 3已有 15960 次阅读2014-8-19 21:09 | 上周因为忙于别的事情,很久没切到ubuntu下了,这周继续弄了弄. 弄到了一些 ...

  4. 街机linux有安卓好吗,Ubuntu下用xmame玩街机游戏

    Ubuntu下用xmame玩街机游戏 xmame是Windows下mame的Linux版,gxmame是xmame的图形化前端.mame号称是模拟效果最好.支持roms最多的模拟器,不过这个我就不清楚 ...

  5. r语言使用linux命令,技术|如何在 Ubuntu 上安装和使用 R 语言

    这个教程指导你如何在 Ubuntu 上安装 R 语言.你也将同时学习到如何在 Ubuntu 上用不同方法运行简单的 R 语言程序. R,和 Python 一样,它是在统计计算和图形处理上最常用的编程语 ...

  6. 乌班图linux命令,乌班图Ubuntu常用命令及用法详解

    1.ls 这个相当于Windows 下的dir命令,可以列出当前窗口或指定窗口下的内容. 2.rm 这个相当于Windows 下的del 和rmdir 命令,可以删除文件及文件夹. 常见用法:rm - ...

  7. Linux中fcitx输入法配置文件,Ubuntu下Fcitx输入法的安装与配置

    Fcitx 大家不陌生吧..支持五笔拼音混输.日文,棒子文.等等.很牛b的国人精品Linux输入法.而且,界面友好. 注:以上图片上传到红联Linux系统教程频道中. 对于.一些朋友安装之后出现Fci ...

  8. linux原生迅雷文本模式,ubuntu 下运行原生的迅雷

    ubuntu 下运行原生的迅雷 发布时间:2008-03-19 16:14:23来源:红联作者:NetFlow Linux 下的应用软件,比Windows 下的各种商用软件,目前还是要差一些.从win ...

  9. Linux的gedit没有权限,Ubuntu下有关gedit的各种问题

    gedit是Ubuntu中默认的一个编辑器,有点类似于我们经常使用的记事本程序,应用十分广泛.不过这个小家伙似乎很是有一点水土不服,特别是遇到中文之后就出现了各种各样的问题. 最为常见的就是中文乱码, ...

最新文章

  1. java基本类型(内置类型)取值范围
  2. 【转】电驴提示“该内容尚未提供权利证明,无法提供下载”之解决办法详解...
  3. 量子计算机九章能否预测未来,张礼立 : 中国 “九章”量子计算机到底厉害在哪?...
  4. prim求最短路径C语言,[图论]Prim算法求最小支撑树和最短路径
  5. ieee期刊_机器人领域主要国际会议与期刊列表
  6. Cisco路由器安全配置方案
  7. WINDOWS搜索dll的路径顺序
  8. What is a computer?
  9. Unable to negotiate with port 51732: no matching host key type found. Their offer:
  10. Core Text 实践:自定义每个字的位置
  11. python实现克莱姆法则
  12. java程序是怎么执行的
  13. python_考勤时间
  14. Testing Process - 读书笔记
  15. C# 隐藏 Windows Phone 侦错模式中萤幕右上角的数据条(模拟器、实机可用),截图好方便。...
  16. android nds模拟器窗口,《DraStic》安卓移植版 强悍的NDS模拟器下载
  17. c语言中aver是什么意思_什么是C语言函数
  18. ping: www.xxx.com: 未知的名称或服务
  19. PowerDesigner去掉背景中的网格线
  20. 雕刻机6轴usb控制卡源码RTCP算法双源码含pcb图

热门文章

  1. 商城模板_商城模板网站html5_微信小程序商城模板
  2. 计算机网络教室后黑板报,教室后黑板报设计图
  3. python生成单位阵或者对角阵的三种方法
  4. mysql中没有utf8字符集_mysql之坑–UTF8字符集
  5. 张小龙请回答:微信这些功能是咋想的?
  6. mysql数据库的安装和使用方法_Mysql数据库的安装和使用
  7. EDK2从搭建到运行
  8. IntelliJ IDEA 2018.3 安装+永久激活[Windows]
  9. 论文精度MISC: A MIxed Strategy-Aware Model Integrating COMET for Emotional Support Conversation
  10. AR增强图像——Vuforia图片识别配置以及使用