Linux 命令参考手册

说明:本文是记录一下方便自查的命令手册(博主平时遇到了这里没有的命令之后会动态更新)。这份手册旨在提供全面且实用的Linux命令参考,包含运维需要用到的所有命令以及平时所有常用的指令,分类进行展示便于查询。

Linux命令行介绍

Linux 命令行是与 Linux 操作系统交互的强大方式。通过命令行界面(CLI),用户可以执行各种操作,从简单的文件管理到复杂的系统配置。相比图形用户界面(GUI),命令行提供了更高的效率、灵活性和自动化能力。

要访问命令行,您可以使用终端应用程序。在大多数 Linux 发行版中,可以通过按 Ctrl+Alt+T 快速打开终端。

文件管理命令

ls(列出目录内容)

bash 复制代码
ls                  # 列出当前目录内容
ls -l               # 详细列表格式
ls -a               # 显示隐藏文件
ls -h               # 以人类可读的格式显示文件大小
ls -lh              # 详细列表并人类可读格式
ls -ltr             # 按时间排序(最新的在最后)
ls -R               # 递归显示子目录内容
ls -i               # 显示索引节点号
ls --color=auto     # 彩色显示(大多数发行版默认启用)

cd(切换目录)

bash 复制代码
cd /path/to/directory  # 切换到指定目录
cd ~                   # 切换到用户主目录
cd ..                  # 返回上一级目录
cd -                   # 返回上一个访问的目录
cd /                   # 切换到根目录
cd ../directory        # 切换到上级目录下的其他目录

pwd(打印工作目录)

bash 复制代码
pwd                    # 显示当前工作目录的完整路径
pwd -P                 # 显示物理路径(解析符号链接)

mkdir(创建目录)

bash 复制代码
mkdir directory         # 创建单个目录
mkdir -p dir1/dir2/dir3 # 递归创建多级目录
mkdir -m 755 directory  # 创建并指定权限模式
mkdir dir1 dir2 dir3    # 一次创建多个目录

cp(复制文件和目录)

bash 复制代码
cp file.txt destination/             # 复制文件到目标位置
cp -r directory/ destination/        # 递归复制整个目录
cp -a directory/ destination/        # 递归复制并保留所有属性
cp -u file.txt destination/          # 只有当源文件比目标文件新或不存在时才复制
cp -v file.txt destination/          # 显示复制过程详细信息
cp -i file.txt destination/          # 覆盖前询问确认
cp file.txt{,.bak}                   # 快速创建文件备份(创建file.txt.bak)

mv(移动或重命名文件和目录)

bash 复制代码
mv file.txt newname.txt              # 重命名文件
mv file.txt /path/to/destination/    # 移动文件
mv -i file.txt destination/          # 覆盖前询问确认
mv -v file.txt destination/          # 显示移动过程详细信息
mv -u file.txt destination/          # 只有当源文件比目标文件新时才移动
mv file1.txt file2.txt destination/  # 一次移动多个文件
mv directory/ newname/               # 重命名目录

rm(删除文件和目录)

bash 复制代码
rm file.txt                  # 删除文件
rm -f file.txt               # 强制删除(不询问)
rm -i file.txt               # 删除前询问确认
rm -r directory/             # 递归删除目录及其内容
rm -rf directory/            # 强制递归删除目录
rm -v file.txt               # 显示删除过程详细信息
rm -- -file-with-dash.txt    # 删除以破折号开头的文件

rmdir(删除空目录)

bash 复制代码
rmdir directory              # 删除空目录
rmdir -p dir1/dir2/dir3      # 递归删除目录,如果变为空目录

touch(创建文件或更新时间戳)

bash 复制代码
touch file.txt               # 创建空文件或更新现有文件的时间戳
touch -a file.txt            # 仅修改访问时间
touch -m file.txt            # 仅修改修改时间
touch -t 202301011200 file.txt  # 指定特定时间(年月日时分)
touch -r ref_file.txt file.txt  # 使用参考文件的时间戳

ln(创建链接)

bash 复制代码
ln -s /path/to/file link_name    # 创建符号链接
ln /path/to/file link_name       # 创建硬链接
ln -sf /path/to/file link_name   # 强制创建符号链接,覆盖已存在的链接
ln -v /path/to/file link_name    # 创建链接并显示详细信息

find(查找文件和目录)

bash 复制代码
find /path -name "*.txt"           # 按名称查找文件
find /path -type f                 # 只查找文件
find /path -type d                 # 只查找目录
find /path -size +10M              # 查找大于10MB的文件
find /path -mtime -7               # 查找7天内修改过的文件
find /path -user username          # 查找特定用户拥有的文件
find /path -perm 644               # 查找特定权限的文件
find /path -name "*.log" -delete   # 查找并删除匹配的文件
find /path -exec command {} \;     # 对查找结果执行命令
find /path -name "*.txt" -exec chmod 644 {} \;  # 查找并修改权限

stat(显示文件或文件系统详细信息)

bash 复制代码
stat file.txt                      # 显示文件的详细信息
stat -f /path                      # 显示文件系统信息

file(确定文件类型)

bash 复制代码
file filename                      # 确定文件类型
file -i filename                   # 显示MIME类型
file -z compressed.gz              # 查看压缩文件内容的类型

realpath(显示文件或目录的绝对路径)

bash 复制代码
realpath file.txt                  # 显示文件的绝对路径
realpath -s symlink                # 不解析符号链接

文件查看与编辑命令

cat(连接并显示文件内容)

bash 复制代码
cat file.txt                       # 显示文件内容
cat -n file.txt                    # 显示行号
cat -A file.txt                    # 显示所有控制字符
cat file1.txt file2.txt            # 连接并显示多个文件
cat > file.txt                     # 创建新文件(Ctrl+D结束)
cat >> file.txt                    # 追加内容到文件

less(分页查看文件内容)

bash 复制代码
less file.txt                      # 分页查看文件内容
less -N file.txt                   # 显示行号
less -S file.txt                   # 不折行显示
less +100 file.txt                 # 从第100行开始显示
less +/pattern file.txt            # 从匹配模式的地方开始显示

常用快捷键:空格(向下翻页),b(向上翻页),q(退出),/pattern(向下搜索),?pattern(向上搜索),n(下一个匹配),N(上一个匹配)

more(分页查看文件内容,比less功能少)

bash 复制代码
more file.txt                      # 分页查看文件内容
more -num file.txt                 # 设置每屏行数
more +num file.txt                 # 从第num行开始显示

head(显示文件头部内容)

bash 复制代码
head file.txt                      # 显示文件前10行
head -n 20 file.txt                # 显示文件前20行
head -c 100 file.txt               # 显示前100个字节
head -n -5 file.txt                # 显示除最后5行外的所有内容

tail(显示文件尾部内容)

bash 复制代码
tail file.txt                      # 显示文件最后10行
tail -n 20 file.txt                # 显示文件最后20行
tail -c 100 file.txt               # 显示最后100个字节
tail -f file.txt                   # 实时查看文件追加内容(常用于日志监控)
tail -F file.txt                   # 实时查看,即使文件被删除再创建也继续跟踪
tail -n +10 file.txt               # 从第10行开始显示

grep(文本搜索)

bash 复制代码
grep "pattern" file.txt            # 在文件中查找匹配行
grep -i "pattern" file.txt         # 忽略大小写查找
grep -r "pattern" directory/       # 递归查找目录中的匹配
grep -v "pattern" file.txt         # 显示不匹配的行
grep -n "pattern" file.txt         # 显示匹配行及行号
grep -w "word" file.txt            # 只匹配整个单词
grep -A 3 "pattern" file.txt       # 显示匹配行及后3行
grep -B 3 "pattern" file.txt       # 显示匹配行及前3行
grep -C 3 "pattern" file.txt       # 显示匹配行及前后各3行
grep -E "regex" file.txt           # 使用扩展正则表达式
grep -l "pattern" *.txt            # 只显示包含匹配的文件名
grep -c "pattern" file.txt         # 计算匹配行数
grep "pattern" file.txt --color=auto # 高亮显示匹配部分

vi/vim(文本编辑器)

bash 复制代码
vi file.txt                        # 打开文件进行编辑
vim file.txt                       # 打开文件进行编辑(增强版)

常用模式和命令:

  • 插入模式:按'i'进入,用于输入文本
  • 命令模式:按'Esc'进入,用于执行命令
  • 命令行模式:在命令模式下输入':',用于执行底线命令

命令模式下的常用命令:

ruby 复制代码
:w              # 保存文件
:q              # 退出
:wq             # 保存并退出
:q!             # 强制退出不保存
:set number     # 显示行号
:set nonumber   # 不显示行号
/pattern        # 向下搜索
?pattern        # 向上搜索
dd              # 删除当前行
yy              # 复制当前行
p               # 粘贴复制的内容
u               # 撤销操作
G               # 跳到文件最后一行
gg              # 跳到文件第一行
:n              # 跳到第n行

nano(简单的文本编辑器)

bash 复制代码
nano file.txt                      # 打开文件进行编辑
nano -m file.txt                   # 启用鼠标支持
nano -i file.txt                   # 自动缩进
nano -B file.txt                   # 自动备份

sed(流编辑器)

bash 复制代码
sed 's/old/new/' file.txt          # 替换文件中的第一个匹配项
sed 's/old/new/g' file.txt         # 全局替换所有匹配项
sed -i 's/old/new/g' file.txt      # 直接修改文件内容
sed '1,5s/old/new/g' file.txt      # 只在第1-5行中替换
sed '/pattern/s/old/new/g' file.txt # 只在包含pattern的行中替换
sed '/pattern/d' file.txt          # 删除包含pattern的行
sed '1,5d' file.txt                # 删除第1-5行
sed '$d' file.txt                  # 删除最后一行
sed 'G' file.txt                   # 每行后添加空行
sed '/^$/d' file.txt               # 删除空行

