一、罗列Linux的发行版,并描述不同发行版之间的联系与区别

Linux系统内核与Linux发行套件系统的区别
Linux系统内核指的是一个由Linus Torvalds 负责维护,提供硬件抽象层,硬盘及文件系统控制及多任务功能的系统核心程序
Linux发行套件系统才是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品
Linux的发行版本可以大体分为两类:
一类:商业公司维护的发行版本 (以Read Hat 为代表)
一类:社区组织维护的发行版本 (后者以Debian为代表)

1.1).RHEL红帽

Redhat 应该称为Redhat系列
包括:
1)RHEL(Redhat Enterprise Linux 也就是所谓的Redhat Advance Server)
收费版本,稳定性非常好,适合服务器使用
2)Fedora Core
由原来的Redhat桌面版发展而来,免费版,稳定性较差,最好只用于桌面应用
3)CentOS
RHEL的社区克隆版本,免费版,稳定性非常好,适合服务器使用
Redhat 系列的包管理方式采用的是基于RPM包和YUM包的管理方式,包分发方式是编译好的二进制文件
Redhat是国内使用人群最多的Linux版本

1.2)CentOS

社区企业操作系统(Community Enterprise Operating System Centos)
来自于Redhat Enterprise Linux 依照开放源代码规定释放出的源代码所编译而成;两者不同在于,CentOS并不包含封闭源代码软件

1.3)Fedora

用户可以免费体验到最新的技术和工具,而功能成熟后会被加入到RHEL系统中,因此也被称为RHEL系统的"试验田"
由全球社区爱好者构建的面向日常应用的快速且强大的操作系统
Fedora(第七版本以前为Fedora Core) 是一款基于Linux的操作兄台你,也是一组维持计算机正常运行的软件集合,其目标是创建一套新颖,多功能并且自由和开源的操作系统

1.4)OpenSUSE

德国著名的linux系统
对个人来说是完全免费的,包括使用和在线更新,被评价为最华丽的Linux桌面发行版,甚至超越WIN7 但它的优势绝不仅仅局限于WIN7还有绚丽的用户交互界面,其性能也绝不亚于其他Linux桌面发行版

1.5)Gentoo

具有极高的自定制性,操作复杂,适合有经验的人员使用
能为几乎任何应用程序或需求自动地作出优化和定制,追求极限的配置,性能,以及顶尖的用户和开发者社区,都是Gentoo体验的特点
Gentoo的哲学是:自由和选择
Gentoo能成为理想的安全服务器,开发工作站,专业桌面,游戏系统,嵌入式解决方案或别的东西

1.6)Debian系列

包括:
1.6.1)Debian
Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux 系统,提供了近十万种不同的开源软件支持,在国外拥有很高的认可度和使用率
对于各类内核架构支持性良好,稳定性,安全性更有免费的技术支持
Debian最具特色的是:apt-get /dpkg包管理方式
Redhat的YUM也是在模仿Debian的APT方式;但是在二进制文件发行方式中,APT应该是最好的,
分三个版本分支:
A).unstable 为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户
B).testing 经过unstable中的测试,相对较为稳定,也支持了不少新技术
C).stable 一般只用于服务器,上面的软件包大部分比较过时,但是稳定和安全性都非常的高
1.6.2)Ubuntu
是一款基于Debian派生的操作系统(严格来说不能算一个独立的发行版本),对新款硬件具有极强的兼容能力
特点:
界面非常友好,容易上手,对硬件支持非常全面;最适合做桌面系统的Linux发行版本
同时Ubuntu也可用于服务器领域
目标:为一般用户提供一个最新的,同时又相对稳定的主要自由软件构建而成的操作系统

二、安装Centos7.6操作系统,创建一个自己名字的用户名,并可以正常登录,将主要步骤截图。

安装主要步骤截图:
随笔1_tww
随笔1_tww
随笔1_tww
随笔1_tww

随笔1_tww
随笔1_tww
随笔1_tww
随笔1_tww
随笔1_tww
随笔1_tww
随笔1_tww

三、配置环境变量,实现执行history的时候可以看到执行命令的时间

echo 'HISTTIMEFORMAT ="%F %T `whoami` " ' >> /etc/bashrc  

四、Linux哲学思想。

1)一切都是一个文件(包括硬件)

