Linux发行版的分类
Linux发行版虽然很多,但是可以根据软件安装包的格式进行大体上的分类,这样类似的系统使用方法都没有太大差异的。
比较常见的软件包有如下三种:
.deb格式,使用此类安装包的系统通常派生自Debian系统,我们将这类系统划分为Debian系列。
.rpm格式,使用此类安装包的系统通常派生自Red Hat Linux,我们将这类系统划分为Red Hat系列。
.pkg.tar.xz格式,使用此类安装包的系统通常派生自Arch Linux,使用Pacman进行软件包管理,我们将这类系统划分为Pacman系列。
注: AppImage格式, 这类软件包是通用的软件包格式,通常可以直接在系统中运行的,并不会按此格式划分系统类别。除了上面这三种软件打包方式还有一些不是很通用的打包方式,作为新手我们可以了解这三种即可。
Debian系列(包管理命令:apt/dpkg): Debian GNU/Linux是一种强调使用自由软件的发行版,支持多种硬件平台。Debian及其派生发行版使用deb软件包格式,并使用dpkg及其前端作为软件包管理器。比较流行的发行版有:Ubuntu、Debian、LinuxMint、elementary OS、MX Linux、Kali Linux等。
Red Hat系列(包管理命令:yum或zypper或rpm): Red Hat Linux和SUSE Linux是最早使用RPM格式软件包的发行版,如今RPM格式已广泛运用于众多的发行版。这两种发行版后来都分为商业版本和社区支持版本。Red Hat Linux的社区支持版本现称为Fedora,商业版本则称为Red Hat Enterprise Linux,CentOS是与Red Hat Linux企业版兼容分支版本,软件包不包含Red Hat的商业软件。比较流行的发行版有:Fedora、CentOS、openSUSE、
Pacman系列(包管理命令:pacman): 基于KISS原则,针对x86-64的CPU做了优化,以.pkg.tar.xz格式打包并由包管理器进行跟踪维护,特别适合动手能力强的Linux用户。比较流行的发行版有:Manjaro、Arch Linux、Artix Linux等。
Linux的发行版真的很多,我们可以通过一张图来了解到底有多少种Linux发行版。
安装Centos7.9
点击开启虚拟机后,选择 install CentOS7,回车
等待后,安装如下图示操作即可
3. 时区设置 - 选择 Asia,Shanghai
4. 磁盘空间设置
5. 修改主机名
6.Begin Installation
点击 Begin Installation
7. 设置密码(牢记密码)
8. 等待初始化完成后,重启
9. 重启完成后,输入用户名进入系统
安装Ubuntu 21.04
配置环境变量,实现执行history的时候可以看到执行命令的时间
[root@centos8 ~]# cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export HISTCONTROL=ignoreboth
export HISTTIMEFORMAT="%F %T "
[root@centos8 ~]# source .bash_profile
[root@centos8 ~]# history
1 2021-08-29 21:35:31 yum update -y
2 2021-08-29 21:35:31 ctrl+z
3 2021-08-29 21:35:31 ps -ef | grep yum
Unix 哲学思想
一切都是一个文件(包括硬件)
小型,单一用途的程序
链接程序,共同完成复杂的任务
避免令人困惑的用户界面
配置数据存储在文本中
echo 基本用法
echo 命令可以将后面跟的字符进行输出
功能:显示字符,echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开, 并在最后加
上换行号
语法:
选项:
-E (默认)不支持 \ 解释功能
-n 不自动换行
-e 启用 \ 字符的解释功能
显示变量
启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\e escape,相当于\033
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
\xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)
范例:
Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息。
Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)。
Ctrl+b n:切换到下一个窗口。
Ctrl+b <number>:切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号
Ctrl+b w:从列表中选择窗口
Ctrl+b ,:窗口重命名
tmux list-keys
tmux list-commands
echo [-neE][字符串]
echo "$VAR_NAME” #用变量值替换,弱引用
echo '$VAR_NAME’ #变量不会替换,强引用1.7.8.2 echo 高级用法
在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码
具有颜色的字符,其格式如下:
\033[30m -- \033[37m 设置前景色
\033[40m -- \033[47m 设置背景色
[root@centos8 ~]#echo -e 'a\x0Ab'
a
b
[root@centos8 ~]#echo -e '\033[43;31;1;5mmagedu\e[0m'
magedu
[root@centos8 ~]#echo -e '\x57\x41\x4E\x47'
WANG
[root@centos8 ~]#echo \$PATH
$PATH
[root@centos8 ~]#echo \
[root@centos8 ~]#echo \\
\
[root@centos8 ~]#echo \\\
>
[root@centos8 ~]#echo \\\\
\\
[root@centos8 ~]#echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@centos8 ~]#echo '$PATH'
$PATH
"\033[字符背景颜色;字体颜色m字符串\033[0m"
#字符背景颜色范围: 40--47
40:黑
41:红
42:绿
43:黄
44:蓝
45:紫
46:深绿
47:白色
#字体颜色: 30--37
30: 黑
31: 红
32: 绿
33: 黄
34: 蓝
35: 紫
36: 深绿加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码:
1.8 字符集和编码
许多场合下,字符集与编码这两个概念常被混为一谈,但两者是有差别的。字符集与字符集编码是两个
不同层面的概念
charset是character set的简写,即字符集,即二进制和字符的对应关系,不关注最终的存储形式
encoding是charset encoding的简写,即字符集编码,简称编码,实现如何将字符转化为实际的二进制
进行存储或相反,编码决定了空间的使用的大小
1.8.1 ASCII码
37: 白色
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n列
\033[nD 光标左移n列
\033[x;yH 设置光标位置x行y列
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
\033[2J\033[0;0H 清屏且将光标置顶
screen
利用screen 可以实现会话管理,如:新建会话,共享会话等
注意:CentOS7 来自于base源,CentOS8 来自于epel源
范例:安装 screen
screen命令常见用法:
创建新screen会话
screen –S [SESSION]
加入screen会话
screen –x [SESSION]
退出并关闭screen会话
exit
剥离当前screen会话
Ctrl+a,d
显示所有已经打开的screen会话
screen -ls
恢复某screen会话
screen -r [SESSION]
date命令是显示或设置系统时间与日期。
很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。
语法
date(选项)(参数)
选项
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;-u:显示GMT;--help:在线帮助;--version:显示版本信息。
参数
<+时间日期格式>:指定显示时使用的日期时间格式。
ifconfig命令用来查看和配置网络设备
ifconfig [-v] [-a] [-s] [interface]
ifconfig命令常用的参数如下:
参数参数说明
-a查看全部网络接口配置信息
-s显示简短摘要信息(类似 netstat -i)
-v有错误时打印详细出错信息
查看当前主机的网络接口信息:
# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.230.149 netmask 255.255.255.0 broadcast 192.168.230.255
inet6 fe80::20c:29ff:fed0:7b22 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:d0:7b:22 txqueuelen 1000 (Ethernet)
RX packets 9169 bytes 1245550 (1.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 476 bytes 46975 (46.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:d0:7b:22 txqueuelen 1000 (Ethernet)
RX packets 9682 bytes 1442242 (1.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 477 bytes 48652 (48.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 222 bytes 16357 (16.3 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 222 bytes 16357 (16.3 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
激活/关闭指定的网卡:
# ifconfig ens33 up
# ifconfig ens33 down
为指定的网卡配置IP地址:
# ifconfig ens33 192.168.230.149
# ifconfig ens33 192.168.230.149 netmask 255.255.255.0
# ifconfig ens33 192.168.230.149 netmask 255.255.255.0
broadcast 192.168.230.1
修改网卡的MAC地址:
# ifconfig ens33 down
# ifconfig ens33 hw ether 00:11:22:33:44:55
# ifconfig ens33 up
1.export命令简介
export命令为Shell内建命令,用于设置或显示环境变量,环境变量包含变量与函数。
在Shell中执行程序时,Shell会提供一组环境变量。export可新增、删除或修改环境变量,供后续被执行的程序使用。export的作用效果仅限于当前登陆。
2.命令格式
export[-fn][name[=word]]...export-p
3.命令选项
-f:表示[name]中为函数名称。-n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。-p:列出所有的Shell环境变量。
4.常用示例
(1)定义环境变量并赋值。
exportMYNEWV=8
(2)修改指明Shell命令搜索路径的环境变量PATH。
exportPATH=$PATH:/usr/local/mysql/bin
查看是否已经设置好,可以使用命令export -p命令来查看,也可以使用echo命令打印变量内容。
export-p|grep PATH#或者echo $PATH
(3)export用于Shell脚本。
用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。系统将创建一个子shell进程。此时,系统中将有两个shell进程,一个是登录时系统启动的shell进程,另一个是系统为运行脚本程序创建的shell进程。当一个脚本程序运行完毕,它的脚本shell进程将终止,可以返回到执行该脚本之前的shell。从这种意义上来 说,用户可以有许多shell进程,每个shell进程都是由其父shell进程派生的。
在子shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。 export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。
例如脚本test1.sh中调用脚本test2.sh,test2.sh中使用test1.sh定义的变量shareVar。 test1.sh定义如下:
#!/bin/shshareVar=666exportshareVar./test2.sh
test2.sh定义如下:
#!/bin/shecho"in $0"echo $shareVar
执行test1.sh输出结果如下:
[user_00@TENCENT64~]./test1.shin./test2.sh666
5.Linux设置环境变量的三种实现方法
(1)1.直接使用export命令
exportPATH=$PATH:/usr/local/mysql/bin
注意:直接使用export设置的变量都是临时变量,也就是说退出当前的Shell为该变量定义的值便不会生效了。我们可以使用如下两种方式使变更永久有效。
(2)修改/etc/profile,加入如下行,将对所有用户生效。
exportPATH=$PATH:/usr/local/mysql/bin
注意:修改完这个文件必须要使用如下命令执行配置文件的内容,在不用重启系统的情况下使修改的内容生效。
source/etc/profile#或./etc/profile
(3)修改~/.bashrc文件,加入如下行,只对当前用户生效。
exportPATH=$PATH:/usr/local/mysql/bin
修改这个文件之后同样也需要使用source或者是.命令使配置文件生效。