awk(文本处理语言)

bash 复制代码
awk '{print $1}' file.txt           # 打印第一列
awk '{print $1,$3}' file.txt        # 打印第一列和第三列
awk -F: '{print $1,$3}' /etc/passwd # 使用:作为分隔符
awk 'NR==1,NR==5 {print}' file.txt  # 打印第1-5行
awk '/pattern/ {print}' file.txt    # 打印匹配pattern的行
awk '{sum+=$1} END {print sum}' file.txt # 计算第一列的总和
awk 'length > 80' file.txt          # 打印长度超过80的行
awk '{ print NR, $0 }' file.txt     # 添加行号

sort(排序)

bash 复制代码
sort file.txt                      # 按字母顺序排序
sort -n file.txt                   # 按数字顺序排序
sort -r file.txt                   # 逆序排序
sort -k 2 file.txt                 # 按第二列排序
sort -t: -k 3 file.txt             # 使用:作为分隔符,按第三列排序
sort -u file.txt                   # 排序并去重
sort -h file.txt                   # 按人类可读大小排序(如1K、2M、3G)

uniq(去除重复行)

bash 复制代码
uniq file.txt                      # 删除连续的重复行
sort file.txt | uniq               # 删除所有重复行(先排序)
uniq -c file.txt                   # 计算每行出现的次数
uniq -d file.txt                   # 只显示重复的行
uniq -u file.txt                   # 只显示不重复的行

cut(裁剪文件内容)

bash 复制代码
cut -c 1-5 file.txt                # 提取每行第1-5个字符
cut -d: -f1,3 /etc/passwd          # 使用:分隔,提取第1、3列
cut -d' ' -f3- file.txt            # 提取第3列及以后的列

tr(转换字符)

bash 复制代码
cat file.txt | tr 'a-z' 'A-Z'      # 小写转大写
cat file.txt | tr -d '\r'          # 删除回车符
tr -s ' ' < file.txt               # 压缩连续空格为单个空格

diff(比较文件差异)

bash 复制代码
diff file1.txt file2.txt           # 比较两个文件的差异
diff -u file1.txt file2.txt        # 统一格式输出差异
diff -r dir1/ dir2/                # 递归比较两个目录

patch(应用diff补丁)

bash 复制代码
diff -u old_file new_file > patch_file  # 创建补丁
patch old_file < patch_file             # 应用补丁
patch -R file < patch_file              # 撤销补丁

tee(读取标准输入并写入文件和标准输出)

bash 复制代码
command | tee file.txt             # 输出到屏幕并保存到文件
command | tee -a file.txt          # 追加到文件

wc(字数统计)

bash 复制代码
wc file.txt                        # 显示行数、单词数和字节数
wc -l file.txt                     # 只显示行数
wc -w file.txt                     # 只显示单词数
wc -c file.txt                     # 只显示字节数
wc -m file.txt                     # 只显示字符数

权限管理命令

chmod(更改文件权限)

bash 复制代码
chmod 755 file.txt                 # 使用数字设置权限
chmod u+x file.txt                 # 给文件所有者添加执行权限
chmod g+w file.txt                 # 给组添加写权限
chmod o-r file.txt                 # 移除其他用户读权限
chmod a+x file.txt                 # 给所有用户添加执行权限
chmod -R 755 directory/            # 递归设置目录及内容权限
chmod --reference=ref_file file.txt # 复制参考文件的权限

chown(更改文件所有者和组)

bash 复制代码
chown user file.txt                # 更改文件所有者
chown user:group file.txt          # 同时更改所有者和组
chown :group file.txt              # 只更改组
chown -R user:group directory/     # 递归更改目录及内容的所有者和组
chown --reference=ref_file file.txt # 复制参考文件的所有者和组

chgrp(更改文件组)

bash 复制代码
chgrp group file.txt               # 更改文件所属组
chgrp -R group directory/          # 递归更改目录及内容的组
chgrp --reference=ref_file file.txt # 复制参考文件的组

umask(设置默认权限掩码)

bash 复制代码
umask                              # 显示当前umask值
umask 022                          # 设置umask值(创建文件权限为644,目录为755)
umask -S                           # 以符号形式显示umask

getfacl/setfacl(访问控制列表)

bash 复制代码
getfacl file.txt                   # 显示文件的ACL
setfacl -m u:user:rw- file.txt     # 为用户设置ACL
setfacl -m g:group:r-- file.txt    # 为组设置ACL
setfacl -x u:user file.txt         # 删除用户的ACL
setfacl -b file.txt                # 删除所有ACL
setfacl -R -m u:user:rwx dir/      # 递归设置目录ACL

系统管理命令

uname(显示系统信息)

bash 复制代码
uname -a                           # 显示所有系统信息
uname -r                           # 显示内核版本
uname -m                           # 显示硬件架构
uname -n                           # 显示网络主机名

hostname(显示或设置主机名)

bash 复制代码
hostname                           # 显示当前主机名
hostname newname                   # 临时设置主机名
hostnamectl set-hostname newname   # 永久设置主机名(systemd系统)

uptime(显示系统运行时间和负载)

bash 复制代码
uptime                             # 显示运行时间、用户数和负载平均值

date(显示或设置系统日期和时间)

bash 复制代码
date                               # 显示当前日期和时间
date +"%Y-%m-%d %H:%M:%S"          # 按指定格式显示
date -s "2023-01-01 12:00:00"      # 设置系统日期和时间
date -u                            # 显示UTC时间

hwclock(硬件时钟控制)

bash 复制代码
hwclock --show                     # 显示硬件时钟时间
hwclock --systohc                  # 系统时间复制到硬件时钟
hwclock --hctosys                  # 硬件时钟复制到系统时间

timedatectl(控制系统时间和日期)

bash 复制代码
timedatectl                        # 显示时间和日期设置
timedatectl list-timezones         # 列出可用时区
timedatectl set-timezone Asia/Shanghai # 设置时区
timedatectl set-time "2023-01-01 12:00:00" # 设置系统时间
timedatectl set-ntp true           # 启用NTP同步

cal(显示日历)

bash 复制代码
cal                                # 显示当月日历
cal -y                             # 显示当年日历
cal 12 2023                        # 显示指定月份的日历

lsb_release(显示发行版信息)

bash 复制代码
lsb_release -a                     # 显示所有发行版信息
lsb_release -d                     # 只显示描述信息

dmidecode(显示硬件信息)

bash 复制代码
dmidecode                          # 显示DMI表内容
dmidecode -t system                # 显示系统信息
dmidecode -t bios                  # 显示BIOS信息
dmidecode -t processor             # 显示处理器信息
dmidecode -t memory                # 显示内存信息

lshw(列出硬件信息)

bash 复制代码
lshw                               # 列出详细硬件信息
lshw -short                        # 简洁输出
lshw -C network                    # 只显示网络硬件
lshw -C disk                       # 只显示磁盘信息

lscpu(显示CPU信息)

bash 复制代码
lscpu                              # 显示CPU架构信息

lsmem(显示内存信息)

bash 复制代码
lsmem                              # 显示内存范围和设备信息
lsmem --summary                    # 显示内存总结信息

free(显示内存使用情况)

bash 复制代码
free                               # 显示内存使用情况
free -h                            # 以人类可读格式显示
free -s 5                          # 每5秒更新一次
free -t                            # 显示总计行

vmstat(报告虚拟内存统计)

bash 复制代码
vmstat                             # 显示虚拟内存统计
vmstat 5                           # 每5秒更新一次
vmstat -s                          # 显示内存统计信息

last(显示用户登录历史)

bash 复制代码
last                               # 显示所有用户的登录历史
last username                      # 显示特定用户的登录历史
last -n 10                         # 显示最近10条登录记录
last reboot                        # 显示系统重启历史

who(显示当前登录用户)

bash 复制代码
who                                # 显示当前登录的用户
who -a                             # 显示所有信息
whoami                             # 显示当前有效用户

w(显示登录用户及其活动)

bash 复制代码
w                                  # 显示登录用户及其活动
w username                         # 显示特定用户信息

id(显示用户ID和组ID)

bash 复制代码
id                                 # 显示当前用户的ID信息
id username                        # 显示指定用户的ID信息

dmesg(显示系统消息缓冲区)

bash 复制代码
dmesg                              # 显示内核环形缓冲区的所有消息
dmesg | grep -i error              # 只显示错误消息
dmesg -H                           # 人类可读格式显示
dmesg -w                           # 实时监控内核消息
dmesg -T                           # 显示人类可读时间戳
dmesg -l err,warn                  # 只显示错误和警告

lsof(列出打开的文件)

bash 复制代码
lsof                               # 列出所有打开的文件
lsof -u username                   # 列出特定用户打开的文件
lsof -i :22                        # 列出使用22端口的进程
lsof -p pid                        # 列出特定进程打开的文件
lsof /path/to/file                 # 列出访问特定文件的进程
lsof -c httpd                      # 列出特定命令打开的文件
lsof -i tcp                        # 列出所有TCP连接
lsof -i udp                        # 列出所有UDP连接

sysctl(配置内核参数)

bash 复制代码
sysctl -a                          # 显示所有可用的内核参数
sysctl kernel.hostname             # 显示单个参数值
sysctl -w kernel.hostname=newname  # 临时设置内核参数
sysctl -p                          # 加载/etc/sysctl.conf中的设置

chroot(更改根目录)

bash 复制代码
chroot /mnt/newroot /bin/bash      # 更改根目录并在新环境中运行命令

shutdown(关机或重启系统)

bash 复制代码
shutdown -h now                    # 立即关机
shutdown -r now                    # 立即重启
shutdown -h +10                    # 10分钟后关机
shutdown -c                        # 取消计划的关机

reboot(重启系统)

bash 复制代码
reboot                             # 重启系统
reboot -f                          # 强制重启,不会执行正常关机序列

