Linux常用命令分类总结

一、文件与目录操作 (File & Directory Operations)

  1. ls (List): 列出目录内容。
    • ls: 列出当前目录文件和目录 (简单列表)
    • ls -l: 列出详细信息 (权限、所有者、大小、修改时间)
    • ls -a: 列出所有文件,包括隐藏文件 (以 . 开头)
    • ls -lh: 列出详细信息并以人类可读格式显示文件大小 (K, M, G)
    • ls /path/to/dir: 列出指定目录内容
  2. cd (Change Directory): 切换工作目录。
    • cd /path/to/dir: 切换到绝对路径
    • cd dirname: 切换到当前目录下的子目录 dirname
    • cd ..: 切换到上一级目录
    • cd ~cd: 切换到用户家目录 (/home/username)
    • cd -: 切换到上一个工作目录
  3. pwd (Print Working Directory): 显示当前工作目录的绝对路径。
  4. mkdir (Make Directory): 创建新目录。
    • mkdir dirname: 创建单个目录
    • mkdir -p parent/child: 创建嵌套目录 (如果父目录不存在则一起创建)
  5. rmdir (Remove Directory): 删除 目录。
    • rmdir dirname
  6. rm (Remove): 删除文件或目录。
    • rm filename: 删除文件
    • rm -r dirname: 递归删除目录及其下所有内容 (非常危险!)
    • rm -i filename: 交互式删除 (删除前询问确认)
    • rm -f filename: 强制删除,不提示 (更危险!)
  7. cp (Copy): 复制文件或目录。
    • cp source_file dest_file: 复制文件
    • cp source_file /path/to/dest_dir/: 复制文件到目标目录
    • cp -r source_dir /path/to/dest_dir/: 递归复制整个目录
    • cp -i source dest: 交互式复制 (覆盖前询问)
  8. mv (Move): 移动或重命名文件或目录。
    • mv oldname newname: 重命名文件/目录 (在同一目录下)
    • mv file /path/to/dest_dir/: 移动文件到目标目录
    • mv dir /path/to/dest_dir/: 移动目录到目标目录
  9. touch: 创建空文件或更新文件的时间戳 (访问和修改时间)。
    • touch newfile: 创建一个新的空文件 newfile
    • touch existingfile: 更新 existingfile 的时间戳为当前时间
  10. cat (Concatenate): 连接文件内容并打印到标准输出 (屏幕)。常用于查看小文件内容。
    • cat filename: 显示文件内容
    • cat file1 file2 > combined: 合并 file1file2combined
    • cat > newfile: 从键盘输入创建新文件 (按 Ctrl+D 结束)
  11. less / more: 分页查看文件内容 (适合大文件)。
    • less filename: 使用 less 查看 (推荐,功能更强:可上下滚动、搜索 /pattern、退出按 q)
    • more filename: 使用 more 查看 (基本分页,按空格翻页,q 退出)
  12. head: 显示文件开头部分内容 (默认前 10 行)。
    • head filename
    • head -n 20 filename: 显示前 20 行
  13. tail: 显示文件末尾部分内容 (默认后 10 行)。常用于实时查看日志 (-f)。
    • tail filename
    • tail -n 20 filename: 显示后 20 行
    • tail -f logfile: 实时跟踪 并显示 logfile 新增的内容 (Ctrl+C 停止)
  14. find: 在目录树中搜索文件 (功能极其强大)。
    • find /path/to/search -name "filename": 按文件名查找
    • find . -type f -name "*.txt": 在当前目录 (.) 下查找所有 .txt 文件 (-type f 表示普通文件)
    • find /home -user username: 在 /home 下查找属于用户 username 的文件
    • find /var/log -size +10M: 在 /var/log 下查找大于 10MB 的文件
    • find . -mtime -7: 查找当前目录下过去 7 天内修改过的文件
  15. grep (Global Regular Expression Print): 在文件中搜索匹配指定模式 (文本或正则表达式) 的行。
    • grep "pattern" filename: 在 filename 中搜索包含 "pattern" 的行
    • grep -i "pattern" filename: 忽略大小写搜索
    • grep -r "pattern" /path/to/dir/: 递归在目录及其子目录的所有文件中搜索
    • grep -v "pattern" filename: 显示 匹配 "pattern" 的行
    • ls -l | grep "Aug": 管道符 | 结合,列出详细信息中包含 "Aug" 的行 (常用于过滤命令输出)

