Linux文件系统层级
/bin:存放所有用户经常使用的命令
/sbin:存放管理员用户使用的命令
/home:普通用户的家目录
/root:管理员用户的家目录
/boot:启动系统时使用的核心文件
/lib:开机所需要的动态链接库
/lib64:基于位的动态链接库
/etc:存放配置文件
/opt:给主机额外安装软件所提供的目录
/tmp:临时文件的存放路径,所用用户均可读写
/dev:存放设备文件和特殊文件
/mnt:让用户临时挂载别的文件系统
/media:自动识别的设备,如U盘,光驱
/proc:系统参数的映射文件
/srv:存放服务器启动后需要提取的数据
/sys:安装了2.6内核中新出现的一个文件系统sysfs
/usr:存放系统应用文件的目录(相当于Windows的C盘)
/usr/local:本地系统管理员软件安装目录
/usr/local/bin:一般存放第三方程序指令
/var:存放不断变化的东西,包括各种日志文件
目录与路径操作
cd:切换目录,常见示例如下:
cd /:切换到根目录cd ~:切换到当前用户家目录cd ../:切换到上级目录cd -:切换到上次访问的目录
ls:显示当前目录下的文件名,常用选项如下:
-a:显示所有,包括隐藏文件
-l:长格式显示
-ld:仅显示目录本身属性
-h:人类可读格式显示
-r:逆序排序
-R:递归显示子目录内容
-t:按修改时间排序
pwd:显示当前所在目录的绝对路径
查看类命令
echo $PATH:查看环境变量echo $SHELL:查看当前使用的shellecho $PS1:查看当前shell提示符格式tty:查看当前终端类型
who:查看登录的用户和终端信息whoami:当前登录的用户名w:登录用户及相关登录的资源占用信息
系统管理类命令
lscpu:查看CPUfree:查看内存大小lsblk:查看硬盘和分区情况du file/dir:查看磁盘使用情况arch:查看系统架构uname -r:查看内核版本(装软件时需要看)cat /etc/redhat-release:查看操作系统发行版本cat /etc/os-release:查看操作系统发行版本 (非红帽系统)shutdown:关机
-h关机
-r重启
-c取消关机
now立刻关机
+m多少分钟后关机
hh:mm绝对时间关机
halt:关机,相当于shutdown -hreboot:重启,相当于shutdown -r now
个性化设置
startx:启动图形化界面shellPS1="格式串":临时定制shell提示符hostname xxx:临时修改主机名hostnamectl set-hostname xxx:永久修改主机名alias:显示所有定义过的别名alias alias_name=“”:添加别名,只对当前shell进程有效,写入用户家目录.bashrc:全局生效unalias alias_name:撤销别名
文件相关操作
stat:查看文件的元数据信息file:查看文件内容类型cat:查看文件内容
-n显示行号
-E显示行尾结束符
touch:创建文件或使用以下参数修改文件的最后操作时间
-a:访问时间
-m:修改时间
-c:改变时间
-t:自定义修改时间戳
mkdir:创建目录
-p:递归
-v:可视化
-m:创建目录时直接指定权限
rmdir:删除空目录
-p:递归
tree:查看目录的层级结构cat:将整个文本文件统一装载到内存空间查看,通常用于比较小的文件more:分屏查看,通常用于比较大的文件less:有搜索功能的查看head:默认头部10行
-c:指定起始头部字节数
-n:制定行数
tail:尾部10行
-f:动态获取文本文件尾部信息
cp:复制文件或修改文件名
-i:交互提示
-r:递归复制目录及其子内容
-f:强制复制
-p:复制保持原文件的属性信息
mv:剪切文件夹rm:删除文件夹
-r:递归删除
-f:强行删除
ln:创建链接文件
-s:创建符号链接
-v:可视化
注意:删除软链接一定要注意,不要加-r 也注意后面不要补/
命令相关操作
enable:管理内部命令type:查看命令类型(输出路径即为外部命令)which xxx:查找外部命令的可执行路径whereis xxx:查找命令及其帮助文档的位置ldd 命令路径:查看命令的依赖文件help xxx:查看内部命令的帮助文档xxx --help:查看外部命令的帮助文档man xxx:查看命令的完整手册info xxx:查看命令的详细信息页hash:查看命令缓存hash -r:清除所有命令缓存history:查看当前用户的命令历史
-c:清除当前会话的命令历史
-a:追加当前会话历史到.bash_history文件
-d 序号:删除指定序号的历史命令
!序号:执行第几条命令
bash shell的快捷操作
Ctrl+c:取消正在执行的命令
Ctrl+l:清屏
Ctrl+a:跳至命令行首
Ctrl+e:跳至命令行尾
Ctrl+u:光标处删除至最左侧
Ctrl+k:光标处删除至最右侧
Ctrl+z:将当前命令送至后台
ESC+. :上次命令参数自动补全
!!:执行上一次操作
时间管理类命令
date(系统时间)
-R:显示时区
-s:设置流式时间
-u:显示UTC时间
date -s "2026-01-01 20:00:00"设定时间
hwclock(硬件时间)clock -w:系统时间和硬件进行同步cal:显示日历timedatectl list-timezones:列出所有时区:timedatectl status:显示默认时区timedatectl set-timezone Asia/Shanghai:设置默认时区
重定向
1> 或> 正确覆盖输出
1>> 或 >> 正确追加输出
2>或 2>> 错误覆盖或追加输出
&> 混合输出
禁止覆盖重定向与强制覆盖
set -C:开启禁止覆盖重定向功能(防止意外覆盖现有文件)。set +C:关闭禁止覆盖重定向功能。>|:在set -C生效时,强制进行覆盖重定向操作(忽略禁止覆盖限制)。
使用示例:
# 开启禁止覆盖set-Cecho"test">existing.txt# 报错:bash: existing.txt: cannot overwrite existing file# 使用强制覆盖操作符echo"test">|existing.txt# 强制覆盖成功# 关闭禁止覆盖set+Cecho"test">existing.txt# 正常覆盖说明:
set -C(对应noclobber选项)常用于脚本中,防止重要日志或配置文件被意外覆盖。>|操作符允许在禁止覆盖模式下强制执行覆盖写入。- 这些设置仅对当前 Shell 会话或脚本有效。
黑洞 /dev/null
cmd > /dev/null(屏蔽正常输出)
白洞/dev/zero
dd if=/dev/zero of=test bs=1M count=1(创建 1M 空文件)
用户操作
通过/etc/passwd文件查看所有用户信息
useradd:添加用户
-u:自定义UID
-g:自定义GID
-d:自定义家目录
-M:不要创建用户家目录
-s:自定义shell (/sbin/nologin即不能登录系统)
-G:指定附加组,可以指多个,如果放弃自己的基本组,需要接-g
-r:创建系统用户(ID<1000)
usermod:修改用户属性信息
-l(不是i):修改用户名
-G:修改新的附加组
-a(需要和G一起用):将用户添加到附加组
-L:锁定用户,使其无法登录,为单重锁定,能被passwd -u解锁
-U:解锁用户(可通过/etc/shadow查看是否被锁定)
-s:自定义shell
userdel:删除用户
-r:同时删除用户的家目录
passwd:修改密码
-l:锁定用户(双重锁定),能被usermod -U解锁
-u:解锁用户
–stdin:标准输入
su user:非登录切换,保持当前工作目录su - user:登录切换,读取用户配置文件,切换到目标用户的家目录
用户组操作
通过/etc/passwd文件查看所有用户信息
groupadd:添加用户组
-g:自定义用户组标识符gid
groupmod:修改用户组
-g:修改现有的gid
-n:修改组名
groupdel:删除用户组(用户组为某个用户的基本组时,不能删除)
gpasswd:修改组成员和密码
-a user:将user添加至指定组中
-d user:从指定组中移除用户user
-A user1,user2…:设置组管理员列表
权限管理
owner(属主),group(属组),other(其他)
权限:r(4)w(2)x(1)
u:属主 g:属组 o:其他 a:所有
对文件的权限:
r:可查看文件内容
w:可修改文件内容
x:可将文件作为程序/脚本运行
对目录的权限:
r:可列出目录内的文件名称
w:可在目录内创建,删除,重命名,更改文件(需要先有x权限)
x:可以进入目录,并查看文件详细信息
修改文件的属主/属组(仅root用户可执行)
(1)chown(同时改属主和属组)
chown [-R] 属主[:属组] 文件/目录
-R:递归修改(对目录生效,包含子文件 / 子目录)
(2)chgrp(仅改属组)
chgrp [-R] 属组 文件/目录
-R:递归修改(对目录生效,包含子文件 / 子目录)
修改文件权限
(1) 8 进制数字法(推荐,简洁)
chmod [-R] 八进制数 文件/目录
(2) 符号法(灵活,修改单个权限)
chmod [-R] [u/g/o/a][+/-/=][r/w/x] 文件/目录
(3) 参照法
chmod --reference=参照文件 目标文件
chmod --reference=file1 file2(将 file2 的权限改为和 file1 一致)
umask:权限掩码(最高权限-掩码权限=默认权限)
创建文件,新文件默认无执行权限(最高权限666)
创建文件,新目录最高权限777
常见umask值
root:022 → 新文件默认 644,新目录默认 755
普通用户:002 → 新文件默认 664,新目录默认 775
查看 umask:直接执行umask命令
文件特殊属性和其他特殊权限
attr(管理文件扩展属性的工具集)
设置文件的特殊属性,可以防止 root 用户误操作删除或修改文件
只读,不能删除,改名,更改 chattr +i file
只能追加内容,不能删除,改名 chattr +a file
显示特定属性 lsattr
SUID(临时 “借” 属主的权限办事)
chmod u+s /目标文件(u 代表属主,s 代表 SUID)
普通用户执行带 SUID 的命令文件时,会临时拥有这个文件属主的权限
SGID(创建文件时 “继承” 目录的属组)
chmod g+s /目标目录(g 代表属组,s 代表 SGID)
SGID 主要用在目录上,使该目录下所用用户可使用文件目录属组的权限
sticky(粘滞位属性)
chmod +t /xxx/xxx
每个用户可创建新文件,但只能删除自己的文件(可以更改别人用户创建的文件)
ACL(访问控制列表):给文件加 “自定义权限”
查看 ACL:getfacl /目标文件
设置 ACL:setfacl -m u:wang:rw /test.txt(给用户 wang 单独加读写权限)
撤销 ACL:setfacl -x u:wang /test.txt(删掉给 wang 的权限)
清空所有 ACL:setfacl -b /test.txt
识别标识:文件权限末尾有+号,说明有 ACL(比如-rw-r–r–+)
前置条件:最小化安装 Linux 可能没有这两个命令,需要装acl包(yum install acl -y)
查找工具
find(查目录或文件名)
find(实时查找,模糊,速度比较慢)(默认递归,生产环境谨慎使用)
find [搜索路径] [查找条件] [执行动作]
查找条件:
-name “文件名” # 区分大小写,支持通配符
-iname “文件名” # 忽略大小写,支持通配符
-user 用户名 # 查找属主为指定用户的文件
-group
-uid
-gid
-type 类型 # f(普通文件)、d(目录)、l(软链接)、b(块 设备)
-size +10M # 查找大于10M的文件(-10M 小于10M)
-mtime -7 # 查找7天内修改过的文件(+7 8天前,7 正好第7天;atime访问时间、ctime属性时间)
find查找条件逻辑运算(没有短路的说法)
-a:与运算 -o:或运算 -not:非运算
处理动作:
-print(默认)
-ls
-delete
-fls 输出文件路径:必填,find 会将结果写入该文件,若文件不存在则自动创建,若文件已存在则覆盖原有内容
-ok COMMAND {} ;(交互式传参)
-exec COMMAND {} ;(封闭式传参)
xargs(强行驱动使用管道)
grep(查文件中的关键字)
文本处理工具之grep(以行 为唯一标准)
grep(基本正则表达式)
egrep(支持扩展正则表达式,文本过滤)
fgrep(不支持正则表达式)
grep [选项] “搜索内容” 文件名
常用选项
-color:指定颜色
-f 文件名:从指定文件中读取匹配模式(每行一个模式),适合批量过滤
-q:静默模式,常用于脚本判断
-r/R:递归遍历目录,-R 处理软链接, -r 忽略软链接
-o:仅匹配字符串
-v:反向匹配,显示不能被模式匹配到的行
-i:不区分大小写
-n:过滤时加上在文本中对应的行号
-E:支持扩展,相当于egrep
文本处理类命令
wc( 行 / 单词(连在一起的字符) /字节统计)
-l(行数)
-w(单词数,以空白符分隔)
-c(字节数,含换行符)
tr(字符转换/删除)(依赖管道读取输入,不直接操作文件)
核心功能:
转换:tr “a-z”“ A-Z”(小写转大写)、tr “0-9” “9876543210”(数字对应转换)
删除:-d 选项,echo “abc123” | tr -d [0-9](删除所有数字)
注意:集合支持简写([:digit:]、[:lower:]),不支持正则
cut(字段切片)
-d:指定分隔符
-f:指定提取字段
cut -d: -f1,4 /etc/passwd(提取第1个字段和第4个字段)
cut -d: -f1-3 /etc/passwd(提取第1到第3个字段)
sort(排序)
默认:按 ASCII 码值升序排序,按整行字符比较
-f:忽略大小写
-n:对数字进行排序(避免数字按字符比较)
-t:指定分隔符
-k:指定排序字段(-k4 按第 4 个字段排序)
-u:去重(仅保留排序后重复的第一行)
-r:降序排序
sort -t: -k4 -nr /etc/passwd
uniq(去重与统计重复)
前提:仅对排序后相邻的重复行有效(必须先 sort 再 uniq才有意义)
-c:统计每行重复次数
-d:仅显示重复行(至少出现 2 次)
-u:仅显示不重复行
rev(行内容翻转,行序列不变)
head -n1 /etc/passwd | rev(翻转 /etc/passwd 第一行内容)
tee(分流输出)
功能:读取标准输入,同时输出到标准输出(桌面)和一个或多个文件(实现 “一份输入,多份输出”)
-a:追加写入文件(默认覆盖写入)
sort -t: -k4 -nr /etc/passwd | tee -a sorted_gid.txt(追加写入,不覆盖原有文件)
打包文件
tar(打包目录或将多个离散文件归纳为一个普通文件)
归档 -zcvf
tar -选项 归档文件名 源文件名或目录 归档或解归档会保留源文件
释放归档 -zxvf
tar -选项 源文件名 [-C 目标目录] .tar.gz .tar.bz2
选项:
-f:指定归档文件名,必接选项,而且,必须放在选项的最后面。
-c:创建一个新的归档
-x:释放归档,不能和-c连用
-t:查看归档包内的文件列表,不解包
-z:归档的同时,可以使用gzip格式进行压缩或解压缩
-j:归档的同时,可以使用bzip2格式进行压缩或解压缩
-J:归档的同时,可以使用xz格式进行压缩或解压缩
-v:可视化
-C:释放归档时指定的目标目录(放在最后,路径前)
-P:保留文件名的根目录,解压时直接还原到原始路径
进程管理命令
pstree: 进程树查看
ps: 进程状态查询
pgrep: 进程过滤
pidof: 按进程名查PID
top: 实时进程监控
htop: 动态进程查看
kill: 杀死进程
killall: 终止所有同名进程
jobs: 查看所有后台作业
fg: 将后台作业调回前台
bg: 让后台暂停的作业继续运行
nice: 进程优先级调整