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_folder
mkdir -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/
-> 移动文件到/tmp
mv 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
的所有者改为user1
chown :developers project/
-> 将project/
目录的所属组改为developers
chown -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.zip
unzip 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
等)。