二、文件权限与所有权 (File Permissions & Ownership)

  1. chmod (Change Mode): 修改文件或目录的访问权限。
    • 符号模式:
      • chmod u+x script.sh: 给文件所有者 (u) 增加 (+) 执行 (x) 权限。
      • chmod g-w file: 从文件所属组 (g) 移除 (-) 写 (w) 权限。
      • chmod o=r file: 设置其他用户 (o) 的权限为只读 (r)。
      • chmod a+r file: 给所有用户 (a) 增加读 (r) 权限。
    • 八进制 (数字) 模式:
      • chmod 755 script.sh: 所有者: rwx (7), 组: r-x (5), 其他用户: r-x (5) - 常用可执行文件。
      • chmod 644 file.txt: 所有者: rw- (6), 组: r-- (4), 其他用户: r-- (4) - 常用普通文件。
    • chmod -R 755 dir/: 递归 修改目录 dir/ 及其下所有内容的权限。
  2. chown (Change Owner): 修改文件或目录的所有者和/或所属组。
    • chown newowner filename: 改变文件所有者。
    • chown newowner:newgroup filename: 同时改变文件所有者和所属组。
    • chown :newgroup filename: 只改变文件所属组。
    • chown -R user:group dir/: 递归 修改目录 dir/ 及其下所有内容的所有者和组。
  3. chgrp (Change Group): 修改文件或目录的所属组 (功能可被 chown 替代)。
    • chgrp newgroup filename
    • chgrp -R newgroup dir/

三、文本处理 (Text Processing)

  1. grep: (已在上文列出) 强大的文本搜索工具。
  2. sed (Stream Editor): 流编辑器,用于对输入流(文件或管道输入)进行基本的文本转换(查找替换、插入删除行等)。
    • sed 's/old/new/g' file: 将文件 file 中所有 old 替换new (g 表示全局替换)。
    • sed '5d' file: 删除第 5 行。
    • sed -i.bak 's/old/new/' file: 原地编辑 文件 (会生成备份 file.bak),将每行第一个 old 替换为 new
  3. awk: 强大的文本分析处理语言。擅长按列处理结构化文本 (如日志、CSV)。
    • awk '{print $1}' file: 打印文件 file 每一行的第一列 ($1)。
    • awk -F',' '{print $2}' data.csv: 使用逗号 , 作为字段分隔符 (-F','),打印 data.csv 每一行的第二列。
    • awk '$3 > 100 {print $0}' file: 如果第三列的值大于 100,则打印整行 ($0)。
  4. sort: 对文本行进行排序。
    • sort filename: 按默认规则 (字符顺序) 排序。
    • sort -n filename: 按数值大小排序。
    • sort -r filename: 倒序排序。
    • sort -k 2 filename: 按第二列排序。
  5. uniq (Unique): 报告或忽略重复的行。通常需要先排序 (sort) 才能正确去重
    • sort file | uniq: 排序后去重。
    • sort file | uniq -c: 排序后去重并显示每行重复出现的次数。
    • uniq -d file: 仅显示重复的行 (重复至少一次)。
  6. wc (Word Count): 统计文件的行数、单词数、字节数。
    • wc filename: 显示行数、单词数、字节数、文件名。
    • wc -l filename: 仅显示行数 (Line count)。
    • wc -w filename: 仅显示单词数 (Word count)。
    • wc -c filename: 仅显示字节数 (Character/Byte count)。
  7. cut: 从文件的每一行中剪切部分内容 (列、字符、字段)。
    • cut -d':' -f1 /etc/passwd: 以冒号 : 为分隔符 (-d':'),提取 /etc/passwd 文件每一行的第一个字段 (-f1) (通常是用户名)。
    • cut -c1-5 file: 提取文件每一行的第 1 到第 5 个字符。
  8. tr (Translate): 替换或删除字符。
    • tr 'a-z' 'A-Z' < file: 将文件 file 内容中的所有小写字母转换为大写字母。
    • echo "hello" | tr -d 'l': 删除字符串 "hello" 中的所有 'l',输出 "heo"。
  9. diff (Difference): 比较两个文件的差异。
    • diff file1 file2: 显示两个文件的差异。
    • diff -u file1 file2: 以更易读的统一格式 (unified) 显示差异。

