Linux 命令是操作系统的核心,掌握常用命令能极大提升效率。下面分类介绍一些最常用和关键的 Linux 命令,并附上简单示例:
一、目录与文件导航
-
pwd(Print Working Directory)- 功能: 显示你当前所在的目录(路径)。
- 示例:
pwd-> 输出/home/username
-
ls(List)- 功能: 列出当前目录下的文件和子目录。
- 常用选项:
-l: 长格式显示(详细信息:权限、所有者、大小、修改时间)。-a: 显示所有文件,包括隐藏文件(以.开头的文件)。-h: 与-l一起使用,以人类可读的格式显示文件大小(如 K, M, G)。
- 示例:
ls-> 列出当前目录内容ls -l /etc-> 长格式列出/etc目录内容ls -la ~-> 列出家目录下所有文件(包括隐藏文件)的详细信息
-
cd(Change Directory)- 功能: 切换当前工作目录。
- 特殊符号:
cd或cd ~: 切换到当前用户的家目录(/home/username)。cd ..: 切换到上一级目录。cd -: 切换到上一次所在的目录。cd /path/to/directory: 切换到绝对路径指定的目录。cd relative/path: 切换到相对于当前目录的路径。
- 示例:
cd Documents-> 进入当前目录下的Documents子目录cd /usr/bin-> 进入/usr/bin目录cd ..-> 返回上级目录cd-> 回家目录
二、文件与目录操作
-
mkdir(Make Directory)- 功能: 创建新目录。
- 常用选项:
-p: 创建多级目录(父目录不存在时一并创建)。 - 示例:
mkdir new_folder-> 在当前目录创建new_foldermkdir -p project/docs/images-> 创建嵌套目录结构
-
touch- 功能:
- 创建一个新的空文件(如果文件不存在)。
- 更新一个已存在文件的访问和修改时间戳(不改内容)。
- 示例:
touch file.txt-> 创建file.txt或更新其时间戳
- 功能:
-
cp(Copy)- 功能: 复制文件或目录。
- 常用选项:
-r或-R: 递归复制目录及其内容(复制目录时必须用)。-i: 覆盖前提示确认。-v: 显示复制过程(verbose)。
- 示例:
cp file.txt file_backup.txt-> 复制文件cp -r old_dir new_dir-> 递归复制整个目录cp -iv *.txt backup/-> 交互式、详细地将所有.txt文件复制到backup/目录
-
mv(Move)- 功能:
- 移动文件或目录到新位置。
- 重命名文件或目录(在同一目录下移动)。
- 常用选项:
-i: 覆盖前提示确认;-v: 显示移动过程。 - 示例:
mv file.txt /tmp/-> 移动文件到/tmpmv oldname.txt newname.txt-> 重命名文件mv -i dir1/ dir2/-> 将dir1移动到dir2内(如果dir2存在)或重命名dir1为dir2(如果dir2不存在),覆盖前询问
- 功能:
-
rm(Remove)- 功能: 删除文件或目录。⚠️ 非常危险!删除后通常很难恢复!
- 常用选项:
-r或-R: 递归删除目录及其内容(删除目录时必须用)。-f: 强制删除,不提示确认(Force)。慎用!-i: 删除前提示确认(Interactive)。
- 示例: 极度谨慎!
rm unwanted_file.log-> 删除文件rm -r old_project/-> 删除目录及其所有内容(系统会提示确认目录删除)rm -rf temp_data/-> 强制递归删除目录,没有任何提示!极其危险!rm -i *.tmp-> 交互式删除所有.tmp文件(每个文件删除前询问)
-
cat(ConCATenate)- 功能:
- 在终端显示整个文件内容(适合小文件)。
- 合并多个文件内容并输出。
- 创建小文件(
cat > file.txt,输入内容,按Ctrl+D结束)。
- 示例:
cat config.conf-> 显示config.conf的内容cat part1.txt part2.txt > combined.txt-> 合并part1.txt和part2.txt内容到combined.txt
- 功能:
-
less/more- 功能: 分页查看文件内容(比
cat更适合大文件)。less功能更强大(支持上下滚动、搜索等),是more的增强版,推荐优先使用less。 - 操作(在
less中):- 空格键 /
Page Down: 向下翻一页 b/Page Up: 向上翻一页/keyword: 向下搜索 "keyword"?keyword: 向上搜索 "keyword"n: 跳转到下一个匹配项N: 跳转到上一个匹配项q: 退出
- 空格键 /
- 示例:
less large_log_file.log
- 功能: 分页查看文件内容(比
-
head- 功能: 显示文件的开头若干行(默认10行)。
- 常用选项:
-n: 指定显示的行数。 - 示例:
head -n 20 logfile.txt-> 显示logfile.txt的前 20 行
-
tail- 功能: 显示文件的末尾若干行(默认10行)。监视日志文件更新特别有用!
- 常用选项:
-n: 指定显示的行数。-f/--follow: 实时跟踪文件末尾的新增内容(常用于查看持续写入的日志,按Ctrl+C停止)。
- 示例:
tail error.log-> 显示error.log最后 10 行tail -n 50 -f /var/log/syslog-> 显示系统日志最后 50 行,并持续跟踪新内容
-
find- 功能: 在目录树中递归搜索文件和目录,功能极其强大。
- 基本语法:
find [起始目录] [搜索条件] [动作] - 常用搜索条件:
-name "pattern": 按文件名匹配(支持通配符*,?,需用引号括起)。-type: 按类型搜索 (f文件,d目录)。-mtime: 按修改时间搜索(天数,+7表示7天前,-7表示7天内)。-size: 按文件大小搜索(如+10M大于10MB,-1G小于1GB)。
- 常用动作:
-print(默认,打印路径),-exec command {} \;(对找到的文件执行命令)。 - 示例:
find . -name "*.jpg"-> 在当前目录及子目录查找所有.jpg文件find /var/log -type f -mtime -1-> 在/var/log下查找最近1天内修改过的普通文件find ~ -size +100M -exec ls -lh {} \;-> 在家目录查找大于100MB的文件并显示详细信息
-
grep(Global Regular Expression Print)- 功能: 强大的文本搜索工具,在文件或输入流中查找匹配指定模式(字符串或正则表达式)的行。
- 常用选项:
-i: 忽略大小写。-r或-R: 递归搜索目录中的文件。-n: 显示匹配行所在的行号。-v: 反向选择,显示不包含匹配模式的行。-l: 只打印包含匹配项的文件名。-w: 匹配整个单词。
- 示例:
grep "error" system.log-> 在system.log中查找包含 "error" 的行grep -i -r "warning" /var/log/-> 在/var/log/下递归搜索忽略大小写的 "warning"ps aux | grep "firefox"-> 结合管道,在进程列表中查找 "firefox" 进程
三、系统信息与进程管理
-
ps(Process Status)- 功能: 报告当前进程的快照信息。
- 常用选项组合:
aux(BSD 风格) 或-ef(Unix 风格),显示所有用户的详细进程信息。 - 示例:
ps aux-> 列出所有运行中的进程详细信息(USER, PID, %CPU, %MEM, COMMAND 等)
-
top/htop(enhancedtop)- 功能: 动态、实时显示系统中进程的资源占用情况(CPU、内存等),类似任务管理器。
htop是top的现代化、交互性更强的替代品(通常需要安装)。 - 操作: 运行后,按
q退出,按k终止进程(需输入PID),按F/?查看帮助。htop界面更友好,支持鼠标操作。
- 功能: 动态、实时显示系统中进程的资源占用情况(CPU、内存等),类似任务管理器。
-
kill- 功能: 向进程发送信号以终止或控制进程。最常用的是发送终止信号(
SIGTERM, 信号 15)或强制终止信号(SIGKILL, 信号 9)。 - 语法:
kill [选项] - 常用选项:
-9或-SIGKILL: 发送SIGKILL信号强制立即终止进程(进程无法捕获或忽略,应作为最后手段)。 - 示例:
kill 1234-> 向 PID 为 1234 的进程发送SIGTERM信号,请求它正常终止。kill -9 5678-> 强制杀死 PID 为 5678 的进程。
- 功能: 向进程发送信号以终止或控制进程。最常用的是发送终止信号(
-
free- 功能: 显示系统内存(RAM)和交换空间(Swap)的使用情况。
- 常用选项:
-h: 以人类可读格式显示(G, M)。 - 示例:
free -h
-
df(Disk Free)- 功能: 报告文件系统的磁盘空间使用情况(挂载点、总大小、已用、可用、使用百分比)。
- 常用选项:
-h: 以人类可读格式显示。 - 示例:
df -h-> 查看所有挂载点的磁盘空间
-
du(Disk Usage)- 功能: 估算文件或目录占用的磁盘空间。
- 常用选项:
-h: 以人类可读格式显示。-s或--summarize: 只显示总计大小。--max-depth=: 指定深入目录的层级。
- 示例:
du -sh /home/username-> 显示用户家目录的总大小du -h --max-depth=1 /var-> 显示/var下第一级子目录的大小
-
uname(UNIX name)- 功能: 打印系统信息(内核名称、版本、硬件架构等)。
- 常用选项:
-a或--all: 显示所有信息。 - 示例:
uname -a
四、网络管理
-
ping- 功能: 测试与另一台网络主机(通过 IP 地址或域名)的网络连接(可达性和延迟)。发送 ICMP Echo 请求包并等待回复。
- 常用选项:
-c: 指定发送多少次包后停止(默认会一直发送,按Ctrl+C停止)。 - 示例:
ping -c 4 google.com-> 向 google.com 发送 4 个 ping 包并显示结果
-
ifconfig(旧) /ip(新)- 功能: 查看和配置网络接口(网卡)信息(IP 地址、MAC 地址、状态等)。
- 说明:
ifconfig属于过时的net-tools包,逐渐被更强大的ip命令(来自iproute2包)取代。 - 常用
ip子命令:ip addr show或ip a: 显示所有网络接口的地址信息。ip link show: 显示链路层(Layer 2)信息。ip route show: 显示路由表。
- 示例:
ip a-> 显示所有网络接口的详细信息
-
netstat(旧) /ss(新)- 功能: 显示网络连接、路由表、接口统计等信息。
- 说明:
netstat也属于net-tools,ss(socket statistics) 是其现代替代品,速度更快。 - 常用选项 (ss):
-t: 显示 TCP 连接。-u: 显示 UDP 连接。-l: 显示监听(LISTENING)状态的套接字。-n: 以数字形式显示地址和端口(不解析主机名和服务名)。-p: 显示使用套接字的进程信息(需要 sudo)。
- 示例:
ss -tunlp-> 查看所有正在监听的 TCP/UDP 端口及其对应的进程(需 sudo)netstat -tulnp(旧方式)
-
wget- 功能: 通过 HTTP、HTTPS、FTP 协议从网络下载文件。支持递归下载(镜像网站)。
- 常用选项:
-O: 指定下载后的文件名;-c: 断点续传。 - 示例:
wget https://example.com/largefile.iso-> 下载文件
-
curl(Client URL)- 功能: 强大的数据传输工具,支持多种协议(HTTP, HTTPS, FTP, SCP, SFTP 等)。常用于与 Web API 交互、测试端点、下载/上传文件、获取网页内容等,比
wget更侧重协议交互。 - 常用选项:
-o: 将输出保存到文件;-O: 使用远程文件名保存;-I: 只获取响应头信息;-L: 跟随重定向。 - 示例:
curl -O https://example.com/file.txt-> 下载文件并保持原名curl -I https://example.com-> 获取网站响应头curl https://api.example.com/data-> 获取 API 返回的 JSON/XML 数据(常在终端显示)
- 功能: 强大的数据传输工具,支持多种协议(HTTP, HTTPS, FTP, SCP, SFTP 等)。常用于与 Web API 交互、测试端点、下载/上传文件、获取网页内容等,比
五、权限管理
-
chmod(Change Mode)- 功能: 更改文件或目录的访问权限(读 r=4, 写 w=2, 执行 x=1)。
- 两种主要模式:
- 符号模式: 更直观
(u/g/o/a) (+/-/=) (r/w/x)u: 所有者 (user)g: 所属组 (group)o: 其他用户 (others)a: 所有用户 (all)+: 添加权限-: 移除权限=: 设置精确权限- 示例:
chmod u+x script.sh-> 给所有者添加执行权限chmod go-w file.txt-> 移除组和其他用户的写权限chmod a=r file.txt-> 设置所有用户只有读权限
- 八进制(数字)模式: 更简洁
(所有者权限)(组权限)(其他用户权限)(每个权限是 rwx 对应的数字之和)- 示例:
chmod 755 script.sh-> 所有者: rwx (7), 组: r-x (5), 其他用户: r-x (5) (常用可执行文件/脚本)chmod 644 config.conf-> 所有者: rw- (6), 组: r-- (4), 其他用户: r-- (4) (常用普通文件)
- 示例:
- 符号模式: 更直观
-
chown(Change Owner)- 功能: 更改文件或目录的所有者和/或所属组。
- 语法:
chown [新所有者][:新所属组] - 常用选项:
-R: 递归更改目录及其内容。 - 示例:
chown user1 file.txt-> 将file.txt的所有者改为user1chown :developers project/-> 将project/目录的所属组改为developerschown -R user2:www-data /var/www/-> 递归更改/var/www/下所有文件的所有者为user2,所属组为www-data
-
sudo(SuperUser DO)- 功能: 以超级用户(root)或其他用户的权限执行命令(需要当前用户在
sudoers配置中被授权)。用于执行需要管理员权限的操作。 - 示例:
sudo apt update-> 以 root 权限更新软件包列表 - 重要: 谨慎使用
sudo,尤其是rm等危险命令。
- 功能: 以超级用户(root)或其他用户的权限执行命令(需要当前用户在
六、压缩与解压
-
tar(Tape ARchiver)- 功能: 将多个文件打包成一个归档文件(.tar),并可结合压缩程序(如 gzip, bzip2, xz)进行压缩。
- 常用选项:
-c: 创建新的归档文件 (Create)。-x: 解压归档文件 (eXtract)。-f: 指定归档文件名 (File)。-v: 显示处理过程 (Verbose)。-z: 使用 gzip 压缩/解压 (.tar.gz或.tgz)。-j: 使用 bzip2 压缩/解压 (.tar.bz2或.tbz2)。-J: 使用 xz 压缩/解压 (.tar.xz或.txz)。
- 示例:
- 打包并压缩:
tar -czvf archive.tar.gz dir1/ file1.txt-> 创建archive.tar.gz,包含dir1/和file1.txt(gzip压缩) - 解压:
tar -xzvf archive.tar.gz-> 解压archive.tar.gz(自动识别压缩格式解压) 到当前目录 - 仅打包:
tar -cvf backup.tar important_files/-> 创建未压缩的backup.tar
- 打包并压缩:
-
gzip/gunzip- 功能:
gzip压缩文件(生成.gz文件),gunzip解压.gz文件。通常用于压缩单个文件(tar负责打包多个文件再用gzip压缩)。 - 示例:
gzip large.log-> 压缩large.log为large.log.gz(原文件删除)gunzip large.log.gz-> 解压large.log.gz为large.log
- 功能:
-
zip/unzip- 功能: 创建和解压
.zip压缩包(跨平台常用)。 - 示例:
zip -r project.zip project/-> 递归压缩project/目录为project.zipunzip project.zip-> 解压project.zip到当前目录
- 功能: 创建和解压
七、帮助与学习
-
man(Manual)- 功能: 查看命令、函数、配置文件等的详细帮助手册(manual pages)。最权威的参考!
- 语法:
man [章节号] - 操作: 按
空格键翻页,/keyword搜索,n/N下一个/上一个匹配项,q退出。 - 示例:
man ls-> 查看ls命令的详细手册
-
--help或-h- 功能: 大多数命令都支持此选项,显示该命令的快速使用帮助和选项摘要(通常比
man更简洁)。 - 示例:
ls --help
- 功能: 大多数命令都支持此选项,显示该命令的快速使用帮助和选项摘要(通常比
八、强大的工具:管道 (|) 和重定向 (>, >>, <)
- 管道
|: 将一个命令的输出作为另一个命令的输入。- 示例:
ps aux | grep nginx-> 列出所有进程,然后筛选出包含 "nginx" 的行。cat access.log | grep "404" | wc -l-> 统计access.log中 404 错误的次数。
- 示例:
- 重定向
>: 将命令的输出覆盖 写入到文件(文件不存在则创建)。- 示例:
ls -l > filelist.txt-> 将ls -l的结果保存到filelist.txt(覆盖原内容)。
- 示例:
- 重定向
>>: 将命令的输出追加 到文件末尾。- 示例:
echo "New entry" >> log.txt-> 将 "New entry" 添加到log.txt文件末尾。
- 示例:
- 重定向
<: 将文件内容作为命令的输入。- 示例:
sort < unsorted_list.txt-> 对unsorted_list.txt文件内容进行排序并输出到屏幕。
- 示例:
总结与建议
- 勤用
man和--help: 遇到不熟悉的命令或选项,这是最好的老师。 - 谨慎使用
rm(尤其是-rf)、chmod、chown和sudo: 错误的操作可能导致数据丢失或系统问题。 - 理解管道和重定向: 这是组合命令、处理文本、自动化任务的核心魔法。
- 实践是王道: 在安全的测试环境(虚拟机、个人电脑)中多动手尝试。
- 学习 Shell 脚本: 当命令组合变得复杂时,写成脚本 (.sh) 可以大大提高效率和复用性。
这涵盖了 Linux 中最常用和基础的一批命令。掌握它们,你就能高效地在命令行下完成大部分日常管理和开发任务了!随着深入学习,你会发现更多强大的工具(如 awk, sed, rsync, scp, ssh, cron 等)。