Linux基础知识点全面总结(实操向)
一、系统安装部署
入门Linux首先需完成系统部署,推荐两个常用发行版,适配不同使用场景:
- CentOS 10:稳定性强,适合服务器场景,后续常用yum包管理器
- Ubuntu 24.04:桌面友好,适合新手入门,后续常用apt包管理器
二、基础常用命令(必记)
以下命令覆盖日常操作核心场景,附关键用法说明,避免死记硬背:
1. 目录与文件操作
- ls:列出当前目录下的文件/目录,基础查看命令
- mkdir:创建目录,例如
mkdir test新建test目录 - cd:切换目录,绝对路径(/开头)和相对路径(当前目录为基准)均可使用
- pwd:查看当前所在绝对路径
- touch:创建空文件,同时可修改文件时间(atime、mtime、ctime)
- atime(access):文件访问时间
- mtime(modify):文件内容修改时间
- ctime(change):文件属性(权限、归属等)修改时间
- tree:以树状结构显示目录层级,需先安装:
yum install tree -y(CentOS) - cp:复制文件/目录,例如
cp feng.txt /home将文件复制到/home目录 - rm:删除文件/目录,
rm -rf强制删除(慎用,不可逆) - mv:移动文件/目录,也可用于重命名,例如
mv feng.txt hello.txt
2. 系统信息查看
- ip add:查看系统IP地址、网卡信息
- hostname:查看当前主机名
- hostnamectl set-hostname feng:修改主机名为feng(立即生效,重启不失效)
- stat:查看文件详细信息(包含atime、mtime、ctime)
- date:查看/设置系统时间,支持格式化输出(常用参数如下)
- %F:完整日期(格式:YYYY-MM-DD)
- %Y:年份,%m:月份,%d:日期
- %H:小时(24小时制),%M:分钟,%S:秒
- 实操示例:
[root@sanchuang ~]# date +%Y%m%d%H%M%S→ 输出:20251026100913[root@sanchuang ~]# date +%Y%m%d-%H:%M:%S→ 输出:20251026-10:09:27
- w/who:查看当前登录系统的用户信息
- last/lastlog:查看用户登录历史记录
3. 命令辅助与查找
- man:查看命令手册,例如
man ls查看ls命令用法 - history:查看历史执行过的命令
- which:查找命令的绝对路径,例如
which ls - whereis:查找命令及相关配置文件
- locate:基于文件名快速查找文件,需先安装
yum install locate -y - find:精准查找文件,支持多条件筛选(核心用法见下文)
- alias:设置命令别名,例如
alias ll='ls -l',取消别名用unalias ll
4. 文件查看与内容操作
- cat:查看文件内容,也可合并文件、生成文件
- 合并文件:
cat feng.txt hello.c > feng_hello.txt(覆盖)、cat feng.txt hello.c >> feng_hello.txt(追加) - 生成文件(here document):
cat > feng.txt <<EOF,输入内容后按EOF结束 - 结合grep查看:
cat 文件名 | grep 关键词,-n参数显示行号
- 合并文件:
- more:分页显示文件内容(回车下一行、空格下一页、b上一页、q退出,自动退出)
- less:分页显示文件内容(用法同more,不自动退出)
- wc:统计文件行数、字数等,-l参数仅统计行数
- head:查看文件前N行,默认前10行
- tail:查看文件后N行,-f参数实时监控文件变化(ctrl+c退出)
- nl:查看文件并显示行号
- vim:文本编辑器,用于修改文件内容(基础操作:i进入编辑模式,esc退出编辑,:w保存,:q退出,:wq保存退出)
5. 包管理(软件安装/卸载)
- CentOS(yum):
yum install 软件名 -y(安装),例如yum install tree -y - Ubuntu(apt):
apt install 软件名(安装),Ubuntu系统专属包管理命令
6. 进程与系统控制
- top:实时监控系统进程、CPU、内存使用情况,按q退出
- ps aux:查看当前所有进程信息
- kill:终止进程,
kill -9 进程ID强制终止(例如kill -9 1234) - pkill:按条件终止进程,例如
pkill -9 -t tty2终止tty2终端的所有进程 - pstree:以树状结构显示进程关系
- free -m:查看系统内存使用情况(单位:MB)
- init 0:关闭系统
7. 其他实用命令
- passwd:修改用户密码,例如
passwd feng修改feng用户密码 - chpasswd:批量修改用户密码,例如
echo "moshao:123456"|chpasswd - id:查看用户ID、组ID等信息
- file:查看文件类型
- gcc:C语言编译器,用于编译C代码
- du:查看文件/目录大小
- seq:产生数字序列,例如
seq 10产生1-10的数字 - uniq:去除重复内容,-c参数统计重复次数
- cut:截取字符串,-c参数按字符截取
- md5sum:计算文件/字符串的MD5值,用于校验文件完整性
- sort:对内容排序,常用参数:
- -n:按数值排序,-r:降序,-k:指定列,-t:指定分隔符
- 实操示例:
cat /etc/passwd|sort -t: -k3 -nr|head(按/etc/passwd第3列数值降序,取前10行)
- awk:字段截取工具,例如
awk -F: '{print $1,$3}' /etc/passwd(截取/etc/passwd第1列和第3列,以:为分隔符)
三、进阶操作(命令组合与重定向)
1. 管道(|)
将前一个命令的输出作为后一个命令的输入,核心用法:命令1 | 命令2,例如:
ls -l | grep txt:查看当前目录下所有.txt文件的详细信息
cat /etc/passwd | sort -t: -k3 -nr:对/etc/passwd按第3列降序排序
2. 重定向
将命令的输出(正确/错误)定向到文件或/dev/null(丢弃输出),常用场景:
- 正确输出重定向:
>(覆盖)、>>(追加),例如ls > file.txt - 错误输出重定向:
2>(覆盖)、2>>(追加),例如ls /test 2> error.txt - 正确+错误输出重定向:
&>(覆盖)、&>>(追加) - 丢弃输出:
命令 &> /dev/null(不显示任何输出)
3. 通配符
用于快速匹配文件/目录,简化命令输入:
- *****:匹配任意长度的字符(包括0个),例如
ls *.txt匹配所有.txt文件 - ?:匹配单个字符,例如
ls a?.txt匹配a开头、后面跟1个字符的.txt文件
4. 命令替换
将命令的执行结果赋值给变量,格式:varname=$(command),优先执行命令,再将结果赋值给变量,实操示例:
[root@sanchuang ~]# c_time=$(date +%Y%m%d-%H:%M:%S)
[root@sanchuang ~]# echo $c_time → 输出:20251026-10:33:07
5. 转义字符与命令连接
- ****:转义字符,用于取消特殊字符的含义,例如
echo "hello\world" - ;:命令连接符,依次执行多个命令,例如
ls; pwd - &&:逻辑与,前一个命令执行成功,才执行后一个命令
- ||:逻辑或,前一个命令执行失败,才执行后一个命令
四、Shell编程基础
Shell脚本是Linux自动化操作的核心,以下是基础语法和常用场景,基于bash解释器(Linux默认Shell):
1. 传参方式
- read:交互式传参,例如
read -p "请输入用户名:" username,读取用户输入并赋值给username变量 - 位置变量:脚本运行时传入参数,$1、$2...表示第1个、第2个参数,$@/$*表示所有参数(推荐使用)
2. 流程控制
(1)if语句(单分支、双分支、多分支)
# if语句(单分支、双分支、多分支)
# 单分支:
if 条件 ;then命令
fi# 双分支:
if 条件 ;then命令1
else命令2
fi# 多分支:
if 条件1 ;then命令1
elif 条件2;then命令2
elif 条件3;then命令3
else命令4
fi
(2)循环语句(for、while)
# 循环语句(for、while)
# for循环(常用场景):
for i in $(cat username.txt)
doecho "位置变量内容 $i"
done# for循环其他用法:
# 按数字序列循环
for i in $(seq $1)
do命令
done# 按目录文件循环
for i in /boot/*
do命令
done# while循环:支持死循环和控制循环次数
# 死循环示例:
while true
do命令
done
(3)循环控制
- break:跳出当前循环,不再执行后续循环
- continue:终止本次循环,直接开启下一次循环
- exit:退出整个Shell脚本,不再执行后续所有命令
3. 数学运算
- 整数运算和比较:使用
(( )),例如((a=1+2))、((a>b)) - 小数运算和比较:使用
bc命令(需提前安装)
4. 随机数
使用 RANDOM 变量生成随机数,范围是0~32767,可结合其他命令使用,例如生成随机数并计算MD5值。
五、用户与组管理
Linux是多用户多任务系统,用户与组管理是系统安全的核心,涵盖用户/组的创建、修改、删除,以及相关配置文件。
1. 核心配置文件
/etc/passwd:存储用户基本信息(用户名、UID、GID、家目录、Shell等),备份文件为/etc/passwd-/etc/shadow:存储用户密码(加密存储),备份文件为/etc/shadow-/etc/group:存储组基本信息(组名、GID、组内用户),备份文件为/etc/group-/etc/login.defs:用户和密码的默认规则(如密码有效期、UID/GID范围等)/etc/skel/*:存储用户登录初始化脚本(.bash_logout、.bash_profile、.bashrc),新建用户时会复制到其家目录- 家目录:root用户家目录为
/root,普通用户家目录为/home/用户名 - 邮箱目录:
/var/spool/mail/用户名,存储用户邮件
2. 用户管理命令
- useradd:创建用户,常用参数: -s:指定用户Shell,-u:指定UID,-g:指定GID,-c:用户描述,-d:指定家目录,-e:过期时间,-r:创建系统用户
- usermod:修改用户信息(参数同useradd)
- userdel:删除用户,-r参数同时删除家目录和邮箱(推荐使用)
- su:切换用户,
su - 用户名切换到该用户的家目录 - exit:退出当前用户,返回上一个用户
3. 组管理命令
- groupadd:创建组
- groupdel:删除组
- newgrp:切换用户的主要组(临时生效)
4. 手工新建用户(实操重点)
手动新建用户moshao(UID=4455,GID=4455,描述sanchuang student,家目录/home/moshao,Shell=/bin/bash),步骤如下:
- 修改/etc/passwd,添加用户信息:
moshao:x:4455:4455:sanchuang student:/home/moshao:/bin/bash - 修改/etc/shadow,添加密码占位符:
moshao:!:20440:0:99999:7:::(!表示未设置密码) - 修改/etc/group,创建用户组:
moshao:x:4455: - 新建家目录并复制初始化脚本:
mkdir /home/moshaocp /etc/skel/.bash* /home/moshao - 新建邮箱:
touch /var/spool/mail/moshao - 修改家目录权限和归属:
chmod 700 /home/moshao -Rchown moshao:moshao /home/moshao -R - 修改邮箱权限和归属:
chown moshao:mail /var/spool/mail/moshaochmod 660 /var/spool/mail/moshao - (可选)设置密码:
echo "moshao:123456"|chpasswd
六、权限控制(重点)
Linux文件/目录权限分为读(r)、写(w)、执行(x),对应数字权限4、2、1,权限控制核心是修改文件/目录的归属和权限。
1. 基础权限修改
- chmod:修改文件/目录权限,-R参数递归修改(适用于目录) 示例:
chmod 755 test.txt(所有者rwx,组用户rx,其他用户rx) 权限对应:r=4,w=2,x=1,7=4+2+1(rwx),5=4+1(rx) - chown:修改文件/目录的归属(属主、属组),-R参数递归修改 示例:
chown feng:feng test.txt(将文件属主和属组改为feng)
2. suid权限位
suid权限位(s)的作用:普通用户执行该命令时,会拥有文件所有者(通常是root)的权限,相当于“尚方宝剑”,实操示例:
[root@sanchuang test]# ll /usr/bin/passwd → 输出:-rwsr-xr-x. 1 root root 91584 2024年11月 4日 /usr/bin/passwd
注:suid直接授予在命令上,任何人执行该命令都会临时获得root权限,需谨慎使用。
3. sudo授权
sudo用于给普通用户授权,可控制用户能执行哪些命令,比suid更灵活,核心配置文件是/etc/sudoers,授权示例:
%sc ALL=(ALL) ALL:授权sc组内所有用户执行所有命令lijieyang ALL=(ALL) ALL:授权lijieyang用户执行所有命令
区别:suid授予命令,sudo授予用户,可精准控制用户的操作权限。
4. acl访问控制列表
用于更精细的权限控制,补充基础权限的不足:
- setfacl:设置acl权限
- getfacl:查看acl权限
七、实操注意事项
-
读写大文件的危害:会瞬间占用大量磁盘IO、内存、CPU资源,导致系统卡顿,示例代码(慎用):
#!/usr/bin/python with open("big_file.txt",'w+',encoding='utf-8') as f:for i in range(1000000000):f.write(f"hello,world,sanchuang fenglaoshi big file {i}\n")运行命令:
python create_big_file.py -
rm -rf 命令慎用:强制删除文件/目录,不可逆,尤其是root用户,避免误删系统文件
-
sudo授权后,普通用户执行授权命令需加sudo前缀,例如
sudo useradd test -
进程终止:kill -9 命令会强制终止进程,可能导致数据丢失,优先尝试正常终止(不加-9)
八、常用实操练习(巩固重点)
- 查看当前有哪些用户登录系统:
w或who - 开启新终端并登录:ctrl+alt+f2,使用root用户登录
- 杀死tty2终端的登录用户:
pkill -9 -t tty2 - 对/etc/passwd第4个字段降序排序:
cat /etc/passwd|sort -t: -k4 -nr - 截取/etc/passwd第1和第3字段:
awk -F: '{print $1,$3}' /etc/passwd - 生成随机数并计算MD5,截取第5-20个字符:
echo $RANDOM | md5sum | cut -c 5-20 - 新建grade.txt文件,按age列排序取年龄最大3行,按grade列排序取分数最高3行(结合sort、awk命令)