四、系统信息与监控 (System Information & Monitoring)

  1. uname (Unix Name): 打印系统信息。
    • uname -a: 打印所有信息 (内核名称、主机名、内核版本、硬件架构等)。
    • uname -r: 仅打印内核版本 (Release)。
  2. hostname: 显示或设置系统的主机名。
    • hostname: 显示当前主机名。
  3. top / htop: 动态显示当前正在运行的进程及系统资源使用情况 (CPU, 内存, 任务等)。htoptop 的增强版 (更直观,支持鼠标操作,彩色显示)。
    • top: 启动 top (按 q 退出)。
    • htop: 启动 htop (如果已安装)。
  4. ps (Process Status): 报告当前进程的快照。
    • ps aux: 查看系统上运行的所有进程的详细信息 (BSD 风格)。
    • ps -ef: 查看系统上运行的所有进程的详细信息 (Unix/Linux 标准风格)。
    • ps -u username: 查看特定用户 username 运行的进程。
    • ps -p PID: 查看特定进程 ID (PID) 的详细信息。
  5. free: 显示系统内存和交换空间 (Swap) 的使用情况。
    • free: 显示总量、已用量、空闲量等。
    • free -h: 以人类可读格式 (G, M) 显示。
  6. df (Disk Free): 显示文件系统的磁盘空间使用情况。
    • df -h: 以人类可读格式显示所有挂载文件系统的使用情况。
    • df -h /path/to/dir: 显示指定目录所在文件系统的使用情况。
  7. du (Disk Usage): 估算文件和目录占用的磁盘空间。
    • du -sh dirname: 以人类可读格式 (-h) 显示目录 dirname 的总大小 (-s 表示只显示总计)。
    • du -h --max-depth=1 /path: 显示 /path 下一级子目录的大小 (人类可读)。
  8. uptime: 显示系统运行了多长时间、当前登录用户数以及过去 1、5、15 分钟的系统平均负载。
  9. who / w: 显示当前登录系统的用户信息。w 信息更详细 (包括他们在做什么)。

五、网络相关 (Networking)

  1. ping: 测试与目标主机的网络连通性 (发送 ICMP Echo 请求包)。
    • ping google.com: 持续 ping Google (按 Ctrl+C 停止)。
    • ping -c 4 8.8.8.8: ping IP 地址 8.8.8.8 4 次后停止。
  2. ifconfig (旧) / ip (新): 查看和配置网络接口。ifconfig 逐渐被更强大的 ip 命令取代。
    • ifconfig: 显示所有网络接口信息 (IP 地址、MAC 地址、状态等)。
    • ip addr show (或 ip a): 显示 IP 地址信息 (功能更强大)。
    • ip link show: 显示链路层 (MAC) 信息。
    • ip route show: 显示路由表。
  3. netstat (旧) / ss (新): 显示网络连接、路由表、接口统计等网络相关信息。ss 通常更快更高效。
    • netstat -tulpn: 查看所有监听 的 TCP (-t) / UDP (-u) 端口 (-l),显示进程名和 PID (-p),不解析主机名 (-n)。
    • ss -tulpn: 功能同上,使用 ss
    • netstat -rroute -n: 查看路由表。
  4. traceroute / tracepath / mtr: 跟踪数据包从本机到目标主机所经过的路由路径 (跃点)。
    • traceroute google.com
    • mtr google.com: 实时动态显示路由路径和延迟 (更强大)。
  5. dig (Domain Information Groper): 强大的 DNS 查询工具,用于诊断域名解析问题。
    • dig google.com: 查询 google.com 的 A 记录。
    • dig MX google.com: 查询 google.com 的 MX 记录 (邮件服务器)。
    • dig @8.8.8.8 google.com: 指定使用 DNS 服务器 8.8.8.8 (Google Public DNS) 进行查询。
  6. nslookup: 查询 DNS 信息的交互式工具 (功能不如 dig 强大,但更简单)。
    • nslookup google.com
  7. wget: 命令行下载工具,支持 HTTP, HTTPS, FTP。
    • wget http://example.com/file.zip: 下载文件到当前目录。
    • wget -c http://example.com/bigfile.iso: 断点续传 (Continue)。
    • wget -r -np http://example.com/docs/: 递归下载网站 (-r),不进入父目录 (-np - no-parent)。
  8. curl: 强大的数据传输工具,支持多种协议 (HTTP, HTTPS, FTP, FTPS, SCP, SFTP 等)。常用于测试 API、下载/上传文件、发送请求。
    • curl -O http://example.com/file.zip: 下载文件 (-O 保留远程文件名)。
    • curl -o localname.zip http://example.com/file.zip: 下载文件并保存为 localname.zip
    • curl -I http://example.com: 仅获取 HTTP 响应头信息。
    • curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://api.example.com/endpoint: 发送 POST 请求到 API。

