一、文件与目录操作 (File & Directory Operations)
ls(List): 列出目录内容。ls: 列出当前目录文件和目录 (简单列表)ls -l: 列出详细信息 (权限、所有者、大小、修改时间)ls -a: 列出所有文件,包括隐藏文件 (以.开头)ls -lh: 列出详细信息并以人类可读格式显示文件大小 (K, M, G)ls /path/to/dir: 列出指定目录内容
cd(Change Directory): 切换工作目录。cd /path/to/dir: 切换到绝对路径cd dirname: 切换到当前目录下的子目录dirnamecd ..: 切换到上一级目录cd ~或cd: 切换到用户家目录 (/home/username)cd -: 切换到上一个工作目录
pwd(Print Working Directory): 显示当前工作目录的绝对路径。mkdir(Make Directory): 创建新目录。mkdir dirname: 创建单个目录mkdir -p parent/child: 创建嵌套目录 (如果父目录不存在则一起创建)
rmdir(Remove Directory): 删除空 目录。rmdir dirname
rm(Remove): 删除文件或目录。rm filename: 删除文件rm -r dirname: 递归删除目录及其下所有内容 (非常危险!)rm -i filename: 交互式删除 (删除前询问确认)rm -f filename: 强制删除,不提示 (更危险!)
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: 交互式复制 (覆盖前询问)
mv(Move): 移动或重命名文件或目录。mv oldname newname: 重命名文件/目录 (在同一目录下)mv file /path/to/dest_dir/: 移动文件到目标目录mv dir /path/to/dest_dir/: 移动目录到目标目录
touch: 创建空文件或更新文件的时间戳 (访问和修改时间)。touch newfile: 创建一个新的空文件newfiletouch existingfile: 更新existingfile的时间戳为当前时间
cat(Concatenate): 连接文件内容并打印到标准输出 (屏幕)。常用于查看小文件内容。cat filename: 显示文件内容cat file1 file2 > combined: 合并file1和file2到combinedcat > newfile: 从键盘输入创建新文件 (按Ctrl+D结束)
less/more: 分页查看文件内容 (适合大文件)。less filename: 使用less查看 (推荐,功能更强:可上下滚动、搜索/pattern、退出按q)more filename: 使用more查看 (基本分页,按空格翻页,q退出)
head: 显示文件开头部分内容 (默认前 10 行)。head filenamehead -n 20 filename: 显示前 20 行
tail: 显示文件末尾部分内容 (默认后 10 行)。常用于实时查看日志 (-f)。tail filenametail -n 20 filename: 显示后 20 行tail -f logfile: 实时跟踪 并显示logfile新增的内容 (Ctrl+C 停止)
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 天内修改过的文件
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)
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/及其下所有内容的权限。
- 符号模式:
chown(Change Owner): 修改文件或目录的所有者和/或所属组。chown newowner filename: 改变文件所有者。chown newowner:newgroup filename: 同时改变文件所有者和所属组。chown :newgroup filename: 只改变文件所属组。chown -R user:group dir/: 递归 修改目录dir/及其下所有内容的所有者和组。
chgrp(Change Group): 修改文件或目录的所属组 (功能可被chown替代)。chgrp newgroup filenamechgrp -R newgroup dir/
三、文本处理 (Text Processing)
grep: (已在上文列出) 强大的文本搜索工具。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。
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)。
sort: 对文本行进行排序。sort filename: 按默认规则 (字符顺序) 排序。sort -n filename: 按数值大小排序。sort -r filename: 倒序排序。sort -k 2 filename: 按第二列排序。
uniq(Unique): 报告或忽略重复的行。通常需要先排序 (sort) 才能正确去重 。sort file | uniq: 排序后去重。sort file | uniq -c: 排序后去重并显示每行重复出现的次数。uniq -d file: 仅显示重复的行 (重复至少一次)。
wc(Word Count): 统计文件的行数、单词数、字节数。wc filename: 显示行数、单词数、字节数、文件名。wc -l filename: 仅显示行数 (Line count)。wc -w filename: 仅显示单词数 (Word count)。wc -c filename: 仅显示字节数 (Character/Byte count)。
cut: 从文件的每一行中剪切部分内容 (列、字符、字段)。cut -d':' -f1 /etc/passwd: 以冒号:为分隔符 (-d':'),提取/etc/passwd文件每一行的第一个字段 (-f1) (通常是用户名)。cut -c1-5 file: 提取文件每一行的第 1 到第 5 个字符。
tr(Translate): 替换或删除字符。tr 'a-z' 'A-Z' < file: 将文件file内容中的所有小写字母转换为大写字母。echo "hello" | tr -d 'l': 删除字符串 "hello" 中的所有'l',输出 "heo"。
diff(Difference): 比较两个文件的差异。diff file1 file2: 显示两个文件的差异。diff -u file1 file2: 以更易读的统一格式 (unified) 显示差异。
四、系统信息与监控 (System Information & Monitoring)
uname(Unix Name): 打印系统信息。uname -a: 打印所有信息 (内核名称、主机名、内核版本、硬件架构等)。uname -r: 仅打印内核版本 (Release)。
hostname: 显示或设置系统的主机名。hostname: 显示当前主机名。
top/htop: 动态显示当前正在运行的进程及系统资源使用情况 (CPU, 内存, 任务等)。htop是top的增强版 (更直观,支持鼠标操作,彩色显示)。top: 启动top(按q退出)。htop: 启动htop(如果已安装)。
ps(Process Status): 报告当前进程的快照。ps aux: 查看系统上运行的所有进程的详细信息 (BSD 风格)。ps -ef: 查看系统上运行的所有进程的详细信息 (Unix/Linux 标准风格)。ps -u username: 查看特定用户username运行的进程。ps -p PID: 查看特定进程 ID (PID) 的详细信息。
free: 显示系统内存和交换空间 (Swap) 的使用情况。free: 显示总量、已用量、空闲量等。free -h: 以人类可读格式 (G, M) 显示。
df(Disk Free): 显示文件系统的磁盘空间使用情况。df -h: 以人类可读格式显示所有挂载文件系统的使用情况。df -h /path/to/dir: 显示指定目录所在文件系统的使用情况。
du(Disk Usage): 估算文件和目录占用的磁盘空间。du -sh dirname: 以人类可读格式 (-h) 显示目录dirname的总大小 (-s表示只显示总计)。du -h --max-depth=1 /path: 显示/path下一级子目录的大小 (人类可读)。
uptime: 显示系统运行了多长时间、当前登录用户数以及过去 1、5、15 分钟的系统平均负载。who/w: 显示当前登录系统的用户信息。w信息更详细 (包括他们在做什么)。
五、网络相关 (Networking)
ping: 测试与目标主机的网络连通性 (发送 ICMP Echo 请求包)。ping google.com: 持续 ping Google (按Ctrl+C停止)。ping -c 4 8.8.8.8: ping IP 地址8.8.8.84 次后停止。
ifconfig(旧) /ip(新): 查看和配置网络接口。ifconfig逐渐被更强大的ip命令取代。ifconfig: 显示所有网络接口信息 (IP 地址、MAC 地址、状态等)。ip addr show(或ip a): 显示 IP 地址信息 (功能更强大)。ip link show: 显示链路层 (MAC) 信息。ip route show: 显示路由表。
netstat(旧) /ss(新): 显示网络连接、路由表、接口统计等网络相关信息。ss通常更快更高效。netstat -tulpn: 查看所有监听 的 TCP (-t) / UDP (-u) 端口 (-l),显示进程名和 PID (-p),不解析主机名 (-n)。ss -tulpn: 功能同上,使用ss。netstat -r或route -n: 查看路由表。
traceroute/tracepath/mtr: 跟踪数据包从本机到目标主机所经过的路由路径 (跃点)。traceroute google.commtr google.com: 实时动态显示路由路径和延迟 (更强大)。
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) 进行查询。
nslookup: 查询 DNS 信息的交互式工具 (功能不如dig强大,但更简单)。nslookup google.com
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)。
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)
ps: (已在上文列出) 查看进程快照。top/htop: (已在上文列出) 动态监控进程和资源。kill: 向进程发送信号以终止或控制进程。kill PID: 向进程 ID 为PID的进程发送默认的TERM(终止) 信号 (请求它正常退出)。kill -9 PID: 发送SIGKILL信号 (强制立即终止进程,无法被捕获或忽略)。 慎用!可能导致数据丢失。kill -l: 列出所有可发送的信号名称和编号。
killall: 根据进程名 发送信号。killall process_name: 向所有名为process_name的进程发送TERM信号。killall -9 process_name: 强制终止所有名为process_name的进程。
pkill: 根据模式 匹配进程名或其他属性发送信号。pkill -f "pattern": 向命令行中包含"pattern"的进程发送TERM信号。pkill -u username: 终止属于用户username的所有进程。
bg/fg/jobs: 控制作业 (在后台运行的进程或命令组)。command &: 在后台启动命令 (命令后加&)。jobs: 列出当前 shell 中的后台作业。bg %n: 将暂停的后台作业n转为继续在后台运行。fg %n: 将后台作业n转到前台运行。Ctrl+Z: 暂停 (挂起) 当前正在前台运行的进程 (将其放入后台并暂停)。
七、压缩与归档 (Compression & Archiving)
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)。
- 打包/压缩:
gzip/gunzip: 使用 gzip 算法压缩/解压文件 (通常生成.gz后缀)。gzip filename: 压缩文件,生成filename.gz(删除原文件)。gunzip filename.gz: 解压文件,生成filename(删除.gz文件)。gzip -d filename.gz: 等同于gunzip。
bzip2/bunzip2: 使用 bzip2 算法压缩/解压文件 (压缩率通常比 gzip 高,但慢些,生成.bz2后缀)。bzip2 filename: 压缩文件,生成filename.bz2。bunzip2 filename.bz2: 解压文件。
xz/unxz: 使用 xz 算法压缩/解压文件 (通常提供最高的压缩率,但也最慢,生成.xz后缀)。xz filename: 压缩文件,生成filename.xz。unxz filename.xz: 解压文件。
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)
sudo(SuperUser DO): 以超级用户 (root) 或其他用户的权限执行命令 (需要配置/etc/sudoers)。sudo command: 以 root 权限执行command(会提示输入当前用户的密码)。sudo -u username command: 以用户username的权限执行command。
su(Switch User): 切换用户身份 (默认切换到 root,需要输入目标用户 的密码)。su: 切换到 root 用户 (输入 root 密码)。su username: 切换到用户username(输入该用户的密码)。su - username: 切换到用户username并加载其环境变量 (就像登录一样)。
passwd: 修改用户密码。passwd: 修改当前用户的密码。sudo passwd username: root 用户修改用户username的密码。
useradd/adduser: 添加新用户 (adduser通常是useradd的友好交互式前端)。sudo useradd newuser: 创建用户newuser(基本命令)。sudo adduser newuser: 交互式创建用户 (推荐,会创建家目录、设置密码等)。
userdel: 删除用户。sudo userdel username: 删除用户username(保留其家目录)。sudo userdel -r username: 删除用户username并同时删除其家目录和邮件池。
usermod: 修改用户账户属性 (如用户名、家目录、登录 shell、所属组等)。sudo usermod -s /bin/bash username: 将用户username的登录 shell 改为/bin/bash。sudo usermod -d /new/home username -m: 将用户username的家目录改为/new/home并将旧目录内容移动到新目录 (-m)。
groupadd: 创建新用户组。sudo groupadd groupname
groupdel: 删除用户组。sudo groupdel groupname
groups: 显示用户所属的组。groups: 显示当前用户所属组。groups username: 显示用户username所属组。
id: 显示用户身份信息 (用户 ID, 组 ID, 所属组)。id: 当前用户信息。id username: 用户username的信息。
九、软件包管理 (Package Management) - 根据发行版不同而不同
- 基于 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: 显示软件包详细信息。
- 基于 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)
history: 显示命令历史记录。history: 列出带编号的历史命令。!n: 执行历史记录中编号为n的命令。!!: 执行上一条命令。!string: 执行最近一条以string开头的命令。
alias/unalias: 创建/删除命令别名。alias ll='ls -alF': 创建别名ll代表ls -alF。unalias ll: 删除别名ll。alias: 列出当前定义的所有别名。
man(Manual): 查看命令或配置文件的手册页 (最重要的帮助工具)。man command: 查看command的详细手册。man 5 passwd: 查看passwd配置文件格式的手册 (第 5 节是文件格式)。- 在
man页面内:按/搜索,n/N下一个/上一个匹配,q退出。
which: 显示命令的完整路径 (在$PATH中查找)。which ls: 显示ls命令的路径 (如/bin/ls)。
whereis: 定位命令的二进制文件、源代码和手册页位置。whereis ls
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: (如前所述) 暂停 (挂起) 当前前台进程。&: (如前所述) 将命令放入后台运行。
学习建议:
- 多用
man: 遇到不熟悉的命令或选项,第一时间man command。 - 理解参数: 不要死记硬背所有选项,理解常用参数 (
-l,-h,-r,-v等) 的含义更重要。 - 实践为主: 在安全的测试环境或虚拟机中多动手敲命令练习。
- 善用搜索: 遇到问题善用搜索引擎 (
linux 如何...,linux command example)。 - 循序渐进: 先掌握最常用的基础命令 (文件操作、文本查看、权限、进程管理),再逐步学习更复杂的工具 (
awk,sed,find, 网络工具等)。
这份总结覆盖了 Linux 命令行下最常用和核心的命令。熟练掌握这些命令,你将能高效地完成绝大多数日常系统管理和开发任务。