不仅普通的文件,目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待;虽然类型不同,但是对其提供的却是同一套操作界面。
2)小型,单一用途的程序
程序和可执行文件不要太复杂,这样才能保证了linux内核的高效运行
3)接程序,共同完成复杂的任务
复杂的任务可以通过连接多个简单的程序实现复杂的功能。对于复杂的功能linux通过许多简单程序的组合等方式实现,在保证简单功能的高效性的同时,复杂的程序也必然是高效性的
4)避免令人困惑的用户界面
linux是开源的,无论什么问题都可以通过简洁的命令行实现 排错,修改系统的配置,一切都是简洁明了为基础
5)配置数据存储在文本中
linux所有的配置文件都存放在文本配置文件当中,无论什么配置修改都只需修改其配置文件即可,配置文件时文本形式的只需任意一款文本编辑器修改即可而不是类似于windows那样将保存在注册表中,并且windows的注册表需要专门的二进制或十六进制的编辑器才可编辑,修改比较复杂

五、Linux常用命令使用格式,并用实例说明。例如echo、screen、date、ifconfig、export等命令

1).echo
用途:输出内容到标准输出,以空白分割字符串,并且后面增加换行
使用范围:RedHat/Ubuntu/CentOS/Fedora

语法:
echo [-neE] [arg ...]/echo [--help] [--version]
参数:
-n 输出字符串 不换行
-E 禁止"\"转义(默认选项)
-e 打开"\"的转义,字符串中出现以下字符,会加以处理
    \a 发出警告声
    \b 相当于按退格键(backspace) 前提"\b"后面存在字符
    \c 不换行输出 "\c"后面不存在字符的情况下,相当于-n
    \e  相当于\033
    \f 换行 光标停在原处  【\v 与\f相同】
    \n 换行,光标移动行首
    \r 回车 光标移动首行,不换行
    \t tab 制表符
    \\  插入\字符
    \0nnn  八进制代表的ASCII字符
    \xHH  十六进制代表的ASCII字符

实例1:显示变量
[08:25:29 root@CentOS7 ~]#echo '$PATH'
$PATH
[08:26:18 root@CentOS7 ~]#echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
单引号、双引号、不带引号之间的区别
单引号:
  将单引号内的内容原样输出
双引号:
  把双引号内的内容输出出来;如果内容中有命令,变量等,会先把变量,命令解析出结果,然后再输出最终内容来。
  双引号内命令或变量的写法为`命令/变量`或$(命令/变量)
无引号:
         如果内容中有命令,变量等,会先把变量,命令解析结果,然后在输出最终内容来,
         如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用,不过最好用双引号替代之
所以,shell中字符串的声明,可以用双引号,单引号,或者不用引号,但当内容中包含空格,则最好用双引号。而命令或变量的写法为`命令或变量`或$(命令或变量),该用法不能在单引号中生效。
实例2
#换行
[08:40:29 root@CentOS7 ~]#echo -e "hello\fworld"
hello
     world
[08:52:05 root@CentOS7 ~]#echo -e "hello\vworld"
hello
     world
[08:52:15 root@CentOS7 ~]#echo -e "hello\nworld"
hello
world
[08:52:32 root@CentOS7 ~]#echo -e "hello\rworld"
world
#\b
[08:52:37 root@CentOS7 ~]#echo -e "123\b"
123
[08:54:07 root@CentOS7 ~]#echo -e "123\b456"
12456
#\c
[08:35:07 root@CentOS7 ~]#echo -e "123\c"
123[08:35:15 root@CentOS7 ~]#echo -n "123"
123[08:35:37 root@CentOS7 ~]#echo -e "123\c456"
123[08:35:54 root@CentOS7 ~]#

2).screen
创建一个新screen会话
screen -S [session]
加入screen 会话
screen -x [session]
退出并关闭screen会话
exit
剥离当前screen会话
ctrl+a,d
显示所有已经打开的screen会话
screen -ls
恢复某个screen会话
screen -r [session]
3).date
用途:显示或设定系统的日期与时间

语法:
date [-u]
    [-d datestr] 
    [-s datestr]
    [--utc] 
    [--universal] 
    [--date=datestr] 
    [--set=datestr]
    [--help]
    [--version] 
    [+FORMAT]
    [MMDDhhmm[[CC]YY][.ss]]
