Linux的发行版
下图是我在网上找的,关于Linux不同版本发行的时间图。由于内容比较多,所以缩略图显示不清,如需查看详情,可点击大图显示。

上图只是罗列到了2019年4月,并且有些Linux发行版并没有列出来,不过就算如此,也是够震撼的了,Linux拥有如此之多的发行版本。

整体来看,Linux的发行版本可以大致分为两类,一类是商业公司来维护的发行版本,另一类是社区组织来维护的发行版本。前者主要以RedHat的RHEL为代表,后者主要以Debian为代表。

目前,我们可以看到三大主流发行版本,分别是DebianRedHatSUSE

它们之间的联系:
所有发行版都是使用Linux内核,这个内核可以在kernel网站上获取到。并且,都需要遵循GNU的GPL(General Public License)协议。

它们之间的区别:
不同的发行版本,所使用的内核、库、程序的版本不同,以及包管理器也不相同。比如说,redhat等用的是rpm方式,Debina、Ubuntu等用的是DPKG方式。


Linux哲学思想
近年来,Linux的市场份额占比越来越大。运行稳定,性能优异,这和它的设计思想密不可分,我们也可以称之为“哲学思想”。
1、一切皆文件
一切皆文件是 Unix/Linux 的基本哲学之一。不仅普通的文件、目录、字符设备、块设备、套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作接口,使之所有资源的访问都统一的表现为对文件的访问。

2、提供很多小型的单一用途的程序
Linux中提供的程序和可执行文件,一般来说功能会比较单一,不复杂,但很高效。

3、连接程序,共同完成复杂功能
由于每个Linux命令功能简单,如果想实现复杂的任务时,可以通过连接多个简单的程序来实现复杂的功能,并且,复杂的程序也必然是高效性的。

4、避免令人困惑的用户界面
Linux主要使用字符界面,资源开销小,自由度比较大。我们可以通过命令的方式,来直接获取系统的状态、日志、配置文件等信息。而Windows主要使用的是图形界面,出了问题,有时并不能直接定位问题原因,反而会因为提示的信息令人困惑不已。

5、配置数据存储在文本中
Linux中,所有的配置文件,都是以文本的形式存在的,想改什么参数,可以用任意一款文本编辑器打开对应的配置文件,直接修改即可。而Windows中,主要存放在注册表中,并且需要专门的编辑器才能进行编辑,修改起来比较复杂。


安装 CentOS 7.7 系统
我们以 CentOS 7.7 为例,使用 VMware Workstation 软件,来安装一个虚拟机系统。

此时,我们选择第一行,进行安装;

选择中文语言;

此时,我们可以进行安装配置,比如,我们要选择系统安装的位置、设置分区、软件组和软件包的选择、网络配置以及主机名等配置;

软件选择时,我们可以选择 GNOME 桌面,这样既有图形界面,也有字符界面,满足各种使用场景。不过,在实际生产中如何选择,需要根据具体需求来确定。

安装目标位置,可以选择默认的自动配置分区,也可以选择手动配置分区。在分区时,除了直接划分分区,也可以考虑使用常见的LVM方式。不过,需要注意的是,如果要使用LVM方式,则 /boot 分区需要单独先划分出来,因为它不能被LVM管理。

此时,系统已经开始安装了,我们还需要设置下 root 用户的密码,以及新建立一个普通用户。

我们这里新建立了一个名为 edwardhan 的普通用户,按照要求,设置一个合规的密码。

安装完成后,需要重启系统,再次起来时,会提示初始设置,需要接受许可证。

启动完成后,会看见登录界面,我们可以用root用户,或者其他普通用户进行登录。现在默认是以图形化界面的方式进行登录的。

我们使用 edwardhan 的普通用户进行登录,可以看到如下界面。此时,安装过程就结束了。


配置环境变量
每个用户的家目录下,都有一个 .bash_profile 的文件,我们可以把想加的环境变量,都加入这个文件里,下次我们再登录这个用户的时候,就可以直接使用这些预设好的环境变量了。
比如说,我们在使用 history 命令时,查看历史命令记录时,只能看到如下信息,并不知道这些命令是什么时候执行的。

[root@localhost ~]# history
1 clear
2 history

要解决这个问题,我们可以在 .bash_profile 文件里,新加一行环境变量来实现;

export HISTTIMEFORMAT="%F %T "

修改完配置文件后,我们可以重新加载这个文件,也可以退出目前登录的终端,重新登录的时候,会加载这条变量信息;

[root@localhost ~]# history
1  2020-04-20 00:13:26 history
2  2020-04-20 00:13:29 ls
3  2020-04-20 00:13:31 history

Linux常用命令
export
Linux export 命令用于设置或显示环境变量。
在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。

语法:

export [-fnp][变量名称]=[变量设置值]

参数说明:

  • -f  代表[变量名称]中为函数名称。
  • -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
  • -p  列出所有的shell赋予程序的环境变量。

实例:
列出当前所有的环境变量:

[root@localhost ~]# export -p
declare -x DISPLAY="localhost:10.0"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HISTTIMEFORMAT="%F %T "
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x LANG="zh_CN.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="172.18.0.109 52263 22"
declare -x SSH_CONNECTION="172.18.0.109 52263 172.18.0.130 22"
declare -x SSH_TTY="/dev/pts/1"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_DATA_DIRS="/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="8"

定义环境变量:

[root@localhost ~]# export EDWARD_ENV
[root@localhost ~]# export -p
declare -x DISPLAY="localhost:10.0"
declare -x EDWARD_ENV
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HISTTIMEFORMAT="%F %T "
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x LANG="zh_CN.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="172.18.0.109 52263 22"
declare -x SSH_CONNECTION="172.18.0.109 52263 172.18.0.130 22"
declare -x SSH_TTY="/dev/pts/1"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_DATA_DIRS="/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="8"

定义环境变量赋值:

[root@localhost ~]# export EDWARD_ENV=666
[root@localhost ~]# export -p
declare -x DISPLAY="localhost:10.0"
declare -x EDWARD_ENV="666"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HISTTIMEFORMAT="%F %T "
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x LANG="zh_CN.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="172.18.0.109 52263 22"
declare -x SSH_CONNECTION="172.18.0.109 52263 172.18.0.130 22"
declare -x SSH_TTY="/dev/pts/1"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_DATA_DIRS="/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="8"

日期的前后:

[root@localhost data]# date -d '1 day' +%F
2020-04-28
[root@localhost data]# date +%F
2020-04-27
[root@localhost data]# date -d '-1 day' +%F
2020-04-26