poweroff(关闭系统)

bash 复制代码
poweroff                           # 关闭系统
poweroff -f                        # 强制关机

halt(停止系统)

bash 复制代码
halt                               # 停止系统
halt -f                            # 强制停止

进程管理命令

ps(进程状态)

bash 复制代码
ps                                 # 显示当前终端的进程
ps aux                             # 显示所有进程详情
ps -ef                             # 显示所有进程(完整格式)
ps aux --sort=-%cpu                # 按CPU占用率降序排列
ps aux --sort=-%mem                # 按内存占用降序排列
ps -o pid,user,%cpu,%mem,cmd       # 自定义输出格式
ps -C nginx                        # 显示特定命令的进程
ps -p 1234                         # 显示特定PID的进程
ps -t pts/0                        # 显示特定终端的进程
ps -u username                     # 显示特定用户的进程

top(动态监控进程)

bash 复制代码
top                                # 实时显示进程信息
top -n 5                           # 只显示5次更新
top -u username                    # 只显示特定用户的进程
top -p 1234,5678                   # 只监控特定PID的进程

交互命令:

  • M:按内存使用排序
  • P:按CPU使用排序
  • k:杀死进程
  • r:重新调整优先级
  • h:帮助
  • q:退出

htop(增强版top)

bash 复制代码
htop                               # 启动htop

htop相比top提供了更友好的界面和更多功能:

  • F2:设置
  • F3:搜索
  • F4:过滤
  • F5:树状视图
  • F6:排序
  • F9:杀死进程
  • F10:退出

kill(结束进程)

bash 复制代码
kill PID                           # 向进程发送TERM信号
kill -9 PID                        # 强制终止进程(KILL信号)
kill -l                            # 列出所有可用信号
kill -HUP PID                      # 发送HUP信号(一般用于重载配置)

killall(按名称杀死进程)

bash 复制代码
killall processname                # 杀死所有匹配的进程
killall -9 processname             # 强制杀死所有匹配的进程
killall -u username processname    # 杀死特定用户的进程
killall -i processname             # 交互式确认每个进程

pkill(按模式杀死进程)

bash 复制代码
pkill processname                  # 按名称杀死进程
pkill -9 processname               # 强制杀死进程
pkill -u username                  # 杀死特定用户的所有进程
pkill -t pts/0                     # 杀死特定终端的所有进程

pgrep(按模式查找进程)

bash 复制代码
pgrep processname                  # 列出进程PID
pgrep -u username                  # 列出特定用户的进程PID
pgrep -l processname               # 列出进程PID和名称
pgrep -a processname               # 列出进程PID和完整命令行

nice/renice(设置进程优先级)

bash 复制代码
nice -n 10 command                 # 以较低优先级启动命令(值越大优先级越低)
nice -n -10 command                # 以较高优先级启动命令(需要root权限)
renice 10 -p 1234                  # 调整运行中进程的优先级
renice 10 -u username              # 调整用户所有进程的优先级

nohup(忽略挂起信号)

bash 复制代码
nohup command &                    # 在后台运行命令,忽略终端关闭
nohup command > output.log 2>&1 &  # 后台运行并重定向输出

time(测量命令执行时间)

bash 复制代码
time command                       # 显示命令执行时间
/usr/bin/time -v command           # 显示详细的资源使用情况

watch(定期执行命令)

bash 复制代码
watch command                      # 每2秒执行一次命令
watch -n 5 command                 # 每5秒执行一次命令
watch -d command                   # 高亮显示变化部分

bg/fg(后台/前台作业控制)

bash 复制代码
command &                          # 在后台启动命令
Ctrl+Z                             # 暂停当前作业
bg                                 # 继续执行最近的作业在后台
bg %2                              # 将作业2移到后台
fg                                 # 将最近的后台作业移到前台
fg %2                              # 将作业2移到前台

jobs(列出作业)

bash 复制代码
jobs                               # 显示当前shell中的所有作业
jobs -l                            # 包括PID信息
jobs -r                            # 只显示运行中的作业
jobs -s                            # 只显示已停止的作业

stress(系统压力测试)

bash 复制代码
stress --cpu 4                     # 生成4个CPU负载
stress --io 2                      # 生成2个IO负载
stress --vm 1 --vm-bytes 1G        # 生成1GB内存负载
stress --timeout 60s               # 运行60秒后停止

strace(跟踪系统调用)

bash 复制代码
strace command                     # 跟踪命令的系统调用
strace -p PID                      # 跟踪运行中进程的系统调用
strace -e open command             # 只跟踪特定系统调用
strace -o output.log command       # 将输出保存到文件
strace -c command                  # 统计系统调用计数和时间

ltrace(库调用跟踪)

bash 复制代码
ltrace command                     # 跟踪命令的库调用
ltrace -p PID                      # 跟踪运行中进程的库调用
ltrace -o output.log command       # 将输出保存到文件

磁盘与存储管理

df(报告文件系统磁盘空间使用情况)

bash 复制代码
df                                 # 显示所有文件系统磁盘使用情况
df -h                              # 以人类可读格式显示
df -T                              # 显示文件系统类型
df -i                              # 显示inode信息
df /path                           # 显示特定文件系统信息

du(估计文件空间使用量)

bash 复制代码
du                                 # 显示当前目录及子目录的磁盘使用量
du -h                              # 以人类可读格式显示
du -s                              # 只显示总计
du -a                              # 显示所有文件而不只是目录
du -h --max-depth=1 /path          # 只显示一级子目录的使用量
du -h -c                           # 显示总计
du -h --apparent-size              # 显示文件大小而不是磁盘使用量

fdisk(磁盘分区工具)

bash 复制代码
fdisk -l                           # 列出所有分区
fdisk /dev/sda                     # 管理特定磁盘分区

fdisk交互式命令:

  • m:显示帮助
  • p:打印分区表
  • n:创建新分区
  • d:删除分区
  • w:写入更改并退出
  • q:不保存退出
  • l:列出已知的分区类型
  • t:更改分区类型

parted(磁盘分区工具)

bash 复制代码
parted -l                          # 列出所有分区表
parted /dev/sda print              # 显示特定磁盘的分区表
parted /dev/sda mkpart primary ext4 1MiB 100MiB  # 创建新分区

gdisk(GPT分区工具)

bash 复制代码
gdisk /dev/sda                     # 管理GPT分区表
gdisk -l /dev/sda                  # 显示分区信息

mount(挂载文件系统)

bash 复制代码
mount                              # 显示所有挂载的文件系统
mount /dev/sda1 /mnt               # 挂载分区到挂载点
mount -t ext4 /dev/sda1 /mnt       # 指定文件系统类型
mount -o remount,rw /              # 重新挂载根分区为读写
mount -a                           # 挂载/etc/fstab中的所有文件系统

umount(卸载文件系统)

bash 复制代码
umount /mnt                        # 卸载挂载点
umount /dev/sda1                   # 卸载设备
umount -l /mnt                     # 懒惰卸载(等待设备不再繁忙)
umount -f /mnt                     # 强制卸载

lsblk(列出块设备)

bash 复制代码
lsblk                              # 以树形列出所有块设备
lsblk -f                           # 显示文件系统信息
lsblk -m                           # 显示设备权限信息
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT  # 自定义输出列

blkid(显示块设备属性)

bash 复制代码
blkid                              # 显示所有块设备的UUID和文件系统类型
blkid /dev/sda1                    # 显示特定设备信息

mkfs(创建文件系统)

bash 复制代码
mkfs.ext4 /dev/sda1                # 在分区上创建ext4文件系统
mkfs.xfs /dev/sda2                 # 创建XFS文件系统
mkfs.ntfs /dev/sda3                # 创建NTFS文件系统(需要ntfs-3g包)
mkfs -t ext4 /dev/sda1             # 另一种语法创建ext4文件系统

fsck(检查和修复文件系统)

bash 复制代码
fsck /dev/sda1                     # 检查文件系统错误
fsck -f /dev/sda1                  # 强制检查
fsck -y /dev/sda1                  # 自动回答yes
fsck -t ext4 /dev/sda1             # 指定文件系统类型

badblocks(检查坏块)

bash 复制代码
badblocks -v /dev/sda1             # 检查分区坏块
badblocks -w /dev/sda1             # 写入测试(破坏性)

tune2fs(调整ext文件系统参数)

bash 复制代码
tune2fs -l /dev/sda1               # 列出超级块内容
tune2fs -c 30 /dev/sda1            # 设置挂载次数检查
tune2fs -i 1m /dev/sda1            # 设置时间检查间隔
tune2fs -L "LABEL" /dev/sda1       # 设置卷标

swapoff/swapon(管理交换空间)

bash 复制代码
swapon --show                      # 显示交换信息
swapon /dev/sdb1                   # 激活交换分区
swapoff /dev/sdb1                  # 停用交换分区
swapon -a                          # 激活所有交换空间

mkswap(创建交换分区)

bash 复制代码
mkswap /dev/sdb1                   # 创建交换分区

sync(同步数据到磁盘)

bash 复制代码
sync                               # 将所有缓冲区数据写入磁盘

hdparm(硬盘参数调整)

bash 复制代码
hdparm -i /dev/sda                 # 显示硬盘信息
hdparm -t /dev/sda                 # 测试读取速度
hdparm -T /dev/sda                 # 测试缓存读取速度
hdparm -S 120 /dev/sda             # 设置硬盘休眠时间

smartctl(监控磁盘健康状态)

bash 复制代码
smartctl -a /dev/sda               # 显示所有SMART信息
smartctl -H /dev/sda               # 显示健康状态
smartctl -t short /dev/sda         # 启动短自检
smartctl -t long /dev/sda          # 启动长时间自检

LVM命令(逻辑卷管理)