-u : 显示目前的格林威治时间
-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
-s datestr : 将系统时间设为 datestr 中所设定的时间
--help : 显示辅助讯息
--version : 显示版本编号  
在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下
时间方面:
% : 印出 %
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期方面:
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
硬件时间
hwclock /clock 
-s /--hctosys  以硬件时间校正系统时间
-w /--systohc 以系统时间校正硬件时间
实例1:
[14:00:47 root@CentOS7 ~]#date +%-H:%-M:%-S
14:1:4
[14:01:04 root@CentOS7 ~]#date +%H:%M:%S
14:01:07
以上两者的区别是:第一种格式,会省略时间多于的0
实例2:
[14:01:11 root@CentOS7 ~]#date -d @1509536033
Wed Nov  1 19:33:53 CST 2017
实例3:显示日历
[14:03:39 root@CentOS7 ~]#cal -y
实例4:
[14:10:40 root@CentOS7 ~]#date 
Sun Jun 14 14:10:42 CST 2020
[14:10:42 root@CentOS7 ~]#date +%c
Sun 14 Jun 2020 02:10:48 PM CST
[14:10:48 root@CentOS7 ~]#date +%D
06/14/20
[14:11:53 root@CentOS7 ~]#date +%x
06/14/2020
[14:12:00 root@CentOS7 ~]#date +%T
14:12:08
[14:12:08 root@CentOS7 ~]#date +%X
02:12:15 PM
[14:15:14 root@CentOS7 ~]#date +%T%n%D
14:15:18
06/14/20
[14:15:18 root@CentOS7 ~]#date '+%B %d'
June 14
[14:19:09 root@CentOS7 ~]#date --date '12:34:56'
Sun Jun 14 12:34:56 CST 2020

4).ifconfig
用途:显示或设置网络设备的状态

ifconfig [网络设备][down up -allmulti -arp -promisc]
            [add<地址>][del<地址>]
            [<hw<网络设备类型><硬件地址>]
            [io_addr<I/O地址>]
            [irq<IRQ地址>]
            [media<网络媒介类型>]
            [mem_start<内存地址>]
            [metric<数目>]
            [mtu<字节>]
            [netmask<子网掩码>]
            [tunnel<地址>]
            [-broadcast<地址>]
            [-pointopoint<地址>]
            [IP地址]
# 参数说明:
    add<地址>  设置网络设备IPv6的IP地址。
    del<地址>   删除网络设备IPv6的IP地址。
    down          关闭指定的网络设备。
    <hw<网络设备类型><硬件地址>    设置网络设备的类型与硬件地址。
    io_addr<I/O地址>          设置网络设备的I/O地址。
    irq<IRQ地址>                设置网络设备的IRQ。
    media<网络媒介类型>  设置网络设备的媒介类型。
    mem_start<内存地址>  设置网络设备在主内存所占用的起始地址。
    metric<数目>                指定在计算数据包的转送次数时,所要加上的数目。
    mtu<字节>                    设置网络设备的MTU。
    netmask<子网掩码>     设置网络设备的子网掩码。
    tunnel<地址>                建立IPv4与IPv6之间的隧道通信地址。
    up                                 启动指定的网络设备。
    -broadcast<地址>         将要送往指定地址的数据包当成广播数据包来处理。
    -pointopoint<地址>       与指定地址的网络设备建立直接连线,此模式具有保密功能。
    -promisc                       关闭或启动指定网络设备的promiscuous模式。
    [IP地址]                        指定网络设备的IP地址。
    [网络设备]                    指定网络设备的名称。
# 启动关闭指定网卡
ifconfig eth0 down
ifconfig eth0 up
# 启用和关闭ARP协议
ifconfig eth0 arp  //开启
ifconfig eth0 -arp  //关闭
# 设置最大传输单元
ifconfig eth0 mtu 1500 
//设置能通过的最大数据包大小为 1500 bytes

5).export
用途:用于设置或显示环境变量
export 可新增,修改或删除环境变量
export 的效力仅限于该次登陆操作

# 语法:
export [-fnp][变量名称]=[变量设置值]
参数说明:
    -f  代表[变量名称]中为函数名称。
    -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
    -p  列出所有的shell赋予程序的环境变量。