在 Linux 的世界里,命令是与系统交互的基础。掌握常用命令不仅能让你高效地管理文件、进程和网络,还能为你进一步学习系统管理和自动化打下坚实的基础。本文将深入探讨一些最常用且功能强大的 Linux 命令。
文件与目录管理
文件和目录是 Linux 系统中最基本的操作对象。以下命令能帮助你轻松驾驭它们:
ls - 列出目录内容
ls 命令用于列出指定目录下的文件和子目录。它有许多常用选项,可以改变输出的显示方式:
- ls -l: 以长格式显示文件信息,包括文件权限、所有者、组、大小、修改日期等。
- ls -a: 显示所有文件,包括以 . 开头的隐藏文件。
- ls -h: 以人类可读的格式显示文件大小(例如,1K, 234M, 2G)。
- ls -R: 递归地列出子目录中的内容。
示例:
Bash
ls -lh # 列出当前目录下所有文件和子目录的详细信息,并以人类可读的格式显示文件大小
cd - 切换目录
cd 命令用于改变当前工作目录。
- cd ~ 或 cd: 切换到用户主目录。
- cd ..: 切换到上级目录。
- cd -: 切换到上一个工作目录。
示例:
Bash
cd /var/log # 切换到 /var/log 目录
pwd - 显示当前工作目录
pwd 命令会打印出当前所处的完整路径。当你迷失在文件系统中时,它能帮你迅速找到方向。
示例:
Bash
pwd # 显示当前工作目录的路径
mkdir - 创建目录
mkdir 命令用于创建新的目录。
- mkdir -p: 当父目录不存在时,自动创建所需的父目录。
示例:
Bash
mkdir my_new_directory # 创建名为 my_new_directory 的新目录
mkdir -p projects/2025/q3 # 创建 projects, 2025, q3 三级目录
rmdir - 删除空目录
rmdir 命令用于删除空的目录。如果目录不为空,则无法删除。
示例:
Bash
rmdir empty_folder # 删除名为 empty_folder 的空目录
cp - 复制文件和目录
cp 命令用于复制文件或目录。
- cp -r: 递归地复制目录及其内容。
示例:
Bash
cp file.txt new_file.txt # 复制 file.txt 并命名为 new_file.txt
cp -r documents backup_documents # 复制 documents 目录及其所有内容到 backup_documents
mv - 移动或重命名文件和目录
mv 命令用于移动文件或目录,也可以用于重命名。
示例:
Bash
mv old_name.txt new_name.txt # 将 old_name.txt 重命名为 new_name.txt
mv file.txt /tmp/ # 将 file.txt 移动到 /tmp/ 目录
rm - 删除文件和目录
rm 命令用于删除文件和目录。使用此命令时请务必小心,因为它删除的文件通常无法恢复。
- rm -f: 强制删除文件,不进行确认提示。
- rm -r: 递归地删除目录及其内容。
示例:
Bash
rm useless_file.txt # 删除 useless_file.txt
rm -rf dangerous_folder # 强制删除 dangerous_folder 及其所有内容 (极度危险,慎用!)
cat - 查看文件内容
cat 命令用于连接文件并打印到标准输出,最常用的是查看文本文件的内容。
示例:
Bash
cat /etc/os-release # 查看操作系统版本信息文件
less 和 more - 分页查看文件内容
当文件内容很长时,less 和 more 命令可以让你分页查看,避免内容一次性刷满屏幕。less 功能更强大,支持向前和向后翻页,而 more 只能向前翻页。
示例:
Bash
less /var/log/syslog # 分页查看系统日志
head 和 tail - 查看文件开头或结尾
- head: 默认显示文件的前10行。
- tail: 默认显示文件的后10行。
- tail -f: 实时跟踪文件末尾的更新,常用于查看日志文件。
示例:
Bash
head -n 5 access.log # 查看 access.log 文件的前5行
tail -f error.log # 实时查看 error.log 中新增的错误信息
权限管理
Linux 是一种多用户操作系统,文件和目录的权限管理至关重要。
chmod - 改变文件权限
chmod 命令用于改变文件或目录的权限。权限可以用数字(八进制)或符号表示。
数字表示法:
- 读 (r): 4
- 写 (w): 2
- 执行 (x): 1
组合权限:
- 所有者 (owner)
- 组 (group)
- 其他用户 (others)
示例:
Bash
chmod 755 script.sh # 将 script.sh 设置为所有者可读写执行,组用户和其他用户可读执行
# 7 = 4(r) + 2(w) + 1(x)
# 5 = 4(r) + 0(w) + 1(x)
chown - 改变文件所有者
chown 命令用于改变文件或目录的所有者。
示例:
Bash
chown user1 file.txt # 将 file.txt 的所有者改为 user1
chgrp - 改变文件组
chgrp 命令用于改变文件或目录的所属组。
示例:
Bash
chgrp developers project_folder # 将 project_folder 的所属组改为 developers
进程管理
进程是正在执行的程序实例。管理进程是系统管理员的日常任务之一。
ps - 查看进程状态
ps 命令用于查看当前系统中运行的进程。
- ps aux: 显示所有用户的进程,以及详细信息。
- ps ef: 以树状结构显示进程之间的父子关系。
示例:
Bash
ps aux | grep nginx # 查找所有与 nginx 相关的进程
top - 实时查看进程状态
top 命令提供了一个实时更新的进程列表,显示 CPU、内存使用情况以及每个进程的资源占用。
示例:
Bash
top # 启动 top 实时监控进程
kill - 终止进程
kill 命令用于向进程发送信号,最常用的是终止进程。
- kill <PID>: 默认发送 SIGTERM 信号(请求终止)。
- kill -9 <PID>: 发送 SIGKILL 信号(强制终止,不可被捕获或忽略)。
示例:
Bash
kill 12345 # 终止 PID 为 12345 的进程
kill -9 54321 # 强制终止 PID 为 54321 的进程
网络工具
ping - 测试网络连通性
ping 命令用于测试网络主机之间的连通性。它通过发送 ICMP echo 请求包并等待响应来工作。
示例:
Bash
ping xxx.com # 测试与 xxx.com 的连通性
ip - 显示/配置网络接口
ip 命令是 ifconfig 的现代化替代品,用于显示和配置网络接口。
- ip a: 显示所有网络接口的详细信息,包括 IP 地址。
- ip r: 显示路由表。
示例:
Bash
ip a # 显示所有网络接口的 IP 地址信息
ss - 显示套接字统计信息
ss 命令是 netstat 的更快、更强大的替代品,用于显示套接字统计信息。
- ss -tunlpx: 显示所有 TCP、UDP 监听端口,并显示关联的进程。
示例:
Bash
ss -tunlp # 列出所有监听的 TCP 和 UDP 端口
压缩与解压
tar - 文件打包与解压
tar 命令是一个功能强大的归档工具,常用于将多个文件打包成一个文件,并可选地进行压缩。
- tar -cvf archive.tar files: 创建一个归档文件。
- tar -xvf archive.tar: 解压一个归档文件。
- tar -czvf archive.tar.gz files: 创建并使用 gzip 压缩。
- tar -xzvf archive.tar.gz: 解压 gzip 压缩的归档文件。
- tar -cjvf archive.tar.bz2 files: 创建并使用 bzip2 压缩。
- tar -xjvf archive.tar.bz2: 解压 bzip2 压缩的归档文件。
示例:
Bash
tar -czvf my_backup.tar.gz /home/user/documents # 将 documents 目录打包并压缩为 my_backup.tar.gz
tar -xzvf my_backup.tar.gz # 解压 my_backup.tar.gz
gzip / gunzip - Gzip 压缩/解压
gzip 用于压缩文件,gunzip 用于解压由 gzip 压缩的文件。
示例:
Bash
gzip my_file.txt # 压缩 my_file.txt 为 my_file.txt.gz
gunzip my_file.txt.gz # 解压 my_file.txt.gz
zip / unzip - Zip 压缩/解压
zip 和 unzip 命令用于创建和提取 .zip 格式的压缩文件,这在与其他操作系统交换文件时很常见。
示例:
Bash
zip -r my_archive.zip my_folder # 将 my_folder 及其内容压缩为 my_archive.zip
unzip my_archive.zip # 解压 my_archive.zip
搜索与查找
grep - 文本搜索
grep 命令用于在文件中搜索指定的文本模式。它是 Linux 中最常用的文本处理工具之一。
- grep -i: 忽略大小写。
- grep -r: 递归搜索子目录。
- grep -n: 显示匹配行的行号。
- grep -v: 显示不匹配的行。
示例:
Bash
grep "error" /var/log/syslog # 在系统日志中查找包含 "error" 的行
grep -rn "function_name" . # 在当前目录及其子目录中递归查找 "function_name" 并显示行号
find - 文件查找
find 命令用于在文件系统中查找文件和目录。它非常强大,支持多种查找条件。
- find . -name "*.log": 在当前目录及其子目录中查找所有以 .log 结尾的文件。
- find /etc -type d -name "nginx": 在 /etc 目录下查找名为 "nginx" 的目录。
- find /home -user user1: 查找所有者为 user1 的文件。
示例:
Bash
find /var/www -type f -size +1G # 在 /var/www 目录下查找所有大于 1GB 的文件
系统信息
df - 查看磁盘空间使用情况
df 命令用于显示文件系统的磁盘空间使用情况。
- df -h: 以人类可读的格式显示。
示例:
Bash
df -h # 显示所有文件系统的磁盘使用情况
du - 查看文件或目录占用空间
du 命令用于显示文件或目录的磁盘空间占用量。
- du -sh: 汇总显示指定目录的总大小,以人类可读的格式。
示例:
Bash
du -sh /var/log # 显示 /var/log 目录的总大小
free - 查看内存使用情况
free 命令用于显示系统内存使用情况,包括物理内存和交换空间。
- free -h: 以人类可读的格式显示。
示例:
Bash
free -h # 显示内存使用情况
uname - 查看系统信息
uname 命令用于显示系统信息,如内核名称、版本、硬件架构等。
- uname -a: 显示所有系统信息。
示例:
Bash
uname -a # 显示所有系统信息
结论
以上只是 Linux 常用命令中的一小部分,但它们构成了与 Linux 系统高效交互的基石。掌握这些命令,并养成查阅 man 手册(例如 man ls)的习惯,将极大地提升在 Linux 环境下的工作效率。随着对这些基础命令的熟练运用,将能够更轻松地探索 Linux 的强大功能,并解决各种系统管理和开发任务。