程序的组成部分

                   (四个) 二进制程序文件, 库文件, 配置文件, 帮助文件。

                   一般来说,前两者是二进制格式,后两者是文本格式

                   二进制文件,库文件,都是可执行文件

                           (库文件:不能独立执行,只能被调用时执行)

                   配置文件,帮助文件:可查看其内容

推荐一本书《穿越计算机的迷雾》

文件名:严格区分大小写,路径分隔符/

Linux命令基础:

命令的语法通用格式:

#COMMAND OPTIONS ARGUMENTS         转换成中文就是: #命令字选项参数

命令提示符#后面紧跟的一定是命令字

发起一个命令:请求内核将某个二进制程序运行为一个进程:

         程序——>进程 则会出现以下情况:

         静态——>动态(有生命周期)

     外部命令本身是一个可执行的程序文件,二进制格式的文件,有可能会调用共享库文件

                   多数系统程序文件都存放在一下目录中:

 /bin, /sbin, /usr/bin usr/sbin,

当偶尔安装第三方软件时 /usr/local/bin, /usr/local/sbin

                   普通命令存放在:

                            /bin,/usr/bin, /usr/local/bin

                   管理命令存放在:

                            /sbin,/usr/sbin, /usr/local/sbin

库文件

库文件就是应用程序的组成部分,  作用就是公共的共享程序,也是二进制程序,不能独立执行,只能被调用。大部分都存放在lib目录下。

共享库:

32bits的库:/lib, /usr/lib,/usr/local/lib

64bits的库:/lib64,/usr/lib64, /usr/local/lib64

命令必须遵循特定格式规范:

linux尊守ELF格式。

file命令就是查看文件内容的类型的。

~]#file /bin/ls

如下截图显示:

ls 二进制命令是ELF格式的,64位的,适合文件分层结构系统,可执行的,64位的,动态链接的可执行程序文件。

                           

注意:并非所有的命令都有一个在某目录与之对应的可执行程序文件。

命令分为两类:

 

根据命令是否有对应的可执行程序文件。

shell程序的自带的命令:又叫内内建命令。

  shell程序是特殊的程序,负责解析用户提供的命令。

ty

PATH

从哪些路径中查找键入的命令字符串多对应的命令文件。

查找次序,自左而右 这是针对外部命令。

怎样区别一个命令是内部命令还是外部命令?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

解:查看命令类型:

~]#type COMMAND

是内部命令就显示 "*** is a shell builtin"如果是外部命令,这就不会有builtin显示

如果将PATH中的路径全部去掉,那么外部命令不能执行,但是内部命令还能执行,但是如果想要执行外部命令,则也是可以执行的,我们用可以用绝对路径

         例如:

                   ls 等价于 /bin/ls

OPTIONS:

指定命令的运行特性

选项有两种表现形式:

         长格式:多个字符,比如单词,长选项不能合并

         短格式:单个字符,多个短选项可以合并。

长选项: --world, 例如:--help,  --human-readable

注意:长选项不能合并,有些选项可以带参数,这个数被称为选项参数。

长选项的参数一般用等号来连接,短选项的参数一般用空格来连接。

有些命令的选项没有前面的减号 -

ARGUMENTS

有些命令可以带多个参数,多个参数要用空格分开。

 

获取命令的使用帮助:

         内部命令:

                   helpCOMMAND

         外部命令:

                   1)命令自带简要的使用帮助

                   COMMAND  --help

                   2)使用手册manual

                                     位置:/usr/share/man

                   man  COMMAND

                   man手册中被分成了几部分:section

                            SECTION:

                            NAME:功能性说明

                            SYNOPSIS:语法格式

                            DESCRIPTION: 描述

                            OPTIONS:选项

                            EXAMPLES:使用实例

                            AUTHOR:作者

                            BUGS:报告程序bug的方式

                            SEEALSO:参考

         重点是语法格式:SYNOPSIS:

                            []:可选内容

                            <>:必须提供的内容

                            a|b|c:多选一

                            ...:同类内容可以出现多个

                  

         man手册页使用了了,多个man简要使用格式。

                   []:可选内容

                   <>:   必选的没容

                   a|b|c:可选内容.多选一

                   ......