六、进程管理 (Process Management)

  1. ps: (已在上文列出) 查看进程快照。
  2. top / htop: (已在上文列出) 动态监控进程和资源。
  3. kill: 向进程发送信号以终止或控制进程。
    • kill PID: 向进程 ID 为 PID 的进程发送默认的 TERM (终止) 信号 (请求它正常退出)。
    • kill -9 PID: 发送 SIGKILL 信号 (强制立即终止进程,无法被捕获或忽略)。 慎用!可能导致数据丢失。
    • kill -l: 列出所有可发送的信号名称和编号。
  4. killall: 根据进程名 发送信号。
    • killall process_name: 向所有名为 process_name 的进程发送 TERM 信号。
    • killall -9 process_name: 强制终止所有名为 process_name 的进程。
  5. pkill: 根据模式 匹配进程名或其他属性发送信号。
    • pkill -f "pattern": 向命令行中包含 "pattern" 的进程发送 TERM 信号。
    • pkill -u username: 终止属于用户 username 的所有进程。
  6. bg / fg / jobs: 控制作业 (在后台运行的进程或命令组)。
    • command &: 在后台启动命令 (命令后加 &)。
    • jobs: 列出当前 shell 中的后台作业。
    • bg %n: 将暂停的后台作业 n 转为继续在后台运行。
    • fg %n: 将后台作业 n 转到前台运行。
    • Ctrl+Z: 暂停 (挂起) 当前正在前台运行的进程 (将其放入后台并暂停)。