bash 复制代码
# 物理卷管理
pvcreate /dev/sdb1                 # 创建物理卷
pvdisplay                          # 显示物理卷信息
pvs                                # 简洁显示物理卷信息

# 卷组管理
vgcreate vg_name /dev/sdb1         # 创建卷组
vgextend vg_name /dev/sdc1         # 扩展卷组
vgdisplay                          # 显示卷组信息
vgs                                # 简洁显示卷组信息

# 逻辑卷管理
lvcreate -L 10G -n lv_name vg_name # 创建10G逻辑卷
lvextend -L +5G /dev/vg_name/lv_name # 扩展逻辑卷大小
lvreduce -L -5G /dev/vg_name/lv_name # 减小逻辑卷大小
lvdisplay                          # 显示逻辑卷信息
lvs                                # 简洁显示逻辑卷信息
resize2fs /dev/vg_name/lv_name     # 调整文件系统大小以匹配逻辑卷

dd(转换和复制文件)

bash 复制代码
dd if=/dev/zero of=file.img bs=1M count=100  # 创建100MB的文件
dd if=/dev/sda of=/dev/sdb                  # 克隆整个磁盘
dd if=/dev/sda of=disk.img                  # 创建磁盘镜像
dd if=disk.img of=/dev/sda                  # 将镜像写回磁盘
dd if=/dev/urandom of=file bs=1M count=1    # 生成随机数据
dd if=/dev/zero of=/dev/sda bs=512 count=1  # 清除MBR

网络管理命令

ifconfig(配置网络接口)

bash 复制代码
ifconfig                           # 显示所有活动接口的网络配置
ifconfig eth0                      # 显示特定接口的配置
ifconfig eth0 192.168.1.2 netmask 255.255.255.0  # 配置IP地址和子网掩码
ifconfig eth0 up                   # 启用接口
ifconfig eth0 down                 # 禁用接口

ip(取代ifconfig的现代网络工具)

bash 复制代码
ip addr show                       # 显示所有接口的地址信息
ip addr show dev eth0              # 显示特定接口的地址信息
ip addr add 192.168.1.2/24 dev eth0 # 添加IP地址
ip addr del 192.168.1.2/24 dev eth0 # 删除IP地址
ip link set eth0 up                # 启用接口
ip link set eth0 down              # 禁用接口
ip route show                      # 显示路由表
ip route add default via 192.168.1.1 # 添加默认网关
ip route add 10.0.0.0/8 via 192.168.1.1 # 添加静态路由
ip -s link                         # 显示接口统计信息

ping(测试网络连接)

bash 复制代码
ping google.com                    # 持续测试到google.com的连接
ping -c 4 google.com               # 只发送4个数据包
ping -i 0.5 google.com             # 每0.5秒发送一个数据包
ping -s 1500 google.com            # 使用1500字节的数据包
ping -f google.com                 # 洪水ping(需要root权限)
ping -I eth0 google.com            # 使用指定接口发送ping

traceroute(显示到目标主机的路由路径)

bash 复制代码
traceroute google.com              # 跟踪到google.com的路由
traceroute -n google.com           # 不解析IP到主机名
traceroute -m 30 google.com        # 设置最大跳数
traceroute -w 2 google.com         # 设置响应超时时间

mtr(组合了ping和traceroute功能)

bash 复制代码
mtr google.com                     # 实时显示到google.com的网络路径和延迟
mtr -c 10 google.com               # 发送10个数据包后退出
mtr -n google.com                  # 不解析主机名
mtr -r google.com                  # 报告模式,不进入交互界面

netstat(网络统计)

bash 复制代码
netstat -a                         # 显示所有连接和监听端口
netstat -tulpn                     # 显示所有监听的TCP和UDP端口及程序
netstat -tn                        # 显示所有TCP连接(不解析主机名)
netstat -r                         # 显示路由表
netstat -s                         # 显示每个协议的统计信息
netstat -i                         # 显示网络接口统计信息

ss(Socket统计,netstat的替代)

bash 复制代码
ss -a                              # 显示所有连接
ss -t                              # 只显示TCP连接
ss -u                              # 只显示UDP连接
ss -l                              # 只显示监听的套接字
ss -p                              # 显示使用套接字的进程
ss -s                              # 显示套接字统计信息
ss -tn state established           # 显示已建立的TCP连接

nmap(网络扫描工具)

bash 复制代码
nmap 192.168.1.1                   # 扫描单个IP
nmap 192.168.1.0/24                # 扫描整个子网
nmap -p 80,443 192.168.1.1         # 扫描特定端口
nmap -p 1-65535 192.168.1.1        # 扫描所有端口
nmap -sV 192.168.1.1               # 服务版本检测
nmap -O 192.168.1.1                # 操作系统检测
nmap -A 192.168.1.1                # 全面扫描(启用操作系统检测、版本检测等)

route(显示和管理路由表)

bash 复制代码
route                              # 显示路由表
route -n                           # 不解析主机名显示路由表
route add default gw 192.168.1.1   # 添加默认网关
route add -net 10.0.0.0/8 gw 192.168.1.1 # 添加静态路由
route del default                  # 删除默认网关

arp(地址解析协议)

bash 复制代码
arp                                # 显示ARP缓存
arp -a                             # 显示所有条目
arp -d 192.168.1.1                 # 删除特定条目
arp -s 192.168.1.100 00:11:22:33:44:55 # 添加静态ARP条目

dig(DNS查询工具)

bash 复制代码
dig google.com                     # 查询A记录
dig google.com +short              # 简洁输出
dig -t MX google.com               # 查询MX记录
dig -t ANY google.com              # 查询所有记录
dig @8.8.8.8 google.com            # 使用指定的DNS服务器
dig -x 8.8.8.8                     # 反向DNS查询

nslookup(DNS查询工具)

bash 复制代码
nslookup google.com                # 查询A记录
nslookup -type=MX google.com       # 查询MX记录
nslookup -type=ANY google.com      # 查询所有记录
nslookup google.com 8.8.8.8        # 使用指定的DNS服务器
nslookup 8.8.8.8                   # 反向DNS查询

host(DNS查询工具)

bash 复制代码
host google.com                    # 查询A记录
host -t MX google.com              # 查询MX记录
host -a google.com                 # 查询所有记录
host google.com 8.8.8.8            # 使用指定的DNS服务器
host 8.8.8.8                       # 反向DNS查询

whois(查询域名注册信息)

bash 复制代码
whois google.com                   # 查询域名注册信息

ssh(安全Shell)

bash 复制代码
ssh user@hostname                  # 连接到远程主机
ssh -p 2222 user@hostname          # 使用指定端口连接
ssh -i key.pem user@hostname       # 使用私钥连接
ssh -X user@hostname               # 启用X11转发
ssh -L 8080:localhost:80 user@hostname # 本地端口转发
ssh -R 8080:localhost:80 user@hostname # 远程端口转发
ssh -D 8080 user@hostname          # 动态端口转发(SOCKS代理)
ssh-copy-id user@hostname          # 复制SSH公钥到远程主机

scp(安全复制)

bash 复制代码
scp file.txt user@hostname:/path   # 复制本地文件到远程主机
scp user@hostname:/path/file.txt .  # 从远程主机复制文件到本地
scp -r directory/ user@hostname:/path # 递归复制目录
scp -P 2222 file.txt user@hostname:/path # 使用指定端口

rsync(高效文件同步)

bash 复制代码
rsync -av directory/ user@hostname:/path  # 同步本地目录到远程
rsync -av user@hostname:/path/ directory/ # 同步远程目录到本地
rsync -avz directory/ user@hostname:/path # 使用压缩传输
rsync -av --delete directory/ user@hostname:/path # 删除目标中不存在于源的文件
rsync -av --exclude="*.tmp" directory/ user@hostname:/path # 排除特定文件

iptables(防火墙管理)

bash 复制代码
iptables -L                        # 列出所有规则
iptables -L -n                     # 不解析主机名
iptables -L -v                     # 详细输出
iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH
iptables -A INPUT -j DROP          # 丢弃所有其他输入
iptables -F                        # 清除所有规则
iptables -t nat -L                 # 列出NAT表规则
iptables-save > rules.txt          # 保存规则
iptables-restore < rules.txt       # 恢复规则

firewalld(RHEL/CentOS防火墙管理)

bash 复制代码
firewall-cmd --state                    # 查看防火墙状态
firewall-cmd --list-all                 # 列出所有配置
firewall-cmd --add-service=http         # 允许HTTP
firewall-cmd --add-port=8080/tcp        # 添加端口
firewall-cmd --permanent --add-port=8080/tcp # 永久添加规则
firewall-cmd --reload                   # 重载规则

ufw(Ubuntu防火墙管理)

bash 复制代码
ufw status                          # 查看状态
ufw enable                          # 启用防火墙
ufw disable                         # 禁用防火墙
ufw allow 22                        # 允许SSH端口
ufw allow ssh                       # 允许SSH服务
ufw deny 80                         # 阻止端口
ufw delete allow 22                 # 删除规则

wget(网络下载器)

bash 复制代码
wget URL                            # 下载文件
wget -c URL                         # 断点续传
wget -b URL                         # 后台下载
wget -O filename URL                # 指定保存的文件名
wget -q URL                         # 静默模式
wget --user=USER --password=PASS URL # 使用身份验证
wget -r URL                         # 递归下载
wget -r -np -k URL                  # 递归下载网站,不跟随父目录链接

curl(多协议数据传输工具)

bash 复制代码
curl URL                            # 显示URL内容
curl -o filename URL                # 保存到文件
curl -O URL                         # 使用远程文件名保存
curl -C - -O URL                    # 断点续传
curl -I URL                         # 仅获取HTTP头
curl -v URL                         # 显示详细信息
curl -X POST -d "data" URL          # 发送POST请求
curl -H "Header: Value" URL         # 添加自定义头
curl -u user:password URL           # 使用身份验证
curl -F "file=@filename" URL        # 上传文件