我们的使用手册,不光分段,还分章节:压缩格式的文件,在手册上有章节之分,这些章节在

/usr/share/man下的

 man1,man2......man8....

         man1:用户命令

         man2:系统调用

         man3:C库调用

         man4:设备文件及特殊文件

         man5:文件格式,(配置文件格式)

         man6:游戏使用帮助

         man7:杂项

         man8:管理工具及守护进程

                   man查看指定的章节: ~]#man 数字 COMMAND

注意:并非每个COMMAND在所有章节下都有手册

                   查看一个命令在那些章节下有帮助: ~]#whatis  COMMAND

举例:

        

whatis这个命令是根据查询数据库进行的。

手动更新数据库,~]# makewhatis

如果我们在打开man手册页时,发现内容很长,需要翻页查看。则:

man命令打开手册页以后的操作方法:

                   翻屏:

                            空格键:向文件尾部翻一屏;

                            b   向文件首部翻一屏

                            ctrl+d:让文件尾部翻半屏

                            ctrl+u:      向文件首部翻半屏

                            回车键:向文件尾部翻一行

                            k                 :向文件首部翻一行

                            G              :跳转至最后一行

                            数字G    :跳转至指定行;

                            1G             :跳转至文件首部;

         文本搜索:

man手册页中按  /  然后输入要找的关键词。

                   /keyword(关键词):从文件首部向文件尾部一次查找,不区分大小写

                   ?keyword(关键词):从文件尾部向文件首部一次查找不区分大小写

                   n往下走,N往上走。

退出:

q

man手册可以不放在/usr/share/man 下,但是不放在这,man命令又找不到手册页,这时我们可以用一个选项 -M 来指定man命令去什么地方查找。

man选项 -M

-M  /PATH/TO/SOMEDIR(路径):到指定目录下查找命令手册并打开

 

 

 

练习:

获取useradd命令的用法:

1)添加用户gentoo;

2)添加用户slackware,要求指定其所用的shell/bin/tcsh

NAME

      useradd - create a new user or update default new user information(翻译:创建一个新用户,或者更新默认新用户信息)

 步骤:

1

[root@localhost ~]# useradd gentoo                //创建gentoo用户

[root@localhost ~]# id gentoo                            //id来验证是否创建成功

uid=502(gentoo) gid=502(gentoo)groups=502(gentoo)

[root@localhost ~]#

 

2

 

[root@localhost ~]# useradd -s/bin/tcsh slackware                //指定登录shell/bin/tcsh

[root@localhost ~]# id                                                                      //id来验证是否创建成功

uid=0(root) gid=0(root) groups=0(root)context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[root@localhost ~]#

上面用id命令不能查看到用户的登录shell,我们可以查看/etc/passwd文件来查看他的登录shell

[root@localhost ~]# tail -1 /etc/passwd

slackware:x:503:503::/home/slackware:/bin/tcsh

[root@localhost ~]#

 

第三种方法:

获取命令的帮助信息:

 info COMMAND   获取命令的在线帮助文档,一般作为man手册的补充文档。并不是每个命令都有

 

 

第四种方法:

很多应用程序会自带帮助文档,

/usr/share/doc/APP-VERSION

这个文件目录下会有以下三个比较重要的内容:

README:程序的相关信息

INSTALL:安装帮助

CHANGES:版本迭代时的改动信息。

 

第五种方法:

主流发行版官方文档

http://www.redhat.com/doc

程序官方文档:

官方站点上的"Document"

 

书籍出版社:

O'Reiley这家出版社出版的书很经典

Wrox

机械工业

电子工业

人邮

清华大学

水利水电

上面这些出版社出的书挺好。