作为程序员,Linux命令行是必备技能。无论是开发、部署还是运维,都离不开Linux终端。

现在的服务器,绝大多数跑的是Linux系统。部署应用、查看日志、排查问题、性能调优,都需要在Linux终端上操作。不会Linux命令,就像不会用筷子一样,在服务器上寸步难行。

而且Linux命令行非常高效。很多在图形界面下需要点很多次鼠标的操作,在命令行里一条命令就能搞定。熟练使用Linux命令,能大幅提高工作效率。

我刚开始工作的时候,也不太会Linux命令,每次上服务器都小心翼翼的,生怕输错命令搞坏了系统。后来逼着自己多用、多记、多练,慢慢就熟练了。现在Linux命令已经成了我工作中最常用的工具之一。

今天分享Linux常用命令速查表,按类别整理,方便查阅和记忆。建议收藏,用到的时候翻一翻。

文件操作

查看文件

  • cat file:查看文件全部内容
  • less file:分页查看文件(按q退出,空格翻页,上下键滚动)
  • head -n 10 file:查看文件前10行
  • tail -n 10 file:查看文件后10行
  • tail -f file:实时查看文件新增内容(看日志常用)
  • wc file:统计文件行数、单词数、字符数

创建和删除

  • touch file:创建空文件或更新文件时间戳
  • rm file:删除文件
  • rm -f file:强制删除文件,不提示
  • cp file1 file2:复制文件
  • mv file1 file2:移动或重命名文件
  • ln -s file link:创建软链接

查找文件

  • find /path -name "*.log":按文件名查找
  • find /path -type f -size +10M:查找大于10M的文件
  • find /path -mtime -7:查找7天内修改的文件
  • locate file:快速查找文件(需要先运行updatedb更新数据库)
  • which command:查找命令的位置
  • whereis command:查找命令的二进制、源码、man手册位置

目录管理

  • pwd:显示当前目录
  • cd /path:切换目录
  • cd ..:返回上一级目录
  • cd ~:回到家目录
  • cd -:回到上一次的目录
  • ls:列出当前目录文件
  • ls -l:详细列表(权限、所有者、大小、时间)
  • ls -a:显示隐藏文件
  • ls -lh:人性化显示文件大小(K、M、G)
  • ls -lt:按修改时间排序
  • mkdir dir:创建目录
  • mkdir -p dir1/dir2/dir3:递归创建目录
  • rmdir dir:删除空目录
  • rm -rf dir:递归强制删除目录(慎用!)
  • cp -r dir1 dir2:递归复制目录
  • mv dir1 dir2:移动或重命名目录
  • tree:以树状图显示目录结构(需要安装tree)

权限管理

Linux文件权限分为读(r=4)、写(w=2)、执行(x=1),分所有者(u)、组(g)、其他(o)三组。

  • chmod 755 file:设置文件权限(rwxr-xr-x)
  • chmod +x file:给文件添加执行权限
  • chmod u+w file:给所有者添加写权限
  • chown user:group file:修改文件所有者和组
  • chown -R user:group dir:递归修改目录所有者和组
  • chgrp group file:修改文件所属组
  • umask:显示或设置默认权限掩码

常用权限:

  • 755:所有者可读写执行,其他可读执行(目录、可执行文件)
  • 644:所有者可读写,其他只读(普通文件)
  • 777:所有人可读写执行(慎用,不安全)

进程管理

  • ps:查看当前终端进程
  • ps aux:查看所有进程详细信息
  • ps aux | grep nginx:查找nginx进程
  • top:实时显示进程状态(按q退出)
  • htop:更美观的进程监控(需要安装)
  • kill pid:终止进程(发送TERM信号)
  • kill -9 pid:强制杀死进程(发送KILL信号)
  • killall process:按名称杀死所有进程
  • pkill process:按名称匹配杀死进程
  • bg:把挂起的进程放到后台运行
  • fg:把后台进程调到前台
  • jobs:查看后台任务
  • nohup command &:后台运行命令,退出终端不终止
  • &:命令末尾加&,后台运行
  • Ctrl+C:终止当前进程
  • Ctrl+Z:挂起当前进程

网络操作

  • ifconfig:查看网络接口信息(新系统用ip addr)
  • ip addr:查看网络接口信息
  • ping host:测试网络连通性
  • ping -c 4 host:发送4个包后停止
  • netstat -tlnp:查看监听端口和进程(新系统用ss)
  • ss -tlnp:查看监听端口和进程
  • curl url:发送HTTP请求
  • curl -I url:只显示响应头
  • curl -X POST -d "key=value" url:发送POST请求
  • wget url:下载文件
  • wget -c url:断点续传下载
  • ssh user@host:远程登录
  • ssh -p port user@host:指定端口登录
  • scp file user@host:/path:远程复制文件
  • scp -r dir user@host:/path:远程复制目录
  • telnet host port:测试端口连通性
  • nc -zv host port:测试端口是否开放
  • dig domain:DNS查询
  • nslookup domain:DNS查询
  • hostname:显示主机名
  • route -n:查看路由表
  • iptables -L:查看防火墙规则