nc/netcat(网络工具)

bash 复制代码
nc -l 1234                         # 监听端口
nc hostname 1234                   # 连接到主机和端口
nc -z hostname 22                  # 检查端口是否开放
nc -v hostname 22                  # 详细输出
nc -l 1234 > file.txt              # 接收文件
nc hostname 1234 < file.txt        # 发送文件

tcpdump(网络数据包分析)

bash 复制代码
tcpdump -i eth0                    # 捕获特定接口的数据包
tcpdump -n                         # 不解析主机名
tcpdump host 192.168.1.1           # 捕获特定主机的数据包
tcpdump port 80                    # 捕获特定端口的数据包
tcpdump -w capture.pcap            # 保存捕获到文件
tcpdump -r capture.pcap            # 读取捕获文件
tcpdump 'tcp port 80 and not host 192.168.1.1' # 复杂过滤

ifup/ifdown(启用/禁用网络接口)

bash 复制代码
ifup eth0                          # 启用网络接口
ifdown eth0                        # 禁用网络接口

dhclient(DHCP客户端)

bash 复制代码
dhclient eth0                      # 为接口请求IP地址
dhclient -r eth0                   # 释放IP地址

hostnamectl(主机名管理)

bash 复制代码
hostnamectl                        # 显示系统主机信息
hostnamectl set-hostname newname   # 设置主机名

用户管理命令

useradd(添加用户)

bash 复制代码
useradd username                   # 创建新用户
useradd -m username                # 创建用户及其主目录
useradd -m -d /path/to/home username # 指定主目录路径
useradd -g group username          # 指定主组
useradd -G group1,group2 username  # 指定附加组
useradd -s /bin/bash username      # 指定默认shell
useradd -e 2023-12-31 username     # 设置账户过期日期
useradd -c "Full Name" username    # 添加注释/全名
useradd -u 1500 username           # 指定UID

usermod(修改用户账户)

bash 复制代码
usermod -L username                # 锁定用户账户
usermod -U username                # 解锁用户账户
usermod -g group username          # 修改用户的主组
usermod -aG group username         # 向用户添加附加组
usermod -l newname oldname         # 修改用户名
usermod -d /path/to/home -m username  # 修改主目录并移动文件
usermod -s /bin/zsh username       # 修改默认shell
usermod -c "New Comment" username  # 修改注释/全名
usermod -e 2023-12-31 username     # 设置账户过期日期

userdel(删除用户)

bash 复制代码
userdel username                   # 删除用户
userdel -r username                # 删除用户及其主目录

passwd(管理用户密码)

bash 复制代码
passwd                             # 修改当前用户密码
passwd username                    # 修改指定用户密码
passwd -l username                 # 锁定用户密码
passwd -u username                 # 解锁用户密码
passwd -d username                 # 删除用户密码
passwd -e username                 # 强制用户下次登录时修改密码
passwd -S username                 # 显示密码状态

groupadd(添加用户组)

bash 复制代码
groupadd groupname                 # 创建新组
groupadd -g 1500 groupname         # 指定GID

groupmod(修改用户组)

bash 复制代码
groupmod -n newname oldname        # 修改组名
groupmod -g 1600 groupname         # 修改GID

groupdel(删除用户组)

bash 复制代码
groupdel groupname                 # 删除组

gpasswd(管理用户组)

bash 复制代码
gpasswd -a user group              # 添加用户到组
gpasswd -d user group              # 从组中删除用户
gpasswd -A user group              # 设置组管理员

groups(显示用户组成员关系)

bash 复制代码
groups                            # 显示当前用户所属组
groups username                   # 显示指定用户所属组

chage(修改用户密码过期信息)

bash 复制代码
chage -l username                  # 显示用户密码过期信息
chage -E 2023-12-31 username       # 设置账户过期日期
chage -M 90 username               # 设置密码最长有效期
chage -m 7 username                # 设置密码最短有效期
chage -W 14 username               # 设置密码过期前警告天数
chage -I 30 username               # 设置密码过期后账户锁定天数
chage -d 0 username                # 强制用户下次登录时修改密码

su(切换用户)

bash 复制代码
su                                # 切换到root用户(需要密码)
su username                       # 切换到指定用户
su -                              # 切换到root用户并使用root的环境
su - username                     # 切换到指定用户并使用其环境

sudo(以其他用户身份执行命令)

bash 复制代码
sudo command                      # 以root身份执行命令
sudo -u username command          # 以指定用户身份执行命令
sudo -l                           # 列出当前用户可用的sudo命令
sudo -i                           # 切换到root用户环境
sudo su -                         # 另一种切换到root用户环境的方式

visudo(安全编辑sudoers文件)

bash 复制代码
visudo                            # 编辑/etc/sudoers文件

id(显示用户和组ID信息)

bash 复制代码
id                                # 显示当前用户的ID信息
id username                       # 显示指定用户的ID信息
id -u                             # 只显示UID
id -g                             # 只显示主GID
id -G                             # 显示所有GID
id -n                             # 显示名称而不是ID

last(显示最近登录信息)

bash 复制代码
last                              # 显示最近登录的用户
last username                     # 显示特定用户的登录历史
last -n 10                        # 只显示最近10条记录
last reboot                       # 显示系统重启历史

lastlog(显示所有用户最后登录信息)

bash 复制代码
lastlog                           # 显示所有用户的最后登录信息
lastlog -u username               # 显示特定用户的最后登录信息

getent(获取系统数据库条目)

bash 复制代码
getent passwd                     # 显示所有用户信息
getent passwd username            # 显示特定用户信息
getent group                      # 显示所有组信息
getent group groupname            # 显示特定组信息

软件包管理命令

APT (Debian/Ubuntu)

bash 复制代码
apt update                        # 更新软件包索引
apt upgrade                       # 升级所有可升级的软件包
apt full-upgrade                  # 升级软件包,可能会删除一些软件包
apt install package-name          # 安装软件包
apt remove package-name           # 移除软件包
apt purge package-name            # 移除软件包及其配置文件
apt autoremove                    # 移除不再需要的依赖包
apt search keyword                # 搜索软件包
apt show package-name             # 显示软件包详细信息
apt list --installed              # 列出所有已安装的软件包
apt list --upgradable             # 列出可升级的软件包
apt-get update                    # apt的替代命令
apt-get install package-name      # apt的替代命令
apt-cache search keyword          # 搜索软件包(替代命令)

DPKG (Debian/Ubuntu底层包管理)

bash 复制代码
dpkg -i package.deb               # 安装.deb包
dpkg -r package-name              # 移除软件包
dpkg -P package-name              # 完全移除软件包及其配置
dpkg -l                           # 列出已安装的软件包
dpkg -l | grep keyword            # 搜索已安装的软件包
dpkg -s package-name              # 显示软件包状态
dpkg -L package-name              # 列出软件包的所有文件
dpkg -S /path/to/file             # 查找文件属于哪个软件包
dpkg-reconfigure package-name     # 重新配置已安装的软件包

YUM/DNF (RHEL/CentOS/Fedora)

bash 复制代码
yum update                        # 更新所有软件包
yum install package-name          # 安装软件包
yum remove package-name           # 移除软件包
yum search keyword                # 搜索软件包
yum info package-name             # 显示软件包信息
yum list installed                # 列出已安装的软件包
yum list available                # 列出可用的软件包
yum clean all                     # 清除缓存
yum repolist                      # 列出启用的仓库
yum history                       # 显示事务历史

DNF (YUM的新一代替代品)

bash 复制代码
dnf check-update                  # 检查可用更新
dnf upgrade                       # 升级所有软件包
dnf install package-name          # 安装软件包
dnf remove package-name           # 移除软件包
dnf search keyword                # 搜索软件包
dnf info package-name             # 显示软件包信息
dnf list installed                # 列出已安装的软件包
dnf clean all                     # 清除缓存
dnf repolist                      # 列出启用的仓库
dnf history                       # 显示事务历史
dnf module list                   # 列出可用模块
dnf module enable module:stream   # 启用模块流

RPM (RHEL/CentOS/Fedora底层包管理)

bash 复制代码
rpm -i package.rpm                # 安装RPM包
rpm -U package.rpm                # 升级RPM包
rpm -e package-name               # 移除软件包
rpm -q package-name               # 查询软件包
rpm -qa                           # 列出所有已安装的软件包
rpm -qf /path/to/file             # 查找文件属于哪个软件包
rpm -ql package-name              # 列出软件包的所有文件
rpm -qi package-name              # 显示软件包信息
rpm -V package-name               # 验证软件包
rpm --import key.asc              # 导入GPG密钥

Pacman (Arch Linux)

bash 复制代码
pacman -Syu                       # 同步数据库并更新系统
pacman -S package-name            # 安装软件包
pacman -R package-name            # 移除软件包
pacman -Rs package-name           # 移除软件包及其依赖
pacman -Ss keyword                # 搜索软件包
pacman -Si package-name           # 显示远程软件包信息
pacman -Qi package-name           # 显示本地软件包信息
pacman -Ql package-name           # 列出软件包的所有文件
pacman -Qo /path/to/file          # 查找文件属于哪个软件包
pacman -Qdt                       # 列出不再需要的软件包

Zypper (SUSE)

bash 复制代码
zypper refresh                    # 刷新仓库
zypper update                     # 更新已安装的软件包
zypper install package-name       # 安装软件包
zypper remove package-name        # 移除软件包
zypper search keyword             # 搜索软件包
zypper info package-name          # 显示软件包信息
zypper list-updates               # 列出可更新的软件包
zypper repos                      # 列出配置的仓库
zypper patch-check                # 检查可用补丁
zypper patches                    # 列出所有补丁

Snap (跨Linux发行版的包管理)

