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 shellsudo -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 # 创建zipzip -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和组IDusers # 已登录用户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 # 切换到rootsu - username # 切换到指定用户sudo -i # 切换到root shellsudo -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成功后执行cmd2cmd1 || cmd2 # cmd1失败后执行cmd2cmd1 ; cmd2 # 顺序执行输入重定向
cmd < file # 从文件读入cmd << EOF # Here Document contentEOFcmd <<< "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 # 退出当前shellCtrl+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 $idone# 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 # 查看PATHexport VAR=value # 设置环境变量export PATH=$PATH:/new/path # 添加到PATHenv # 查看所有环境变量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