程序的组成部分:
(四个) 二进制程序文件, 库文件, 配置文件, 帮助文件。
一般来说,前两者是二进制格式,后两者是文本格式
二进制文件,库文件,都是可执行文件
(库文件:不能独立执行,只能被调用时执行)
配置文件,帮助文件:可查看其内容
推荐一本书《穿越计算机的迷雾》
文件名:严格区分大小写,路径分隔符/
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
机械工业
电子工业
人邮
清华大学
水利水电
上面这些出版社出的书挺好。