bash 复制代码
snap find keyword                 # 搜索软件包
snap info package-name            # 显示软件包信息
snap install package-name         # 安装软件包
snap refresh package-name         # 更新软件包
snap remove package-name          # 移除软件包
snap list                         # 列出已安装的软件包
snap refresh                      # 更新所有snap包

Flatpak (跨桌面Linux应用分发)

bash 复制代码
flatpak search keyword            # 搜索应用
flatpak install app-id            # 安装应用
flatpak uninstall app-id          # 卸载应用
flatpak update                    # 更新所有应用
flatpak update app-id             # 更新特定应用
flatpak list                      # 列出已安装的应用
flatpak run app-id                # 运行应用

压缩与归档命令

tar(归档工具)

bash 复制代码
tar -cf archive.tar file1 file2   # 创建归档文件
tar -xf archive.tar               # 解压归档文件
tar -tvf archive.tar              # 列出归档文件内容
tar -czf archive.tar.gz directory/ # 创建gzip压缩归档
tar -xzf archive.tar.gz           # 解压gzip压缩归档
tar -cjf archive.tar.bz2 directory/ # 创建bzip2压缩归档
tar -xjf archive.tar.bz2          # 解压bzip2压缩归档
tar -cJf archive.tar.xz directory/ # 创建xz压缩归档
tar -xJf archive.tar.xz           # 解压xz压缩归档
tar --exclude='*.log' -czf archive.tar.gz directory/ # 排除特定文件

gzip/gunzip(GNU压缩工具)

bash 复制代码
gzip file.txt                     # 压缩文件(创建file.txt.gz并删除原文件)
gzip -k file.txt                  # 压缩并保留原文件
gzip -9 file.txt                  # 最高压缩率
gzip -d file.txt.gz               # 解压文件
gunzip file.txt.gz                # 解压文件

bzip2/bunzip2(高压缩率工具)

bash 复制代码
bzip2 file.txt                    # 压缩文件
bzip2 -k file.txt                 # 压缩并保留原文件
bzip2 -d file.txt.bz2             # 解压文件
bunzip2 file.txt.bz2              # 解压文件

xz(高压缩率工具)

bash 复制代码
xz file.txt                       # 压缩文件
xz -k file.txt                    # 压缩并保留原文件
xz -d file.txt.xz                 # 解压文件

zip/unzip(兼容Windows的压缩工具)

bash 复制代码
zip archive.zip file1 file2       # 创建zip归档
zip -r archive.zip directory/     # 递归压缩目录
unzip archive.zip                 # 解压zip归档
unzip -l archive.zip              # 列出zip归档内容
unzip archive.zip -d /target/directory # 解压到指定目录

7z(高压缩率多格式工具)

bash 复制代码
7z a archive.7z file1 file2       # 创建7z归档
7z a -r archive.7z directory/     # 递归压缩目录
7z x archive.7z                   # 解压7z归档
7z l archive.7z                   # 列出7z归档内容
7z x archive.7z -o/target/directory # 解压到指定目录

rar/unrar(RAR格式支持)

bash 复制代码
rar a archive.rar file1 file2     # 创建rar归档
rar a -r archive.rar directory/   # 递归压缩目录
unrar x archive.rar               # 解压rar归档
unrar l archive.rar               # 列出rar归档内容
unrar x archive.rar /target/directory/ # 解压到指定目录

cpio(复制文件归档)

bash 复制代码
find . -name "*.txt" | cpio -ov > archive.cpio  # 创建cpio归档
cpio -idv < archive.cpio           # 解压cpio归档

zstd(高压缩比和速度的压缩工具)

bash 复制代码
zstd file.txt                     # 压缩文件
zstd -d file.txt.zst              # 解压文件
zstd -19 file.txt                 # 最高压缩率
zstd --rm file.txt                # 压缩后删除原文件

日志与监控命令

journalctl(systemd日志查询)

bash 复制代码
journalctl                        # 显示所有日志
journalctl -f                     # 跟踪最新日志(类似tail -f)
journalctl -u service-name        # 显示特定服务的日志
journalctl --since today          # 显示今天的日志
journalctl --since "2023-01-01" --until "2023-01-31" # 指定时间范围
journalctl -p err                 # 只显示错误及更高级别的日志
journalctl -b                     # 显示本次启动的日志
journalctl -b -1                  # 显示上次启动的日志
journalctl --disk-usage           # 显示日志占用的磁盘空间
journalctl --vacuum-time=1w       # 删除一周前的日志

dmesg(显示内核环形缓冲区消息)

bash 复制代码
dmesg                             # 显示内核消息
dmesg -T                          # 显示带可读时间戳的消息
dmesg | grep -i error             # 过滤显示错误消息
dmesg -w                          # 实时显示内核消息
dmesg -c                          # 显示并清除消息

tail(查看文件尾部)

bash 复制代码
tail -f /var/log/syslog           # 实时查看系统日志
tail -n 100 /var/log/syslog       # 查看最后100行
tail -f -n 100 /var/log/syslog    # 查看最后100行并实时跟踪

less(阅读日志文件)

bash 复制代码
less /var/log/syslog              # 分页查看系统日志
less +F /var/log/syslog           # 类似tail -f的实时查看模式

zcat/zless/zgrep(查看压缩日志)

bash 复制代码
zcat /var/log/syslog.1.gz         # 查看压缩日志文件内容
zless /var/log/syslog.1.gz        # 分页查看压缩日志
zgrep "error" /var/log/syslog.1.gz # 在压缩日志中搜索

logrotate(日志轮转配置)

bash 复制代码
logrotate -d /etc/logrotate.conf  # 调试模式,显示会做什么但不执行
logrotate -f /etc/logrotate.conf  # 强制执行日志轮转

sar(系统活动报告)

bash 复制代码
sar                               # 显示当天的CPU使用情况
sar -r                            # 显示内存使用情况
sar -b                            # 显示I/O和传输速率统计
sar -n DEV                        # 显示网络设备统计
sar -f /var/log/sa/sa20           # 查看特定日期的报告
sar -o output.file 5 10           # 每5秒收集一次,共收集10次

iostat(磁盘I/O统计)

bash 复制代码
iostat                            # 显示CPU和磁盘I/O统计
iostat -d                         # 只显示磁盘统计
iostat -x                         # 显示扩展磁盘统计
iostat -y 2 10                    # 每2秒收集一次,共10次,去掉第一次

mpstat(多处理器统计)

bash 复制代码
mpstat                            # 显示所有CPU使用情况
mpstat -P ALL                     # 分别显示每个CPU的统计
mpstat 2 5                        # 每2秒一次,共5次

vmstat(虚拟内存统计)

bash 复制代码
vmstat                            # 显示虚拟内存统计
vmstat 2 5                        # 每2秒一次,共5次
vmstat -s                         # 显示内存使用详情
vmstat -d                         # 显示磁盘统计

nmon(系统监控工具)

bash 复制代码
nmon                              # 启动交互式监控工具
nmon -f -s 60 -c 60               # 每60秒收集一次,共60次,保存到文件

collectd(系统统计收集守护进程)

bash 复制代码
systemctl status collectd         # 查看collectd服务状态
systemctl start collectd          # 启动collectd服务
systemctl stop collectd           # 停止collectd服务

atop(高级系统和进程监控)

bash 复制代码
atop                              # 启动交互式系统监控
atop -r /var/log/atop/atop_20230101 # 查看历史数据

htop(增强的进程查看器)

bash 复制代码
htop                              # 启动交互式进程查看器

glances(跨平台系统监控工具)

bash 复制代码
glances                           # 启动交互式监控
glances -w                        # 启动Web服务器模式

netdata(实时性能监控)

bash 复制代码
systemctl status netdata          # 查看netdata服务状态
systemctl start netdata           # 启动netdata服务

服务管理命令

systemctl(systemd服务管理)

bash 复制代码
systemctl status service-name     # 检查服务状态
systemctl start service-name      # 启动服务
systemctl stop service-name       # 停止服务
systemctl restart service-name    # 重启服务
systemctl reload service-name     # 重新加载配置
systemctl enable service-name     # 设置服务开机自启
systemctl disable service-name    # 禁用服务开机自启
systemctl is-enabled service-name # 检查服务是否开机自启
systemctl mask service-name       # 屏蔽服务(防止启动)
systemctl unmask service-name     # 解除屏蔽
systemctl list-units --type=service # 列出所有活动服务单元
systemctl list-unit-files --type=service # 列出所有已安装的服务单元文件
systemctl daemon-reload           # 重新加载systemd配置

service(传统服务管理,兼容SysV)

bash 复制代码
service service-name status       # 检查服务状态
service service-name start        # 启动服务
service service-name stop         # 停止服务
service service-name restart      # 重启服务
service service-name reload       # 重新加载配置
service --status-all              # 显示所有服务状态

chkconfig(SysV服务配置)

bash 复制代码
chkconfig --list                  # 列出所有服务及其运行级别配置
chkconfig service-name on         # 启用服务自启动
chkconfig service-name off        # 禁用服务自启动
chkconfig --level 35 service-name on # 设置特定运行级别的自启动

update-rc.d(Debian/Ubuntu SysV服务配置)

bash 复制代码
update-rc.d service-name defaults # 添加默认启动脚本链接
update-rc.d service-name enable   # 启用服务自启动
update-rc.d service-name disable  # 禁用服务自启动
update-rc.d -f service-name remove # 删除启动脚本链接

systemd-analyze(分析systemd启动性能)

bash 复制代码
systemd-analyze                   # 显示系统启动总时间
systemd-analyze blame             # 按时间排序显示每个单元的启动时间
systemd-analyze critical-chain    # 显示最慢的启动链
systemd-analyze plot > boot.svg   # 创建启动过程可视化图表

initctl(Upstart服务控制)

