【Linux基础之命令规范】笔记
开源协定
如果程序使用并且修改了GPL代码,那么相应程序也必须要开源,否则就不能使GPL的软件,是否把程序商用和GPL没关系。
使用开源软件并不受GPL约束,只有基于开源软件,修改开源软件的源码的时才受 GPL约束。
GPL开源软件都不能卖版权,因为是公共版权
- LGPL开源协定:
http://www.gnu.org/copyleft/lesser.html - GPLv2开源协定:
http://www.gnu.org/licenses/gpl-2.0.html - GPLv3开源协定:
http://www.gnu.org/licenses/gpl-3.0.html - BSD开源协定:
1、如果二次发布的产品中包含源代码,则在源代码中必须带有原来的代码中的BSD协定;
2、如果二次发布产品是二进制格式的库或程序,则需要在发布的文档或版权声明中说明包含原来的代码中的BSD协定;
3、不可以用开源代码的作者或组织,以及原来的产品的名字做市场推广。 - Apache开源协定:
https://www.apache.org/licenses/LICENSE-2.0.html
开源关系图 ● 图片转自 www.chinaunix.net badb0y的blog(http://badb0y.blog.chinaunix.net/)
Linux基础知识
命令提示符
# COMMAND OPTIONS ARGUMENTS
当发起一个命令,表示请求内核将某个二进制程序运行为一个进程,由程序转换为进程,由静态转换为动态(有生命周期);并且由OPTIONS对命令进行修正;作用于所给定的参数ARGUMENTS上。
命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件
多数系统程序文件都存放于:/bin,/sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin目录
普通命令存放于:/bin, /sbin, /usr/local/bin目录
管理命令存放于:/sbin, /usr/sbin, /usr/local/sbin目录
共享库文件多数存放于:/lib,/lib64, /usr/lib64, /usr/local/lib, /usr/local/lib64
32位系统的库存放于:/lib /usr/lib /usr/local/lib
64位系统的库存放于:/lib64 /usr/lib64 /usr/local/lib64
查看路径下的文件命令:
~]# ls (以上文件路径)
注意:并非所有的命令都有一个在某目录与之对应的可执行程序文件
命令必须遵循特定格式规范:
Linux为:ELF,Windows为:exe、msi,等
查看程序类型及相关信息:
~]# file /bin/ls
命令分为两类:
- 由shell程序 的自带的命令:内置命令(builtin)
- 独立的可执行程序文件,文件名即命令名:外部命令
shell程序是独特的程序,负责解析用户提供的命令:
环境变量:PATH决定了从哪些路径中查找用户键入的命令字符串所对应的命令文件,查找次序:自左而右。
~]# echo $ PATH
按空格分隔命令各单元
查看命令类型:
~]# type COMMAND
选项OPTIONS:
指定命令的运行特性:
选项有两种表现形式
- 短选项:-C,-l,-d
注意:有些命令的选项没有-
如果同一命令同时使用多个短选项,多数可合并,如:
~]# ls -l -d /var
等同于
~]# ls -ld /var
- 长选项:--word,--help,--human,--readable。长选项不能合并。
注意:有些选项可以带参数,此参数称为选项参数。长选选项的参数由“=”号连接,短选项的参数由空格分隔
参数 ARGUMENTS
命令的作用或生效对象
注意:不同的命令的参数格式是不一样的,有些命令可同时带多个参数,中间以空格分隔,如:ls -ld /var /etc
获取命令的使用帮助:
- 内部命令帮助:
~]# help COMMAND
外部命令帮助:
(1. 命令自带简要格式的使用帮助
~]# COMMAND --help
(2.使用手册:manual
位置:/usr/share/man
~]# man COMMAND
SECTION:
- NAME:功能性说明
- SYNOPSIS:语法格式
- DESCRIPTION:描述
- OPTIONS:选项
- EXAMPLES:使用示例
- AUTHOR:作者
- BUGS:报告程序BUG的方式
- SEE ALSO:参考
……
操作方法
“[]”内为可选内容
“<>”内为必选内容
”a|b|c“为多选一
“……”为同类内容可出现多个:
使用手册:是压缩格式的文件,有章节之分。
/usr/share/man
man1,man2,……
上例中尾数的含义
1:用户命令
2:系统调用
3:C库调用
4:设备文件或特殊文件
5:文件格式(配置文件格式)
6:游戏使用帮助
7: 杂项
8:管理工具及守护进行
~]# man CHAPTER COMMAND
注意:并非每个COMMAND在所有章节下都有手册
查看命令:
~]# whatis COMMAND
注意:其执行过程是查询数据库进行的
手动更新数据库
~]# makewhatis
man命令翻页操作
向文件尾部翻一屏:空格键
向文件首部翻一屏:b
向文件尾部翻半屏:Ctrl + d
向文件首部翻半屏:Ctrl + u
向文件尾部翻一行:回车键
向文件首部翻一行:k
转到最后一行:g
跳转指定行:#G
文本搜索:
/keyword:从文件首部向文件尾部依次查找,不区分大小写
?keyword:从文件尾部向文件首部依次查找
n:与查找命令方向相同
N:与查找命令方向相反
退出:
q:quit
选项:
-M /PATH/TO/SOMEDIR:到指定目录下查找命令手册并打开手册
练习:
获取useradd命令用法
- 添加用户gentoo
- 添加用户slackware,要求指定其所用的shell为/bin/tcsh
(3.info COMMAND
获取命令的在线文档
(4.很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION
README:程序的相关信息
INSTALL:安装帮助
CHANGES:版本迭代时的改动信息
(5.主流发行版官方文档
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/
(6.程序官方文档
官方站点上的“Document(Doc)”
(7.搜索引擎
google
如文件参考手册不能直接查到,可以先用whereis查找文件路径,看文件在man目录下的哪个文件,如查到:man/3/printf 则可用~]# man 3 printf命令查看相关参考手册