七、压缩与归档 (Compression & Archiving)

  1. tar (Tape ARchiver): 打包和解包文件 (不压缩),常与压缩工具结合。
    • 打包/压缩:
      • tar -cvf archive.tar file1 file2 dir/: 创建 (-c) 名为 archive.tar 的归档文件,包含 file1, file2, dir/,显示过程 (-v)。
      • tar -czvf archive.tar.gz file1 dir/: 创建并用 gzip 压缩 (-z) 的归档文件 (.tar.gz.tgz)。
      • tar -cjvf archive.tar.bz2 file1 dir/: 创建并用 bzip2 压缩 (-j) 的归档文件 (.tar.bz2.tbz2)。
      • tar -cJvf archive.tar.xz file1 dir/: 创建并用 xz 压缩 (-J) 的归档文件 (.tar.xz)。
    • 解包/解压:
      • tar -xvf archive.tar: 解包 (-x) archive.tar 到当前目录,显示过程 (-v)。
      • tar -xzvf archive.tar.gz: 解压并解包 gzip 压缩的归档文件。
      • tar -xjvf archive.tar.bz2: 解压并解包 bzip2 压缩的归档文件。
      • tar -xJvf archive.tar.xz: 解压并解包 xz 压缩的归档文件。
      • tar -xvf archive.tar -C /target/dir: 将文件解包到指定目录 (-C)。
  2. gzip / gunzip: 使用 gzip 算法压缩/解压文件 (通常生成 .gz 后缀)。
    • gzip filename: 压缩文件,生成 filename.gz (删除原文件)。
    • gunzip filename.gz: 解压文件,生成 filename (删除 .gz 文件)。
    • gzip -d filename.gz: 等同于 gunzip
  3. bzip2 / bunzip2: 使用 bzip2 算法压缩/解压文件 (压缩率通常比 gzip 高,但慢些,生成 .bz2 后缀)。
    • bzip2 filename: 压缩文件,生成 filename.bz2
    • bunzip2 filename.bz2: 解压文件。
  4. xz / unxz: 使用 xz 算法压缩/解压文件 (通常提供最高的压缩率,但也最慢,生成 .xz 后缀)。
    • xz filename: 压缩文件,生成 filename.xz
    • unxz filename.xz: 解压文件。
  5. zip / unzip: 创建和解压 ZIP 格式的压缩文件 (兼容 Windows)。
    • zip archive.zip file1 file2 dir/: 创建 archive.zip,包含指定文件和目录。
    • unzip archive.zip: 解压 archive.zip 到当前目录。
    • unzip archive.zip -d /target/dir: 解压到指定目录。

八、用户与权限管理 (User & Privilege Management)

  1. sudo (SuperUser DO): 以超级用户 (root) 或其他用户的权限执行命令 (需要配置 /etc/sudoers)。
    • sudo command: 以 root 权限执行 command (会提示输入当前用户的密码)。
    • sudo -u username command: 以用户 username 的权限执行 command
  2. su (Switch User): 切换用户身份 (默认切换到 root,需要输入目标用户 的密码)。
    • su: 切换到 root 用户 (输入 root 密码)。
    • su username: 切换到用户 username (输入该用户的密码)。
    • su - username: 切换到用户 username 并加载其环境变量 (就像登录一样)。
  3. passwd: 修改用户密码。
    • passwd: 修改当前用户的密码。
    • sudo passwd username: root 用户修改用户 username 的密码。
  4. useradd / adduser: 添加新用户 (adduser 通常是 useradd 的友好交互式前端)。
    • sudo useradd newuser: 创建用户 newuser (基本命令)。
    • sudo adduser newuser: 交互式创建用户 (推荐,会创建家目录、设置密码等)。
  5. userdel: 删除用户。
    • sudo userdel username: 删除用户 username (保留其家目录)。
    • sudo userdel -r username: 删除用户 username 并同时删除其家目录和邮件池。
  6. usermod: 修改用户账户属性 (如用户名、家目录、登录 shell、所属组等)。
    • sudo usermod -s /bin/bash username: 将用户 username 的登录 shell 改为 /bin/bash
    • sudo usermod -d /new/home username -m: 将用户 username 的家目录改为 /new/home 并将旧目录内容移动到新目录 (-m)。
  7. groupadd: 创建新用户组。
    • sudo groupadd groupname
  8. groupdel: 删除用户组。
    • sudo groupdel groupname
  9. groups: 显示用户所属的组。
    • groups: 显示当前用户所属组。
    • groups username: 显示用户 username 所属组。
  10. id: 显示用户身份信息 (用户 ID, 组 ID, 所属组)。
    • id: 当前用户信息。
    • id username: 用户 username 的信息。

九、软件包管理 (Package Management) - 根据发行版不同而不同

  1. 基于 Debian/Ubuntu (APT):
    • sudo apt update: 更新可用软件包列表。
    • sudo apt upgrade: 升级所有已安装的软件包到最新版本。
    • sudo apt install package_name: 安装软件包。
    • sudo apt remove package_name: 卸载软件包 (保留配置文件)。
    • sudo apt purge package_name: 卸载软件包并删除其配置文件。
    • sudo apt autoremove: 自动卸载不再需要的依赖包。
    • apt search keyword: 搜索软件包。
    • apt show package_name: 显示软件包详细信息。
  2. 基于 Red Hat/CentOS/Fedora (YUM/DNF):
    • sudo yum update / sudo dnf upgrade: 更新所有已安装的软件包 (DNF 是 YUM 的现代替代)。
    • sudo yum install package_name / sudo dnf install package_name: 安装软件包。
    • sudo yum remove package_name / sudo dnf remove package_name: 卸载软件包。
    • yum search keyword / dnf search keyword: 搜索软件包。
    • yum info package_name / dnf info package_name: 显示软件包详细信息。
    • sudo yum clean all / sudo dnf clean all: 清理缓存。