bash 复制代码
initctl list                      # 列出所有Upstart作业
initctl status service-name       # 检查服务状态
initctl start service-name        # 启动服务
initctl stop service-name         # 停止服务
initctl restart service-name      # 重启服务

rc-service/rc-update(OpenRC服务控制)

bash 复制代码
rc-service service-name status    # 检查服务状态
rc-service service-name start     # 启动服务
rc-service service-name stop      # 停止服务
rc-service service-name restart   # 重启服务
rc-update show                    # 显示所有运行级别的服务
rc-update add service-name default # 添加服务到默认运行级别
rc-update del service-name default # 从默认运行级别删除服务

journalctl(查看服务日志)

bash 复制代码
journalctl -u service-name        # 查看特定服务的日志
journalctl -u service-name -f     # 实时查看服务日志
journalctl -u service-name --since today # 查看今天的服务日志

Shell脚本相关命令

bash(Bourne Again Shell)

bash 复制代码
bash script.sh                    # 运行bash脚本
bash -x script.sh                 # 调试模式运行脚本
bash -c "command"                 # 执行命令字符串
bash -n script.sh                 # 语法检查不执行

sh(POSIX shell)

bash 复制代码
sh script.sh                      # 运行shell脚本
sh -x script.sh                   # 调试模式运行脚本

chmod(更改脚本权限)

bash 复制代码
chmod +x script.sh                # 添加执行权限

env(设置环境并执行命令)

bash 复制代码
env VAR=value command             # 设置环境变量并执行命令
env -i command                    # 清空环境并执行命令
env                               # 显示当前环境变量

export(设置环境变量)

bash 复制代码
export VAR=value                  # 设置环境变量
export VAR                        # 导出已存在的变量到环境
export -p                         # 显示所有导出的变量

set(设置Shell选项)

bash 复制代码
set -e                            # 遇到错误立即退出
set -x                            # 显示执行的命令
set -u                            # 使用未定义变量时报错
set -o pipefail                   # 管道中任何命令失败都报错
set +e                            # 关闭-e选项

readonly(声明只读变量)

bash 复制代码
readonly VAR=value                # 设置只读变量
readonly VAR                      # 将已存在的变量标记为只读
readonly -p                       # 显示所有只读变量

trap(捕获信号)

bash 复制代码
trap "echo 'Caught signal'" SIGINT # 捕获SIGINT信号
trap - SIGINT                     # 恢复SIGINT的默认处理
trap "cleanup; exit" EXIT         # 在脚本退出时执行清理函数

source/. (执行脚本在当前shell)

bash 复制代码
source script.sh                  # 在当前shell中执行脚本
. script.sh                       # 与source相同

echo(显示消息)

bash 复制代码
echo "Hello World"                # 显示文本
echo -e "Hello\nWorld"            # 解释转义序列
echo -n "No newline"              # 不添加换行符

printf(格式化输出)

bash 复制代码
printf "Name: %s, Age: %d\n" "John" 30 # 格式化输出
printf "%.2f\n" 3.1415926         # 保留小数点后两位

read(读取输入)

bash 复制代码
read var                          # 从标准输入读取一行到变量
read -p "Enter name: " name       # 显示提示并读取输入
read -s -p "Password: " password  # 静默模式读取(不显示输入)
read -t 5 var                     # 设置超时(5秒)
read -a array                     # 读取到数组
read -r var                       # 原始模式(不解释反斜杠)

eval(执行参数作为命令)

bash 复制代码
eval "ls -la"                     # 执行字符串作为命令
cmd="find . -name '*.txt'"
eval $cmd                         # 执行复杂命令

exec(执行命令并替换当前进程)

bash 复制代码
exec ls                           # 执行ls并替换当前shell
exec 3> file.txt                  # 打开文件描述符用于写入
exec 4< file.txt                  # 打开文件描述符用于读取
exec 3>&-                         # 关闭文件描述符

ulimit(限制shell资源)

bash 复制代码
ulimit -a                         # 显示所有限制
ulimit -f 1024                    # 限制文件大小(块)
ulimit -n 1024                    # 限制打开文件数
ulimit -u 100                     # 限制用户进程数

test/[ ](条件测试)

bash 复制代码
test -f file.txt                  # 测试文件是否存在且是普通文件
[ -d directory ]                  # 测试目录是否存在
[ string1 = string2 ]             # 测试字符串是否相同
[ $num1 -eq $num2 ]               # 测试数字是否相等
[ -n "$var" ]                     # 测试变量是否非空
[ -z "$var" ]                     # 测试变量是否为空
[ condition1 -a condition2 ]      # 逻辑AND
[ condition1 -o condition2 ]      # 逻辑OR

[[ ]](增强的条件测试)

bash 复制代码
[[ -f file.txt ]]                 # 测试文件是否存在且是普通文件
[[ string1 == string2 ]]          # 测试字符串是否相同
[[ string =~ regex ]]             # 正则表达式匹配
[[ $num1 -eq $num2 ]]             # 测试数字是否相等
[[ condition1 && condition2 ]]    # 逻辑AND
[[ condition1 || condition2 ]]    # 逻辑OR

for(循环)

bash 复制代码
for i in 1 2 3; do echo $i; done  # 基本for循环
for i in {1..10}; do echo $i; done # 范围循环
for i in $(seq 1 2 10); do echo $i; done # 步长为2的循环
for ((i=0; i<10; i++)); do echo $i; done # C风格循环
for file in *.txt; do echo $file; done # 遍历文件

while(条件循环)

bash 复制代码
while [ $i -lt 10 ]; do           # 当条件为真时循环
    echo $i
    i=$((i+1))
done

while read line; do               # 按行读取文件
    echo $line
done < file.txt

until(条件循环)

bash 复制代码
until [ $i -ge 10 ]; do           # 当条件为假时循环
    echo $i
    i=$((i+1))
done

case(分支选择)

bash 复制代码
case $var in
    pattern1)
        commands;;
    pattern2|pattern3)
        commands;;
    *)
        default commands;;
esac

select(创建菜单)

bash 复制代码
select option in "Option 1" "Option 2" "Quit"; do
    case $option in
        "Option 1")
            echo "Selected Option 1";;
        "Option 2")
            echo "Selected Option 2";;
        "Quit")
            break;;
        *)
            echo "Invalid option";;
    esac
done

function(函数定义)

bash 复制代码
function myfunc() {
    echo "Function argument: $1"
    return 0
}

# 或
myfunc() {
    echo "Function argument: $1"
    return 0
}

# 调用函数
myfunc argument

declare(声明变量及属性)

bash 复制代码
declare -i num=10                 # 声明整数变量
declare -r var="readonly"         # 声明只读变量
declare -a array                  # 声明数组
declare -A map                    # 声明关联数组
declare -p var                    # 显示变量信息

let(执行算术表达式)

bash 复制代码
let "a = 5 + 3"                   # 执行算术运算
let "a++"                         # 增量
let "a += 2"                      # 加并赋值

expr(执行表达式)

bash 复制代码
expr 5 + 3                        # 计算并输出表达式
expr length "string"              # 计算字符串长度
expr substr "string" 2 3          # 提取子字符串
expr index "string" "s"           # 查找字符位置

bc(精确计算器)

bash 复制代码
echo "5.5 + 3.2" | bc             # 计算浮点数
echo "scale=2; 10/3" | bc         # 设置小数精度
echo "obase=16; 255" | bc         # 十进制转十六进制

安全相关命令

ssh-keygen(生成SSH密钥)

bash 复制代码
ssh-keygen                        # 生成SSH密钥对
ssh-keygen -t rsa -b 4096         # 生成4096位RSA密钥
ssh-keygen -t ed25519             # 生成Ed25519密钥(更安全)
ssh-keygen -f keyfile             # 指定密钥文件名
ssh-keygen -p -f keyfile          # 修改密钥密码

ssh-copy-id(复制SSH公钥到远程主机)

bash 复制代码
ssh-copy-id user@hostname         # 复制默认公钥到远程主机
ssh-copy-id -i keyfile.pub user@hostname # 指定公钥文件

openssl(OpenSSL工具集)

bash 复制代码
# 对称加密
openssl enc -aes-256-cbc -in file.txt -out file.enc # 加密文件
openssl enc -aes-256-cbc -d -in file.enc -out file.txt # 解密文件

# 生成哈希
openssl dgst -sha256 file.txt     # 生成SHA256哈希
openssl dgst -md5 file.txt        # 生成MD5哈希

# 生成随机数据
openssl rand -base64 32           # 生成Base64编码的随机数据
openssl rand -hex 16              # 生成十六进制编码的随机数据

# 证书管理
openssl req -new -x509 -days 365 -nodes -out cert.pem -keyout key.pem # 生成自签名证书
openssl x509 -in cert.pem -text -noout # 查看证书内容

gpg(GNU Privacy Guard)

bash 复制代码
gpg --gen-key                     # 生成新密钥对
gpg --encrypt --recipient user file.txt # 加密文件
gpg --decrypt file.txt.gpg        # 解密文件
gpg --sign file.txt               # 签名文件
gpg --verify file.txt.sig         # 验证签名
gpg --list-keys                   # 列出公钥
gpg --list-secret-keys            # 列出私钥

chage(修改用户密码有效期)

bash 复制代码
chage -l username                 # 显示用户密码策略
chage -M 90 username              # 设置密码最长有效期为90天
chage -m 7 username               # 设置密码最短有效期为7天
chage -d 0 username               # 强制用户下次登录修改密码

fail2ban-client(管理fail2ban服务)

bash 复制代码
fail2ban-client status            # 显示所有监狱状态
fail2ban-client status sshd       # 显示SSH监狱状态
fail2ban-client set sshd banip 192.168.1.100 # 手动禁止IP
fail2ban-client set sshd unbanip 192.168.1.100 # 解除IP禁止

lastb(查看失败登录尝试)

bash 复制代码
lastb                             # 显示登录失败记录
lastb -n 20                       # 显示最近20条失败记录

