Linux-基础知识体系
2020-06-22 11:46:34 0 举报
AI智能生成
Linux 基础知识体系
作者其他创作
大纲/内容
Linux 版本
内核版本格式
x.y.z
x 主版本
y 次版本
z 末版本
小于 2.6版本
次版本奇数为开发版
次版本偶数为稳定版
大于2.6版本
longterm 长期支持版本
stable 稳定版本
mainline 主线开发版本
常见发行版本
Red Hat
Ubuntu
CentOS
Debian
Fedora
重要概念
root账号:对应Windows系统的管理员账号
"/"根目录:对应Windows系统"我的电脑"
2. 系统操作篇
使用终端
命令提示符
$ 普通用户
# root用户
命令和路径补全:tab键
命令的分类(使用 type)
内部命令
外部分类
终端常用快键键
ctrl + r: 检索使用过的历史命令
ctrl + a:光标回到命令行首
ctrl + e:光标回到命令行尾
ctrl + u:删除整个命令行文本字符
帮助命令
帮助命令和用法
man
man xxx: 获取xxx命令的帮助
man 1 man: 查看 man 命令自身的帮助文档
help
help xxx:获取内部命令的帮助
xxx --help:获取外部命令的帮助
info
比man更丰富的帮助信息,info xxx
文件与目录管理
文件与目录查看命令:ls
路径操作
cd 进入指定路径(相对或绝对)
pwd 显示当前路径
建立与删除目录
mkdir 新建目录
rmdir 删除空目录
通配符
*:匹配任意字符
?:匹配单个字符
[xyz]:匹配xyz任意一个字符
[a-z]:匹配字符范围
[!xyz]或[^xyz]:匹配不在xyz中的任意字符
复制文件 cp
-r 复制目录
-p 保留用户权限时间
-a 尽可能保留原始文件的属性,等同于 -dpR
删除文件 rm
-r 递归删除
-f 不提示
移动与重命名 mv
移动文件 mv file1 dir1/
重命名 mv file1 file2
文本查看
head
显示文件前n行
tail
显示文件后n行
cat
查看文件,文件内容过长时,不建议使用cat直接查看
-f 参数可以显示文件的更新信息
wc
统计文件行数
less
more
打包和压缩
tar
打包命令,扩展名 tar, 配合gzip和bzip2 可以使用打包和压缩功能
gzip
压缩与解压缩命令
扩展名 .gz
bzip2
压缩与解压缩命令
扩展名 .bz2
用户管理
用户命令
常用用户命令
useradd 添加用户
userdel 删除用户
passwd 设置用户密码
usermod 修改用户信息
groupadd 添加用户组
groupdel 删除用户组
用户与用户组的概念
用户的家目录 /home/用户
以管理员身份运行
su 切换当前用户身份
sudo 用root用户身份执行某条命令
visudo 修改sudo命令的配置文件
用户配置文件
/etc/passwd 用户信息配置文件
/etc/shadow 用户密码信息配置文件
权限管理
权限的表示方法
一般权限用三种字符表示:r,w,x
文件权限与目录权限格式相同,但功能不同
文件权限:r,w,x
目录权限
rx 进入目录读取文件名
wx 修改目录内的文件名
x 进入目录
特殊权限
/etc/passwd 用户信息配置文件
t 增加了目录权限为777的目录的安全性,确保只有root用户和文件属主才可操作自己的文件或目录
权限的相关命令
chmod 修改权限
chown 更改属主,属组
chgrp 可以单独更改属组,不常用
Vim 文本编辑器
四周学会Vim
通过链接中的教程练习即可
正常模式
i I o O a A 进入到插入模式
i 在当前光标位置
I 当前光标所在行首
a 当前光标之后的位置
A 当前光标所在行尾
o 当前光标下一行
O 当前光标上一行
v V ctrl+v 进入可视模式,: 进入命令模式, esc 进入正常模式,h j k l 上下左右,yy y$ 复制,dd d$ 剪切,p 黏贴,u 撤销,ctrl + R 重做命令,x 删除单个字符,r 替换单个字符 G 定位指定的行 ^$定位到行的开头和结尾
命令模式
w 写入文件,w 文件名 另存文件,q 退出
q! 不保存退出,!cmd 执行命令,/ 查找命令
s/old/new/ 替换命令,set nu 设置命令
插入模式
可视模式
v 字符可视化模式
V 行可视化模式
ctrl + v 块可视化模式
3. 系统管理篇
正则表达式
正则表达式是什么
对字符串操作的一组逻辑公式
用于对符合规则的字符串进行查找和替换
初识元字符
^,$, *
扩展元字符
文本与文件查找
grep
-i 忽略大小写
-v 反转或过滤
-a 处理二进制文件
-R 递归方式
find
-name 按照文件名搜索
-perm 按照权限搜索
-user 按照属主搜索
-type 按照文件类型搜索
软件安装与更新
rpm 安装
-i 安装,-q查询,-U升级,-e 卸载
移动与重命名 mv
安装 yum install xxx
卸载 yum remove xxx
更新 yum update xxx
源代码编译安装
./configure & make & make install
网络配置
网络配置命令
ifconfig 查看和配置网络接口
ip 查看和配置网络接口、路由
netstat 查看进程监听端口状态
network 与 NetworkManager 网络管理脚本
配置文件
ifcfg-eth0 eth0 网卡配置文件
networking 主机名配置文件
resolv.conf 域名配置文件
防火墙
SELinux
访问控制方式分类
DAC 自主访问控制
MAC 强制访问控制
常用命令
getenforce 查看 SELinux状态
setenforce 修改访问状态
配置文件
/etc/selinux/config
enforcing 强制控制
permissive 通知但不强制控制
disable 禁用访问控制
iptables
表
filter 用于过滤
nat 用于地址转换
链
INPUT 进入本主机方向
OUTPUT 本主机发出方向
FORWARD 转发方向
PREROUTING 路由前转换
POSTROUTING 路由后转换
选项
-i -o 接口
-s -d IP 地址 / 子网掩码
-p tcp/udp 指定协议
--sport 源端口
--dport 目的端口
-j 动作
ACCEPT 允许此规则匹配的数据包通过
DROP 丢弃此规则匹配的数据包
REJECT 拒绝此规则匹配的数据包并返回rst包
SNAT 源地址转换
DNAT 目的地址转换
MASQUERADE 动态源地址转换
tcpdump
保存和读取规则
-r filename 从文件读取已抓取的数据包
-w filename 将抓取的数据包保存至文件
常用选项
-v 显示详细信息
-n 不将IP地址解析为主机名
-i 接口
host 主机
port 端口
服务与日志
服务状态的查看命令
service
用法:service 服务名称 start|stop|restart|status
systemctl
用法:systemctl start|stop|restart|status 服务名称.service
服务配置文件的编写
常用系统日志
/var/log 系统日志默认目录
message 系统日志
dmesg 内核启动日志
secure 安全日志
应用程序日志
磁盘分区
链接文件
符号链接
硬链接
mount 挂载命令
-t 文件系统类型
-o 挂载选项
ro 只读挂载
rw 读写挂载
remount 重挂载
配置文件 /etc/fstab
文件系统
常用命令
fdisk 分区工具
-l 查看分区信息
fdisk /dev/sdX 为某一个存储分区
df 查看分区只用空间大小
du 查看文件夹使用空间大小
mkfs 格式化命令
mkfs ext4 格式化为ext4文件系统
mkfs xfs 格式化为XFS 文件系统
ext4
系统启动过程与故障修复
系统启动过程简述
BIOS 选择启动设备
MBR 硬盘可引导扇区
GRUB Linux 系统可引导工具
内核
init 或 systemd
centos 7以前为init
service 服务 或 systemd服务
启动tty等待用户登录
更新内核版本
RPM方式更新
安装速度快
没有最新的版本
源代码编译方式更新
可以使用最新的版本
编译时间较长
逻辑卷与LVM
LVM 分为三层
PV 物理卷
VG 卷组
LV 逻辑卷
常用命令
pvcreate 建立 PV,pvs查看PV
vgcreate 建立 VG,vgs 查看VG
lvcreate 建立LV,lvs 查看LV,lvextend 扩展LV
卷用于分层管理磁盘
5. 文本操作篇
正则表达式与文本搜索
元字符大全
. 单个字符
* 一个(包括零个)它前面的字符
[...] 匹配方括号中的任意字符
^ 匹配行开始
$ 匹配行结尾
\ 转义特殊字符
{...} 匹配出现的次数
+ 匹配前面的正则表达式出现一次或多次
? 匹配前面的正则表达式出现零次或一次
| 并列匹配
() 分组
POSIX 字符类
sed基础
基本语法
sed ‘cmd’ filename
sed -e 'cmd' -e 'cmd' filename
sed的工作方式
模式空间
sed基础命令
s 替换
d 删除
a 追加
i 插入
c 更改
n 下一步
r 读文件
w 写文件
q 退出
y 替换
p 打印
sed 高级命令
多行命令
N 将多行追加到模式空间进行处理
D 删除多行模式空间的第一个字符至第一个换行符,并返回到脚本的开头执行
P 输出模式空间中的第一个字符至第一个换行符
保持空间模式
h 将模式空间中的内容存储至保持空间,并覆盖保持空间的内容
H 将模式空间中的内容存储至保持空间,并追加到保持空间的内容
g 将保持空间的内容存储至模式空间,并覆盖模式空间的内容
G 将保持空间的内容存储至模式空间,并追加模式空间
x 交换模式空间和保持空间的内容
条件与分支
: 标签
b branch 命令用于在脚本中将控制权转移到另一行,如果没有指定标签就转义到脚本的结尾
t 测试命令,如果当前匹配地址的行进行了成功替换,test 命令就转到标签处,如果没有指定标签就转义到脚本的结尾
awk
awk的工作方式
BEGIN{} 模式用于处理文件前的预处理
{} 模式用于对文件每行进行处理
END{} 模式用于处理完文件之后的操作
运算符
算数运算符
关系运算符
布尔运算符
循环
支持 while 循环
支持 for 循环
支持 break、continue
系统变量
FS 字段分隔符
OFS 输出字段分隔符
RS 记录分隔符
ORS 输出记录分隔符
条件
和C语言用法相似
语法格式为:if(判断)
支持 if ... else ... 用法
支持if嵌套
函数
算数函数
随机函数
字符串函数
4. Shell篇
认识 BASH
Shell 是命令解释器,翻译用户的命令给内核执行,并将结果返回给用户
Shell脚本的用处
组合系统命令实现自动化功能
组成脚本的基本元素是命令,不用深入掌握系统函数库
内建命令与外部命令
内建命令不会创建子进程,但是对子shell无效
外部命令会创建子进程
管道和重定向
管道符 |
重定向符号
< 输入重定向
> 输出重定向,覆盖方式
>> 输出重定向,追加方式
sort 对文本进行排序
join 连接两个字符串
进程与内存的查看与调整
进程查看命令
ps top 对当前系统的进程信息进行查看
内存查看命令
free 查看系统的内存使用率
sar 显示更详细的系统运行状态,用于故障排除
常用的第三方系统状态查看命令
iftop 查看某一进程的网络流量
变量与环境变量
变量的定义
Shell 变量无需声明
销毁变量unset 变量名
变量的赋值
变量名 = 变量值
环境变量
PATH 命令解释路径
环境变量的配置文件
/etc/profile 系统环境变量默认保存文件
/etc/bashrc login shell 执行初始化的配置文件
转义与引用
特殊字符
转义符 /
引用符号
单引号 ' '
双引号 ” “
循环
while 循环
while 循环根据 while 判断结果确定是否继续执行
判断的结果为命令的返回值,如果为0,则循环会继续执行
如果判断结果一直为真 ”0“,无法到达循环结束称为死循环
for 循环
Shell 的for 循环使用遍历方式,for ... in ...格式
for 循环支持C语言写法,需要使用 (())格式
支持使用break、continue对循环进行控制
for 循环支持嵌套使用
函数
函数的定义
函数对重复利用的代码进行封装
函数的定义方法是 函数名 (){}
函数的使用
使用函数的方式是直接使用 函数名
计划任务
一次性计划任务 at
周期性计划任务 cron
查看周期性计划任务 crontab -l
编辑周期性计划任务 crontab -e
运算符
运算符号
+ - * / % 加 减 乘 除 取余
Shell 运算的弊端
支持整数运算,但和编译语言比起来效率很低
对浮点运算支持不好
测试与判断
test 测试
可以书写为[ ]
可以书写[[ ]] 扩展格式
文件测试
数字比较
if 判断
基本原理:根据命令的返回值是否为0进行分支判断
支持 if...else 写入
支持 if 嵌套写法
case 分支
case分支一般作为 if 判断的补充
case 分支的结束符号
收藏
0 条评论
下一页