linux基础总结之二
什么是开源许可证? (“Open Source License”)
区分重要概念:开源不等于免费,开源相当于自由(自由使用,自由复制,自由修改,自由再发布)
首先需要明确的是, 开源软件源代码的著作权既没有被放弃也没有过期, 其修改和发行等仍然要受到著作权法或者开源软件许可证的制约。
开源许可证(Open Source License)的定义:就是保障开源软件中对软件的使用、复制、修改和再发布等限制的法律文件。许可证即授权条款。(开源软件一般都有对应的开源许可证)
开源许可证的目的:在于规范受著作权保护的软件的使用或者分发行为。开源许可证是开源软件生态系统的基础, 可以促进软件的协同开发。
常见开源许可证
常见的开源许可证主要有 Apache、MIT、BSD、GPL、LGPL、MPL、SSPL 等, 可以大致分为两大类: 宽松自由软件许可协议(“Permissive free software licence”)和著佐权许可证(“copyleft license”)。(注意:MPL,即 Mozilla公共许可证,是 Mozilla Public License 的简称,由Mozilla基金会开发并维护。)
Permissive free software licence 是一种对软件的使用、修改、传播等方式采用最低限制的自由软件许可协议条款类型。这种类型的软件许可协议将不保证原作品的派生作品会继续保持与原作品完全相同的相关限制条件, 从而为原作品的自由使用、修改和传播等提供更大的空间。
而 Copyleft License 是在有限空间内的自由使用、修改和传播, 且不得违背原作品的限制条款。如果一款软件使用 Copyleft 类型许可协议规定软件不得用于商业目的, 且不得闭源, 那么后续的衍生子软件也必须得遵循该条款。
两者最大的差别在于: 在软件被修改并再发行时, Copyleft License 仍然强制要求公开源代码(衍生软件需要开源), 而 Permissive free software licence 不要求公开源代码(衍生软件可以变为专有软件)。
其中, Apache、MIT、BSD 都是宽松许可证, GPL 是典型的强著佐权(copyleft )许可证, LGPL、MPL 是弱著佐权(copyleft )许可证。SSPL 则是近年来 MongoDB 创建的一个新许可证, 存在较大争议, 开放源代码促进会 OSI 甚至认为 SSPL 就不是开源许可协议。
详解文件属性信息:
[root@rocky8 ~]# cd /etc; ls -l /etc/fstab
-rw-r--r--. 1 root root 742 Oct 9 10:29 /etc/fstab
输出的九列信息分别含义
第一列:第一个字母含义如下:
d:目录文件;
-:普通文件;
p:管理文件;
l:链接文件;
b:块设备文件;
c:字符设备文件;
s:套接字文件。
后面九个字母分别3个为一组(r表示读权限,w表示写权限,x表示可执行权限,-表示无权限),第一组为表示所有者权限,第二组为表示组用户权限,第三组为表示其他用户组的权限
第二列:(1)、如果是目录的话,这个数字表示当前这个目录下面的一级目录个数。(2)如果是文件的话,数字表示硬链接个数。(硬链接个数:可以简单的理解为一个文件的文件名个数)
第三列: 该文件或目录的所有者
第四列: 表示所属的组
第五列: 文件的大小
第六列: 月份(最近修改文件的日期)
第七列: 多少号(最近修改文件的最后日期)
第八列: 几点(最近修改文件的最后日期)
第九列: 文件名
FHS文件系统层次结构标准
Linux的文件系统分层结构:FHS Filesystem Hierarchy Standard
参考文档:http://www.pathname.com/fhs/
FHS的定义:
有两层规范,第一层是 / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。第二层**则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。
特别注意这两个特殊的目录:
. 表示当前目录,也可以使用./来表示。
… 表示上一层目录,也可以…/来表示。
常见的文件系统目录功能
/:根文件系统用于引导、还原(restore)、恢复(recovery)、和/或修复(repair)系统。禁止在根文件系统下创建文件或者目录。
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr: usr目录是仅次于根目录的第二大层级结构。它是共享的、只读的。意味着它在FHS兼容的主机间是应该被共享的并且不可以被写入。任何主机特定的或者随时间变化的数据应该被存储在其他的地方。
多数软件包不可以直接使用/usr下的子目录。
以下目录是必须的:
bin:大多数用户二进制程序。
lib:库文件。
local:本地的一个层级结构,在主安装之后是空的。
sbin:非关键的系统二进制程序。
share:架构独立的数据。man手册即位于此目录下/usr/share/man/。
/var: 系统运行时写入和增删的数据文件,这个目录是动态数据的保存位置,随时可能得到扩充或删减。一般包括系统运行日志、邮件及应用软件的数据库等相关文件
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
学会查看“帮助”,让学习linux不再困难
帮助1:使用whatis 命令,查看不熟悉的命令的具体含义
[root@rocky8 ~]# whatis ls
ls: nothing appropriate. 提示:没有合适的,此时需要使用mandb命令制作数据库才可使用
[root@rocky8 ~]# mandb
[root@rocky8 ~]# whatis ls
ls (1) - list directory contents 提示:ls的命令的作用是:列出目录下的内容
帮助2:使用命令的–help选项,查看所有命令的选项用法
[root@rocky8 ~]# ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all do not ignore entries starting with . #不要忽略以.开头的条目
-d, --directory list directories themselves, not their contents #列出目录本身,而不是其内容
-h, --human-readable with -l and -s, print sizes like 1K 234M 2G etc. #使用-l和-s,打印尺寸如1K 234M 2G等。
-i, --inode print the index number of each file #打印每个文件的索引号
-l use a long listing format #使用长列表格式
-1 list one file per line. Avoid '\n' with -q or -b #每行列出一个文件。使用-q或-b避免“\n”
--help display this help and exit #显示此帮助并退出
--version output version information and exit #输出版本信息并退出
帮助3:使用man命令,查看所有外部命令,可先使用type命令确定命令的类型
命令帮助中出现的特殊字符含义
[] 表示是可选的;
<> 表示是可变化的;
x|y|z 表示只能选择一个;
-abc 表示三个参数(或任何二个)的混合使用
[root@rocky8 ~]# type ls
ls is aliased to `ls --color=auto'
#查看ls命令的手册
[root@rocky8 ~]# man ls
LS(1) User Commands LS(1)
NAME #命令名称
ls - list directory contents
SYNOPSIS #命令简介
ls [OPTION]... [FILE]...
DESCRIPTION #命令描述:列出有关文件的信息(默认情况下为当前目录)
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is
specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and .. .................................................
..............................................................................
Exit status:
0 if OK,
1 if minor problems (e.g., cannot access subdirectory),
2 if serious trouble (e.g., cannot access command-line argument).
AUTHOR #命令作者:由理查德·M·斯塔尔曼(Richard M.Stallman)和戴维·麦肯齐(David MacKenzie)编写。
Written by Richard M. Stallman and David MacKenzie.
REPORTING BUGS #报告错误
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report ls translation bugs to <https://translationproject.org/team/>
COPYRIGHT #命令版权
Copyright © 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
SEE ALSO #另请参见
Full documentation at: <https://www.gnu.org/software/coreutils/ls>
or available locally via: info '(coreutils) ls invocation'
GNU coreutils 8.30 July 2018 LS(1)
##列出所有匹配的页面,使用 whatis 数据库
#列出所有有关process进程相关的命令
[root@rocky8 ~]# man -k process
#相当于 whatis
[root@rocky8 ~]# man -f ls
ls (1) - list directory contents
#打印man帮助文件的路径
[root@rocky8 ~]# man -w ls
/usr/share/man/man1/ls.1.gz
帮助4:使用info命令,查看所有外部命令的详细信息
[root@rocky8 ~]# info ls
帮助5:查看官方文档或相关技术网站,技术论坛
http://linux.51yip.com/
https://www.runoob.com/linux/linux-tutorial.html
https://www.shouce.ren/api/linux/#
帮助6:学会使用”搜索引擎“找到一切有用的知识
https://www.baidu.com/
https://cn.bing.com/
https://www.google.com/