ausearch(搜索审计日志)

bash 复制代码
ausearch -m login                 # 搜索登录相关审计事件
ausearch -ua 1000                 # 搜索特定用户ID的事件
ausearch -ts today                # 搜索今天的事件
ausearch -f /etc/passwd           # 搜索与特定文件相关的事件

auditctl(管理审计规则)

bash 复制代码
auditctl -l                       # 列出当前审计规则
auditctl -w /etc/passwd -p war -k passwd_changes # 监控文件更改
auditctl -a always,exit -S unlink -S rmdir # 监控删除操作

getfacl/setfacl(管理文件访问控制列表)

bash 复制代码
getfacl file                      # 显示文件ACL
setfacl -m u:user:rw file         # 设置用户ACL权限
setfacl -m g:group:r file         # 设置组ACL权限
setfacl -x u:user file            # 删除用户ACL
setfacl -b file                   # 删除所有ACL

sestatus(SELinux状态)

bash 复制代码
sestatus                          # 显示SELinux状态

setenforce(设置SELinux模式)

bash 复制代码
setenforce 0                      # 设置SELinux为允许模式
setenforce 1                      # 设置SELinux为强制模式

restorecon(恢复SELinux上下文)

bash 复制代码
restorecon -v file                # 恢复文件的默认SELinux上下文
restorecon -R -v /path            # 递归恢复目录及内容的SELinux上下文

chcon(更改SELinux安全上下文)

bash 复制代码
chcon -t httpd_sys_content_t file # 更改文件的SELinux类型
chcon -R -t httpd_sys_content_t /path # 递归更改目录及内容

ufw(Ubuntu简化防火墙)

bash 复制代码
ufw status                        # 查看状态
ufw enable                        # 启用防火墙
ufw disable                       # 禁用防火墙
ufw allow 22                      # 允许SSH端口
ufw deny 23                       # 拒绝端口
ufw allow from 192.168.1.0/24     # 允许特定网段
ufw delete allow 22               # 删除规则

firewall-cmd(FirewallD防火墙)

bash 复制代码
firewall-cmd --state              # 查看状态
firewall-cmd --list-all           # 列出所有设置
firewall-cmd --add-service=http   # 允许HTTP服务
firewall-cmd --add-port=8080/tcp  # 允许特定端口
firewall-cmd --permanent --add-service=https # 永久允许HTTPS
firewall-cmd --reload             # 重新加载配置

visudo(安全编辑sudoers文件)

bash 复制代码
visudo                            # 编辑sudoers文件

lynis(安全审计工具)

bash 复制代码
lynis audit system                # 审计系统安全
lynis show commands               # 显示可用命令

rkhunter(Rootkit检测器)

bash 复制代码
rkhunter --check                  # 检查系统安全隐患
rkhunter --update                 # 更新特征数据库

实用技巧与快捷方式

命令行快捷键

css 复制代码
Ctrl+C          - 中断当前命令
Ctrl+Z          - 挂起当前命令(使用fg恢复)
Ctrl+D          - 发送EOF信号,通常用于退出当前shell或终止输入
Ctrl+L          - 清屏(相当于clear命令)
Ctrl+A          - 移动到行首
Ctrl+E          - 移动到行尾
Ctrl+U          - 删除光标前所有内容
Ctrl+K          - 删除光标后所有内容
Ctrl+W          - 删除光标前的一个单词
Alt+F           - 向前移动一个单词
Alt+B           - 向后移动一个单词
Ctrl+R          - 搜索命令历史
Ctrl+G          - 退出搜索模式
Ctrl+P/Up Arrow - 上一条命令
Ctrl+N/Down Arrow - 下一条命令
Tab             - 自动补全命令或文件名

历史命令技巧

bash 复制代码
!!                  # 重复上一条命令
!n                  # 重复历史中第n条命令
!-n                 # 重复倒数第n条命令
!string             # 重复最近以string开头的命令
!?string            # 重复最近包含string的命令
^string1^string2    # 将上一条命令中的string1替换为string2并执行
!!:gs/string1/string2/ # 将上一条命令中的所有string1替换为string2并执行
!$ 或 $_            # 引用上一条命令的最后一个参数
!*                  # 引用上一条命令的所有参数
!^                  # 引用上一条命令的第一个参数

输入/输出重定向

bash 复制代码
command > file      # 将输出重定向到文件(覆盖)
command >> file     # 将输出追加到文件
command < file      # 从文件读取输入
command 2> file     # 将错误输出重定向到文件
command &> file     # 将标准输出和错误输出重定向到文件
command >&2         # 将标准输出重定向到标准错误
command 2>&1        # 将标准错误重定向到标准输出
command | tee file  # 将输出发送到标准输出和文件
command |& tee file # 将标准输出和错误都发送到标准输出和文件

进程管理快捷键

bash 复制代码
command &           # 在后台运行命令
jobs                # 列出后台作业
fg %n               # 将作业号n切换到前台
bg %n               # 将作业号n切换到后台继续运行
kill %n             # 终止作业号n
disown %n           # 使作业脱离shell控制
nohup command &     # 使命令免疫挂起和终端关闭

别名与函数

bash 复制代码
# 创建别名
alias ll='ls -alh'
alias ..='cd ..'
alias ...='cd ../..'

# 创建函数
mcd() {
    mkdir -p "$1" && cd "$1"
}

extract() {
    if [ -f $1 ]; then
        case $1 in
            *.tar.bz2)   tar xjf $1     ;;
            *.tar.gz)    tar xzf $1     ;;
            *.bz2)       bunzip2 $1     ;;
            *.rar)       unrar e $1     ;;
            *.gz)        gunzip $1      ;;
            *.tar)       tar xf $1      ;;
            *.tbz2)      tar xjf $1     ;;
            *.tgz)       tar xzf $1     ;;
            *.zip)       unzip $1       ;;
            *.Z)         uncompress $1  ;;
            *.7z)        7z x $1        ;;
            *)           echo "'$1' cannot be extracted via extract()" ;;
        esac
    else
        echo "'$1' is not a valid file"
    fi
}

命令组合

bash 复制代码
command1 && command2  # 只有command1成功时才执行command2
command1 || command2  # 只有command1失败时才执行command2
command1 ; command2   # 无论command1结果如何都执行command2
(command1 ; command2) # 在子shell中执行命令
{ command1 ; command2; } # 在当前shell中执行命令组

双引号与单引号

bash 复制代码
echo "$HOME"          # 变量会被解析,输出/home/user
echo '$HOME'          # 变量不会被解析,输出$HOME
echo "The date is $(date)" # 命令替换会被解析

通配符和模式匹配

bash 复制代码
ls *.txt              # 匹配所有.txt文件
ls file[123].txt      # 匹配file1.txt, file2.txt, file3.txt
ls file[1-5].txt      # 匹配file1.txt到file5.txt
ls file[!1-5].txt     # 匹配不在范围内的文件
ls file?.txt          # 匹配file后跟任意单个字符

控制命令行操作

bash 复制代码
set -e                # 脚本中任何命令失败就退出
set -x                # 显示执行的每条命令
set -u                # 引用未定义变量时报错
set -o pipefail      # 管道中任何命令失败都报错

参数展开技巧

bash 复制代码
${var:-default}       # 如果var未设置或为空,返回default
${var:=default}       # 如果var未设置或为空,将default赋给var并返回
${var:+value}         # 如果var已设置且非空,返回value,否则返回空
${var:?error}         # 如果var未设置或为空,打印error并退出
${#var}               # 返回var的长度
${var:offset:length}  # 返回var的子字符串
${var#pattern}        # 从头删除最短匹配pattern的部分
${var##pattern}       # 从头删除最长匹配pattern的部分
${var%pattern}        # 从尾删除最短匹配pattern的部分
${var%%pattern}       # 从尾删除最长匹配pattern的部分
${var/pattern/replacement} # 替换第一个匹配
${var//pattern/replacement} # 替换所有匹配

推荐的Linux命令查询网站

以下是几个非常实用的Linux命令查询网站,可以帮助你快速查找和学习Linux命令:

  1. Linux命令大全(手册) - 提供全面的Linux命令分类查询,包括文件管理、文档编辑、系统管理等多个分类的命令详解。

  2. 菜鸟教程 - Linux命令大全 - 提供详细的Linux命令使用说明和参数解释,适合初学者和有经验用户。

  3. freeCodeCamp - Linux命令手册 - 提供详细解释和实用示例的Linux命令入门指南。

这些网站提供了丰富的命令参考资料和使用示例,无论是日常使用还是系统管理,都能找到需要的命令信息。当遇到不熟悉的命令或需要了解特定参数时,可以在这些网站上快速查询。

相关推荐
hope_wisdom1 小时前
Linux系统编程之虚拟内存
linux·虚拟内存·linux编程·缺页中断
CIAS1 小时前
Linux vagrant 导入Centos到virtualbox
linux·vagrant·virtualbox
小鱼啊小鱼1 小时前
【Linux】基于Exynos4412的U-Boot引导程序移植
linux
编程就是如此2 小时前
CentOS 系统磁盘扩容并挂载到根目录(/)的详细步骤
linux·centos
normaling2 小时前
十,软件包管理
linux
派阿喵搞电子3 小时前
在Ubuntu下交叉编译 Qt 应用程序(完整步骤)
linux·运维·ubuntu
知北游天3 小时前
Linux:基础IO---软硬链接&&动静态库前置知识
linux·运维·服务器
云途行者3 小时前
GitLab 17.x 在 Ubuntu 24.04 上安装配置
linux·ubuntu·gitlab
汤姆和杰瑞在瑞士吃糯米粑粑3 小时前
【操作系统学习篇-Linux】进程
linux·运维·学习
清风~徐~来3 小时前
【Linux】进程创建、进程终止、进程等待
android·linux·运维