十、其他实用命令 (Miscellaneous Utilities)

  1. history: 显示命令历史记录。
    • history: 列出带编号的历史命令。
    • !n: 执行历史记录中编号为 n 的命令。
    • !!: 执行上一条命令。
    • !string: 执行最近一条以 string 开头的命令。
  2. alias / unalias: 创建/删除命令别名。
    • alias ll='ls -alF': 创建别名 ll 代表 ls -alF
    • unalias ll: 删除别名 ll
    • alias: 列出当前定义的所有别名。
  3. man (Manual): 查看命令或配置文件的手册页 (最重要的帮助工具)。
    • man command: 查看 command 的详细手册。
    • man 5 passwd: 查看 passwd 配置文件格式的手册 (第 5 节是文件格式)。
    • man 页面内:按 / 搜索,n/N 下一个/上一个匹配,q 退出。
  4. which: 显示命令的完整路径 (在 $PATH 中查找)。
    • which ls: 显示 ls 命令的路径 (如 /bin/ls)。
  5. whereis: 定位命令的二进制文件、源代码和手册页位置。
    • whereis ls
  6. ln (Link): 创建文件链接。
    • ln -s target linkname: 创建符号链接 (软链接) linkname 指向 target。类似于 Windows 的快捷方式。
    • ln target linkname: 创建硬链接 linkname (很少用,与 target 共享 inode)。

重要概念与技巧

  • 管道 |: 将一个命令的输出作为另一个命令的输入。command1 | command2
  • 重定向:
    • command > file: 将命令的标准输出覆盖 写入到 file
    • command >> file: 将命令的标准输出追加file
    • command < file: 将 file 的内容作为命令的标准输入。
    • command 2> error.log: 将命令的标准错误输出覆盖 写入到 error.log
    • command &> output.log: 将命令的标准输出和标准错误输出都覆盖 写入到 output.log
  • 通配符:
    • *: 匹配任意数量 (包括零个) 的任意字符。ls *.txt
    • ?: 匹配一个任意字符。ls file?.txt
    • [abc]: 匹配括号内的任意一个字符。ls file[123].txt
    • [a-z]: 匹配一个范围内的任意字符。ls file[a-z].txt
    • [^abc][!abc]: 匹配 在括号内的任意一个字符。ls file[^0-9].txt
  • Tab 补全: 在输入命令、路径、文件名时,按 Tab 键可以自动补全或列出选项,极大提高效率并减少错误。
  • Ctrl+C: 终止当前正在前台运行的命令。
  • Ctrl+D: 发送 EOF (End Of File) 信号,常用于退出终端或结束 cat 等命令的输入。
  • Ctrl+Z: (如前所述) 暂停 (挂起) 当前前台进程。
  • &: (如前所述) 将命令放入后台运行。

学习建议:

  1. 多用 man: 遇到不熟悉的命令或选项,第一时间 man command
  2. 理解参数: 不要死记硬背所有选项,理解常用参数 (-l, -h, -r, -v 等) 的含义更重要。
  3. 实践为主: 在安全的测试环境或虚拟机中多动手敲命令练习。
  4. 善用搜索: 遇到问题善用搜索引擎 (linux 如何..., linux command example)。
  5. 循序渐进: 先掌握最常用的基础命令 (文件操作、文本查看、权限、进程管理),再逐步学习更复杂的工具 (awk, sed, find, 网络工具等)。

这份总结覆盖了 Linux 命令行下最常用和核心的命令。熟练掌握这些命令,你将能高效地完成绝大多数日常系统管理和开发任务。