Appearance
Linux 速记表
文件与目录
目录导航
cd /path/to/dir # 切换目录
cd ~ # 切换到主目录
cd - # 切换到上一个目录
pwd # 显示当前路径
查看文件
ls # 列出文件
ls -la # 详细列表(含隐藏文件)
ls -lh # 人类可读的文件大小
ls -lt # 按时间排序
tree # 树形结构
创建与删除
mkdir dir # 创建目录
mkdir -p a/b/c # 递归创建
touch file.txt # 创建文件
rm file.txt # 删除文件
rm -rf dir # 递归强制删除目录
复制与移动
cp src dest # 复制文件
cp -r dir1 dir2 # 复制目录
mv src dest # 移动/重命名
rsync -av src/ dest/ # 同步目录
查找文件
find . -name "*.txt" # 按名称查找
find . -type f -mtime -7 # 7天内修改的文件
find . -size +100M # 大于100MB的文件
locate filename # 快速定位文件
which command # 查找命令路径
链接文件
ln -s target link # 创建软链接
ln target link # 创建硬链接
readlink -f link # 查看链接目标
文件内容
查看文件
cat file.txt # 显示全部内容
less file.txt # 分页查看
head -n 10 file # 查看前10行
tail -n 10 file # 查看后10行
tail -f file # 实时查看文件更新
编辑文件
vim file.txt # Vim 编辑器
nano file.txt # Nano 编辑器
echo "text" > file # 覆盖写入
echo "text" >> file # 追加写入
文本搜索
grep "pattern" file # 搜索文本
grep -r "pattern" dir # 递归搜索
grep -i "pattern" file # 忽略大小写
grep -v "pattern" file # 反向匹配
grep -n "pattern" file # 显示行号
grep -E "regex" file # 正则表达式
文本处理
wc -l file # 统计行数
sort file # 排序
uniq file # 去重
cut -d: -f1 file # 提取字段
awk '{print $1}' file # AWK处理
sed 's/old/new/g' file # SED替换
文件比较
diff file1 file2 # 比较文件
diff -u file1 file2 # 统一格式
vimdiff file1 file2 # Vim可视化比较
comm file1 file2 # 逐行比较
权限管理
查看权限
ls -l # 查看权限
# -rwxr-xr-x
# - 文件类型 (- 文件, d 目录, l 链接)
# rwx 所有者权限(读写执行)
# r-x 组权限(读执行)
# r-x 其他用户权限(读执行)
修改权限
chmod 755 file # 数字方式
chmod u+x file # 给所有者添加执行权限
chmod g-w file # 移除组写权限
chmod a+r file # 所有人添加读权限
chmod -R 755 dir # 递归修改
权限数字
r=4, w=2, x=1
777 = rwxrwxrwx # 所有人全部权限
755 = rwxr-xr-x # 所有者全部,其他可读执行
644 = rw-r--r-- # 所有者读写,其他只读
600 = rw------- # 仅所有者读写
所有者管理
chown user file # 修改所有者
chown user:group file # 修改所有者和组
chown -R user dir # 递归修改
chgrp group file # 修改组
sudo 权限
sudo command # 以root执行命令
sudo -i # 切换到root shell
sudo -u user cmd # 以指定用户执行
visudo # 编辑sudoers文件
进程管理
查看进程
ps aux # 查看所有进程
ps aux | grep name # 搜索进程
top # 实时进程监控
htop # 更好的进程监控
pgrep name # 按名称查找进程ID
管理进程
kill PID # 终止进程
kill -9 PID # 强制终止
killall name # 按名称终止
pkill name # 按名称终止
bg # 后台运行
fg # 前台运行
进程状态
command & # 后台运行
nohup command & # 不挂断运行
jobs # 查看后台任务
ctrl+z # 暂停当前进程
ctrl+c # 终止当前进程
服务管理
systemd
systemctl start service # 启动服务
systemctl stop service # 停止服务
systemctl restart service # 重启服务
systemctl status service # 查看状态
systemctl enable service # 开机自启
systemctl disable service # 禁用自启
系统监控
free -h # 内存使用
df -h # 磁盘使用
du -sh dir # 目录大小
iostat # IO统计
vmstat # 虚拟内存统计
网络管理
网络信息
ip addr # 查看IP地址
ip link # 查看网络接口
ifconfig # 网络接口配置(旧)
hostname # 查看主机名
hostname -I # 查看所有IP
网络测试
ping host # 测试连通性
ping -c 4 host # ping 4次
traceroute host # 追踪路由
mtr host # 持续追踪路由
nslookup domain # DNS查询
dig domain # DNS详细查询
网络连接
netstat -tulpn # 查看监听端口
ss -tulpn # socket统计(更快)
lsof -i :80 # 查看端口占用
nc -zv host port # 测试端口连通性
telnet host port # Telnet测试
下载工具
wget url # 下载文件
wget -c url # 断点续传
curl url # 获取内容
curl -O url # 下载保存
curl -I url # 仅获取头部
远程连接
ssh user@host # SSH连接
ssh -p 2222 user@host # 指定端口
scp file user@host:/path # 复制文件到远程
scp user@host:/path file # 从远程复制
rsync -avz src user@host:dest # 同步
防火墙
ufw status # UFW防火墙状态
ufw enable # 启用防火墙
ufw allow 80 # 允许端口
firewall-cmd --list-all # firewalld查看
iptables -L # iptables查看规则
压缩与归档
tar 归档
tar -czf archive.tar.gz dir/ # 创建压缩包
tar -xzf archive.tar.gz # 解压
tar -tzf archive.tar.gz # 查看内容
tar -xzf file.tar.gz -C /path # 解压到指定目录
tar 选项
-c 创建归档
-x 解压归档
-t 列出内容
-z gzip压缩
-j bzip2压缩
-J xz压缩
-v 显示详细信息
-f 指定文件名
zip/unzip
zip archive.zip file1 file2 # 创建zip
zip -r archive.zip dir/ # 压缩目录
unzip archive.zip # 解压
unzip -l archive.zip # 查看内容
unzip archive.zip -d /path # 解压到指定目录
gzip/bzip2
gzip file # gzip压缩
gzip -d file.gz # gzip解压
gunzip file.gz # gzip解压
bzip2 file # bzip2压缩
bzip2 -d file.bz2 # bzip2解压
bunzip2 file.bz2 # bzip2解压
用户管理
用户信息
whoami # 当前用户
id # 用户ID和组ID
users # 已登录用户
w # 谁在线及在做什么
last # 最近登录记录
用户操作
useradd username # 添加用户
useradd -m -s /bin/bash user # 创建用户(带主目录)
userdel username # 删除用户
userdel -r username # 删除用户及主目录
passwd username # 设置密码
usermod -aG group user # 添加用户到组
组管理
groupadd group # 创建组
groupdel group # 删除组
groups # 显示当前用户的组
groups username # 显示指定用户的组
切换用户
su # 切换到root
su - username # 切换到指定用户
sudo -i # 切换到root shell
sudo -u user cmd # 以指定用户执行
包管理
APT (Debian/Ubuntu)
apt update # 更新包列表
apt upgrade # 升级所有包
apt install pkg # 安装包
apt remove pkg # 卸载包
apt autoremove # 清理无用包
apt search pkg # 搜索包
YUM/DNF (RHEL/CentOS)
yum update # 更新包
yum install pkg # 安装包
yum remove pkg # 卸载包
yum search pkg # 搜索包
dnf install pkg # DNF安装(新版)
Pacman (Arch)
pacman -Syu # 更新系统
pacman -S pkg # 安装包
pacman -R pkg # 卸载包
pacman -Ss pkg # 搜索包
pacman -Qi pkg # 查看包信息
Snap/Flatpak
snap install pkg # Snap安装
snap list # 列出已安装
flatpak install pkg # Flatpak安装
flatpak list # 列出已安装
系统信息
基本信息
uname -a # 系统信息
hostnamectl # 主机信息
lsb_release -a # 发行版信息
cat /etc/os-release # 系统版本
硬件信息
lscpu # CPU信息
lsmem # 内存信息
lsblk # 块设备信息
lspci # PCI设备
lsusb # USB设备
dmidecode # DMI/SMBIOS信息
性能信息
uptime # 运行时间和负载
free -h # 内存使用
df -h # 磁盘使用
du -sh * # 目录大小
iostat # IO统计
vmstat 1 # 每秒系统统计
日志查看
journalctl # systemd日志
journalctl -f # 实时查看日志
journalctl -u service # 查看服务日志
dmesg # 内核日志
tail -f /var/log/syslog # 系统日志
管道与重定向
输出重定向
cmd > file # 覆盖写入文件
cmd >> file # 追加到文件
cmd 2> file # 错误输出到文件
cmd &> file # 标准输出和错误都输出
cmd > /dev/null # 丢弃输出
管道操作
cmd1 | cmd2 # 管道传递
cmd1 | tee file # 同时输出到文件和终端
cmd1 && cmd2 # cmd1成功后执行cmd2
cmd1 || cmd2 # cmd1失败后执行cmd2
cmd1 ; cmd2 # 顺序执行
输入重定向
cmd < file # 从文件读入
cmd << EOF # Here Document
content
EOF
cmd <<< "string" # Here String
快捷键
光标移动
Ctrl+A # 移到行首
Ctrl+E # 移到行尾
Ctrl+B # 向左移动
Ctrl+F # 向右移动
Alt+B # 向左移动一个单词
Alt+F # 向右移动一个单词
编辑
Ctrl+U # 删除到行首
Ctrl+K # 删除到行尾
Ctrl+W # 删除前一个单词
Ctrl+Y # 粘贴
Ctrl+L # 清屏
Ctrl+_ # 撤销
进程控制
Ctrl+C # 终止当前进程
Ctrl+Z # 暂停当前进程
Ctrl+D # 退出当前shell
Ctrl+S # 暂停输出
Ctrl+Q # 恢复输出
历史命令
Ctrl+R # 搜索历史命令
Ctrl+P / ↑ # 上一条命令
Ctrl+N / ↓ # 下一条命令
!! # 执行上一条命令
!n # 执行第n条命令
!string # 执行最近以string开头的命令
Shell 脚本
基础结构
#!/bin/bash
# 这是注释
echo "Hello World"
# 变量
name="Alice"
echo "Hello, $name"
# 只读变量
readonly PI=3.14
条件语句
if [ condition ]; then
echo "true"
elif [ condition2 ]; then
echo "true2"
else
echo "false"
fi
# 测试运算符
[ -f file ] # 文件存在
[ -d dir ] # 目录存在
[ "$a" = "$b" ] # 字符串相等
[ $a -eq $b ] # 数字相等
循环
# for循环
for i in {1..5}; do
echo $i
done
# while循环
while [ condition ]; do
echo "loop"
done
# until循环
until [ condition ]; do
echo "loop"
done
函数
# 定义函数
function greet() {
echo "Hello, $1"
}
# 或者
greet() {
local name=$1
echo "Hello, $name"
return 0
}
# 调用函数
greet "Alice"
特殊变量
$0 # 脚本名称
$1 $2 ... # 参数
$# # 参数个数
$@ # 所有参数
$? # 上个命令的退出状态
$$ # 当前进程ID
$! # 后台运行的最后一个进程ID
实用技巧
命令历史
history # 查看历史
history | grep cmd # 搜索历史
!123 # 执行第123条命令
!! # 执行上一条
!$ # 上一条命令的最后参数
ctrl+r # 反向搜索
别名
alias ll='ls -la' # 创建别名
alias ..='cd ..'
unalias ll # 删除别名
alias # 查看所有别名
# 永久生效:添加到 ~/.bashrc 或 ~/.zshrc
环境变量
echo $PATH # 查看PATH
export VAR=value # 设置环境变量
export PATH=$PATH:/new/path # 添加到PATH
env # 查看所有环境变量
printenv # 打印环境变量
命令替换
result=$(command) # 命令替换(推荐)
result=`command` # 命令替换(旧)
echo "Date: $(date)"
files=$(ls *.txt)
批量操作
# 批量重命名
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
# 批量处理
find . -name "*.log" -exec rm {} \;
# xargs批量
ls *.txt | xargs -I {} cp {} backup/
常用组合
# 查找大文件
du -ah / | sort -rh | head -20
# 查看端口占用
netstat -tulpn | grep :80
# 实时日志带高亮
tail -f log | grep --color "ERROR"
# 查找并删除
find . -name "*.tmp" -delete