系统监控

  • uptime:显示系统运行时间和负载
  • free -h:显示内存使用情况
  • df -h:显示磁盘使用情况
  • du -sh /path:显示目录大小
  • du -sh /* | sort -rh:显示根目录下各目录大小,排序
  • top:实时系统监控
  • vmstat:虚拟内存统计
  • iostat:IO统计(需要安装sysstat)
  • sar:系统活动报告(需要安装sysstat)
  • dmesg:查看内核日志
  • uname -a:显示系统信息
  • cat /etc/os-release:查看发行版信息
  • cat /proc/cpuinfo:查看CPU信息
  • cat /proc/meminfo:查看内存信息
  • lscpu:查看CPU架构信息
  • lsblk:查看块设备(磁盘)信息
  • fdisk -l:查看磁盘分区
  • mount:查看挂载信息
  • history:查看命令历史
  • !n:执行第n条历史命令
  • !!:执行上一条命令

文本处理

  • grep pattern file:在文件中搜索匹配的行
  • grep -i pattern file:忽略大小写
  • grep -v pattern file:显示不匹配的行
  • grep -r pattern /path:递归搜索目录
  • grep -n pattern file:显示行号
  • grep -c pattern file:统计匹配行数
  • egrep "pattern1|pattern2" file:扩展正则(或关系)
  • sed 's/old/new/g' file:替换文本
  • sed -i 's/old/new/g' file:直接修改文件
  • sed '10d' file:删除第10行
  • sed -n '10,20p' file:显示第10到20行
  • awk '{print $1}' file:打印第一列
  • awk -F: '{print $1}' /etc/passwd:指定分隔符为冒号
  • awk '$3 > 1000' file:第三列大于1000的行
  • sort file:排序
  • sort -r file:倒序排序
  • sort -n file:按数字排序
  • sort -t: -k3 file:按冒号分隔的第三列排序
  • uniq file:去重(需要先排序)
  • uniq -c file:统计重复次数
  • cut -d: -f1 file:按冒号分隔取第一列
  • paste file1 file2:合并两个文件的行
  • join file1 file2:按关键字连接两个文件
  • wc -l file:统计行数
  • wc -w file:统计单词数
  • wc -c file:统计字符数
  • diff file1 file2:比较两个文件差异
  • vimdiff file1 file2:用vim比较文件
  • cat file | grep pattern | sort | uniq -c:管道组合使用

压缩解压

  • tar -cvf archive.tar files:打包成tar
  • tar -xvf archive.tar:解压tar
  • tar -czvf archive.tar.gz files:打包并gzip压缩
  • tar -xzvf archive.tar.gz:解压tar.gz
  • tar -cjvf archive.tar.bz2 files:打包并bzip2压缩
  • tar -xjvf archive.tar.bz2:解压tar.bz2
  • tar -tf archive.tar:查看压缩包内容
  • zip archive.zip files:压缩成zip
  • unzip archive.zip:解压zip
  • unzip -l archive.zip:查看zip内容
  • gzip file:压缩文件(生成.gz)
  • gunzip file.gz:解压.gz
  • bzip2 file:压缩文件(生成.bz2)
  • bunzip2 file.bz2:解压.bz2

软件包管理

Debian/Ubuntu(apt)

  • apt update:更新软件源
  • apt upgrade:升级所有软件
  • apt install package:安装软件
  • apt remove package:卸载软件
  • apt purge package:卸载并删除配置
  • apt search keyword:搜索软件
  • apt show package:查看软件信息
  • dpkg -i package.deb:安装deb包
  • dpkg -l:列出已安装软件

CentOS/RHEL(yum)

  • yum install package:安装软件
  • yum remove package:卸载软件
  • yum update:升级所有软件
  • yum search keyword:搜索软件
  • yum info package:查看软件信息
  • yum list installed:列出已安装软件
  • rpm -ivh package.rpm:安装rpm包
  • rpm -qa:列出已安装软件

其他常用命令

  • echo "text":输出文本
  • echo $VAR:输出环境变量
  • date:显示当前时间
  • date "+%Y-%m-%d %H:%M:%S":格式化时间
  • cal:显示日历
  • clear:清屏(Ctrl+L)
  • man command:查看命令手册
  • command --help:查看命令帮助
  • which command:查找命令位置
  • type command:查看命令类型
  • alias ll="ls -l":设置别名
  • unalias ll:取消别名
  • export VAR=value:设置环境变量
  • source file:加载配置文件
  • . file:同上,加载配置文件
  • su - user:切换用户
  • sudo command:以root权限执行命令
  • passwd:修改密码
  • logout:退出登录
  • exit:退出终端
  • reboot:重启系统
  • shutdown -h now:立即关机
  • shutdown -r +5:5分钟后重启
  • crontab -e:编辑定时任务
  • crontab -l:查看定时任务

快捷键

  • Ctrl+C:终止当前命令
  • Ctrl+Z:挂起当前命令
  • Ctrl+D:退出当前shell(EOF)
  • Ctrl+L:清屏
  • Ctrl+A:光标移到行首
  • Ctrl+E:光标移到行尾
  • Ctrl+U:删除光标前的内容
  • Ctrl+K:删除光标后的内容
  • Ctrl+R:搜索历史命令
  • Ctrl+W:删除光标前一个单词
  • Tab:自动补全命令或文件名
  • !!:执行上一条命令
  • !$:上一条命令的最后一个参数

学习建议

Linux命令很多,不用死记硬背,常用的记住,不常用的用到的时候查就行。

学习建议:

  1. 多用多练,在实际工作中使用命令行,不要依赖图形界面
  2. 先掌握最常用的20%命令,能解决80%的问题
  3. 用好man手册和--help,遇到不会的命令先查帮助
  4. 学会用管道(|)和重定向(>、>>),组合命令实现复杂功能
  5. 写shell脚本,把常用的操作自动化
  6. 收藏速查表,用到的时候翻一翻

Linux命令行是一个强大的工具,掌握它能让你在服务器上游刃有余,工作效率大幅提升。希望这篇速查表能帮到你。