一、文件与目录操作 (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
: 切换到当前目录下的子目录dirname
cd ..
: 切换到上一级目录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
: 创建一个新的空文件newfile
touch existingfile
: 更新existingfile
的时间戳为当前时间
cat
(Concatenate): 连接文件内容并打印到标准输出 (屏幕)。常用于查看小文件内容。cat filename
: 显示文件内容cat file1 file2 > combined
: 合并file1
和file2
到combined
cat > newfile
: 从键盘输入创建新文件 (按Ctrl+D
结束)
less
/more
: 分页查看文件内容 (适合大文件)。less filename
: 使用less
查看 (推荐,功能更强:可上下滚动、搜索/pattern
、退出按q
)more filename
: 使用more
查看 (基本分页,按空格翻页,q
退出)
head
: 显示文件开头部分内容 (默认前 10 行)。head filename
head -n 20 filename
: 显示前 20 行
tail
: 显示文件末尾部分内容 (默认后 10 行)。常用于实时查看日志 (-f
)。tail filename
tail -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 filename
chgrp -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.8
4 次后停止。
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.com
mtr 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 命令行下最常用和核心的命令。熟练掌握这些命令,你将能高效地完成绝大多数日常系统管理和开发任务。