Linux常用命令教程
Linux命令是运维工程师和开发者日常工作中不可或缺的工具。本文将系统介绍Linux中最常用的命令,帮助初学者快速掌握Linux操作技能,也为有经验的用户提供参考。
一、文件和目录操作命令
1. ls - 列出目录内容
语法: ls [选项] [目录]
常用选项:
-l:以长格式显示文件详情
-a:显示所有文件,包括隐藏文件(以.开头的文件)
-h:以人类可读的格式显示文件大小
-t:按修改时间排序
-r:反向排序
示例:
1
2
3
4
5
6
7
8
|
# 列出当前目录下的所有文件(包括隐藏文件)的详细信息
ls -la
# 列出/etc目录下的文件,按大小排序
ls -lhS /etc
# 列出当前目录下最近修改的10个文件
ls -lht | head -10
|
2. cd - 切换目录
语法: cd [目录路径]
特殊目录:
~:用户主目录
.:当前目录
..:上一级目录
-:上一次访问的目录
示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 切换到用户主目录
cd ~
# 切换到上一级目录
cd ..
# 切换到根目录
cd /
# 切换到上一次访问的目录
cd -
|
3. pwd - 显示当前工作目录
语法: pwd
示例:
4. mkdir - 创建目录
语法: mkdir [选项] 目录名
常用选项:
-p:递归创建目录,自动创建父目录
-m:设置目录权限
示例:
1
2
3
4
5
6
7
8
|
# 创建单个目录
mkdir project
# 递归创建多级目录
mkdir -p /home/user/projects/web/app
# 创建具有特定权限的目录
mkdir -m 755 public_html
|
5. rm - 删除文件或目录
语法: rm [选项] 文件或目录
常用选项:
-f:强制删除,不提示确认
-r:递归删除目录及其内容
-i:交互式删除,删除前提示确认
示例:
1
2
3
4
5
6
7
8
|
# 删除单个文件
rm file.txt
# 强制删除目录及其所有内容
rm -rf project/
# 交互式删除多个文件
rm -i *.log
|
6. cp - 复制文件或目录
语法: cp [选项] 源文件 目标文件
常用选项:
-r:递归复制目录
-p:保留文件属性(权限、时间戳等)
-v:显示复制进度
-f:覆盖已存在的目标文件而不提示
示例:
1
2
3
4
5
6
7
8
|
# 复制单个文件
cp file.txt backup.txt
# 复制目录及其内容
cp -r source_dir/ dest_dir/
# 保留属性复制文件
cp -p original.txt copy.txt
|
7. mv - 移动或重命名文件/目录
语法: mv [选项] 源文件 目标文件
常用选项:
示例:
1
2
3
4
5
6
7
8
|
# 重命名文件
mv oldname.txt newname.txt
# 移动文件到指定目录
mv report.txt documents/
# 重命名目录
mv project project_backup
|
8. touch - 创建空文件或更新文件时间戳
语法: touch [选项] 文件名
示例:
1
2
3
4
5
6
7
8
|
# 创建空文件
ouch newfile.txt
# 更新文件时间戳
ouch existing_file.txt
# 同时创建多个文件
touch file1.txt file2.txt file3.txt
|
9. find - 查找文件和目录
语法: find [路径] [表达式]
常用选项:
-name:按文件名查找
-type:按文件类型查找(f:普通文件, d:目录, l:符号链接)
-size:按文件大小查找
-mtime:按修改时间查找
-user:按所有者查找
示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 在当前目录查找名为test.txt的文件
find . -name "test.txt"
# 在/etc目录下查找最近7天内修改过的配置文件
find /etc -name "*.conf" -mtime -7
# 查找大于100MB的文件
find /home -type f -size +100M
# 查找属于特定用户的文件
find /home -user username
|
10. locate - 快速查找文件
语法: locate 文件名
说明: locate基于数据库快速查找,比find更快,但可能不是最新的结果。
示例:
1
2
3
4
5
|
# 更新locate数据库
sudo updatedb
# 查找包含keyword的文件
locate keyword
|
二、文本处理命令
1. cat - 查看文件内容
语法: cat [选项] 文件名
常用选项:
示例:
1
2
3
4
5
6
7
8
|
# 查看文件内容
cat file.txt
# 显示带行号的文件内容
cat -n file.txt
# 合并多个文件
cat file1.txt file2.txt > merged.txt
|
2. less/more - 分页查看文件内容
语法: less 文件名 或 more 文件名
less常用操作:
空格键:向下翻页
b:向上翻页
/关键词:向前搜索
?关键词:向后搜索
n:下一个匹配项
N:上一个匹配项
q:退出
示例:
1
2
3
4
5
6
|
# 分页查看大文件
less large_file.txt
# 分页查看日志文件并搜索错误
less /var/log/syslog
# 进入后输入 /error 搜索
|
3. head - 查看文件开头部分
语法: head [选项] 文件名
常用选项:
示例:
1
2
3
4
5
|
# 显示文件前10行(默认)
head file.txt
# 显示文件前20行
head -n 20 file.txt
|
4. tail - 查看文件末尾部分
语法: tail [选项] 文件名
常用选项:
-n:显示后n行
-f:实时监控文件变化(常用于查看日志)
示例:
1
2
3
4
5
6
7
8
|
# 显示文件最后10行(默认)
tail file.txt
# 显示文件最后50行
tail -n 50 file.txt
# 实时监控日志文件
tail -f /var/log/apache2/access.log
|
5. grep - 搜索文本内容
语法: grep [选项] 模式 文件
常用选项:
-i:忽略大小写
-r:递归搜索目录
-n:显示匹配行的行号
-v:反向搜索,显示不匹配的行
-E:使用扩展正则表达式
示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 在文件中搜索关键词
grep "error" log.txt
# 递归搜索目录中所有包含关键词的文件
grep -r "password" /etc/
# 忽略大小写搜索并显示行号
grep -in "warning" *.log
# 搜索不包含特定内容的行
grep -v "debug" log.txt
|
6. sed - 文本替换和处理
语法: sed [选项] '命令' 文件
常用选项:
常用命令:
s/旧文本/新文本/:替换文本
d:删除行
p:打印行
示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 替换文件中的文本(不修改原文件)
sed 's/old/new/g' file.txt
# 直接修改文件中的文本
sed -i 's/old/new/g' file.txt
# 删除文件中的空行
sed '/^$/d' file.txt
# 替换第5行的文本
sed '5s/old/new/' file.txt
|
7. awk - 文本分析和处理
语法: awk '模式 {动作}' 文件
常用变量:
$0:整行内容
$1, $2, ...:第1, 2, …个字段
NF:字段数量
NR:行号
示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 打印文件的第1和第3个字段
awk '{print $1, $3}' file.txt
# 打印包含特定条件的行
awk '$3 > 100 {print $0}' file.txt
# 统计文件行数
awk 'END {print NR}' file.txt
# 按字段分隔符处理文件
awk -F":" '{print $1}' /etc/passwd
|
三、系统信息查看命令
1. uname - 显示系统信息
语法: uname [选项]
常用选项:
-a:显示所有系统信息
-r:显示内核版本
-m:显示机器硬件架构
示例:
1
2
3
4
5
|
# 显示完整系统信息
uname -a
# 显示内核版本
uname -r
|
2. hostname - 显示或设置主机名
语法: hostname [选项] [主机名]
示例:
1
2
3
4
5
|
# 显示当前主机名
hostname
# 设置主机名(需要root权限)
sudo hostname newhostname
|
3. uptime - 显示系统运行时间
语法: uptime
示例:
1
|
# 显示系统运行时间、用户数和负载\auptime
|
4. free - 显示内存使用情况
语法: free [选项]
常用选项:
-h:以人类可读的格式显示
-m:以MB为单位显示
-g:以GB为单位显示
示例:
5. df - 显示磁盘空间使用情况
语法: df [选项]
常用选项:
-h:以人类可读的格式显示
-T:显示文件系统类型
示例:
1
2
3
4
5
|
# 查看所有磁盘分区的使用情况
df -h
# 查看特定目录所在分区的使用情况
df -h /home
|
6. du - 显示目录或文件大小
语法: du [选项] [目录或文件]
常用选项:
-h:以人类可读的格式显示
-s:显示总计大小
-c:显示总计大小并汇总
示例:
1
2
3
4
5
6
7
8
|
# 查看当前目录占用的空间
du -sh
# 查看目录下各个文件和子目录的大小
du -h --max-depth=1 /var/
# 查看大文件
du -ah /home | sort -rh | head -10
|
7. top - 实时监控系统进程
语法: top
常用操作:
P:按CPU使用率排序
M:按内存使用率排序
N:按PID排序
k:终止指定进程
q:退出
示例:
1
2
3
4
5
|
# 运行top监控系统
top
# 批处理模式运行top并限制更新次数
top -b -n 1
|
8. ps - 显示进程状态
语法: ps [选项]
常用选项:
示例:
1
2
3
4
5
6
7
8
|
# 显示所有进程
ps aux
# 查看特定进程
ps aux | grep apache2
# 显示进程树
ps -ef --forest
|
9. who - 显示当前登录的用户
语法: who [选项]
示例:
1
2
3
4
5
|
# 显示当前登录的用户
who
# 显示更详细的信息
who -a
|
10. w - 显示当前系统负载和登录用户
语法: w
示例:
四、用户和权限管理命令
1. useradd - 添加用户
语法: useradd [选项] 用户名
常用选项:
-m:创建用户主目录
-s:指定登录shell
-G:指定用户所属的附加组
示例:
1
2
3
4
5
|
# 创建带有主目录的用户
sudo useradd -m username
# 创建用户并指定shell
sudo useradd -m -s /bin/bash username
|
2. userdel - 删除用户
语法: userdel [选项] 用户名
常用选项:
示例:
1
2
3
4
5
|
# 删除用户
sudo userdel username
# 删除用户及其主目录
sudo userdel -r username
|
3. passwd - 设置用户密码
语法: passwd [选项] [用户名]
示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 修改当前用户密码
passwd
# 修改其他用户密码(需要root权限)
sudo passwd username
# 锁定用户账户
sudo passwd -l username
# 解锁用户账户
sudo passwd -u username
|
4. groupadd - 创建用户组
语法: groupadd [选项] 组名
示例:
1
2
|
# 创建新用户组
sudo groupadd groupname
|
5. groupdel - 删除用户组
语法: groupdel 组名
示例:
1
2
|
# 删除用户组
sudo groupdel groupname
|
6. chown - 更改文件所有者
语法: chown [选项] 所有者:组 文件
常用选项:
示例:
1
2
3
4
5
6
7
8
|
# 更改文件所有者
chown username file.txt
# 同时更改文件所有者和组
chown username:group file.txt
# 递归更改目录所有者
chown -R username /path/to/directory
|
7. chgrp - 更改文件所属组
语法: chgrp [选项] 组 文件
常用选项:
示例:
1
2
3
4
5
|
# 更改文件所属组
chgrp groupname file.txt
# 递归更改目录所属组
chgrp -R groupname /path/to/directory
|
8. chmod - 更改文件权限
语法: chmod [选项] 权限 文件
权限表示方法:
- 数字方式:r=4, w=2, x=1
755:所有者可读写执行,组用户和其他用户可读执行
644:所有者可读写,组用户和其他用户可读
- 符号方式:u(用户), g(组), o(其他), a(所有)
常用选项:
示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 使用数字方式设置权限
chmod 755 file.sh
# 使用符号方式设置权限
chmod u+x file.sh
# 递归设置目录权限
chmod -R 755 /path/to/directory
# 撤销其他用户的写入权限
chmod o-w file.txt
|
9. su - 切换用户
语法: su [选项] [用户名]
常用选项:
示例:
1
2
3
4
5
6
7
8
|
# 切换到root用户
su -
# 切换到普通用户
su username
# 以特定用户身份执行命令
su -c "command" username
|
10. sudo - 以其他用户身份执行命令
语法: sudo [选项] 命令
常用选项:
-i:以root身份登录
-u:以指定用户身份执行命令
示例:
1
2
3
4
5
6
7
8
|
# 以root权限执行命令
sudo apt update
# 以特定用户身份执行命令
sudo -u username command
# 以root身份登录
sudo -i
|
五、网络命令
1. ifconfig - 配置或显示网络接口信息
语法: ifconfig [接口] [选项]
示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 显示所有网络接口信息
ifconfig
# 启用网络接口
sudo ifconfig eth0 up
# 禁用网络接口
sudo ifconfig eth0 down
# 设置IP地址
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
|
2. ip - 网络配置工具
语法: ip [选项] 对象 命令
常用对象:
addr:IP地址管理
link:网络接口管理
route:路由表管理
示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 显示IP地址
ip addr show
# 启用网络接口
sudo ip link set eth0 up
# 添加路由
sudo ip route add 192.168.2.0/24 via 192.168.1.1
# 显示路由表
ip route show
|
3. ping - 测试网络连接
语法: ping [选项] 目标
常用选项:
示例:
1
2
3
4
5
|
# 测试与目标主机的连接
ping google.com
# 发送指定数量的数据包
ping -c 4 google.com
|
4. netstat - 显示网络状态
语法: netstat [选项]
常用选项:
-t:显示TCP连接
-u:显示UDP连接
-l:显示监听状态的套接字
-n:以数字形式显示地址和端口
-a:显示所有连接
-p:显示关联的进程ID和程序名称
示例:
1
2
3
4
5
|
# 显示所有监听端口
netstat -tuln
# 显示所有网络连接及其关联的进程
netstat -tunap
|
5. ss - 显示套接字状态
语法: ss [选项]
常用选项: 与netstat类似
示例:
1
2
3
4
5
|
# 显示所有TCP连接
ss -tuln
# 显示已建立的连接
ss -tunap
|
6. traceroute - 跟踪网络路由
语法: traceroute [选项] 目标
示例:
1
2
3
4
5
|
# 跟踪到目标主机的路由路径
traceroute google.com
# 使用ICMP协议跟踪
traceroute -I google.com
|
7. curl - 数据传输工具
语法: curl [选项] URL
常用选项:
-O:下载文件
-L:跟随重定向
-X:指定HTTP方法
-H:添加请求头
-d:发送POST数据
示例:
1
2
3
4
5
6
7
8
|
# 下载文件
curl -O https://example.com/file.zip
# 发送POST请求
curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com
# 查看HTTP响应头
curl -I https://example.com
|
8. wget - 下载文件
语法: wget [选项] URL
常用选项:
-O:指定输出文件名
-c:断点续传
-r:递归下载
-np:不跟随父目录
示例:
1
2
3
4
5
6
7
8
|
# 下载文件
wget https://example.com/file.zip
# 指定输出文件名
wget -O myfile.zip https://example.com/file.zip
# 断点续传
wget -c https://example.com/largefile.zip
|
9. ssh - 安全远程连接
语法: ssh [选项] [用户@]主机
常用选项:
示例:
1
2
3
4
5
6
7
8
|
# 连接到远程主机
ssh user@remote_host
# 指定端口连接
ssh -p 2222 user@remote_host
# 使用密钥文件连接
ssh -i ~/.ssh/id_rsa user@remote_host
|
10. scp - 安全复制文件
语法: scp [选项] 源 目标
常用选项:
-r:递归复制目录
-P:指定端口
-i:指定私钥文件
示例:
1
2
3
4
5
6
7
8
|
# 从本地复制文件到远程主机
scp file.txt user@remote_host:/path/to/destination/
# 从远程主机复制文件到本地
scp user@remote_host:/path/to/file.txt /local/path/
# 递归复制目录
scp -r local_dir/ user@remote_host:/path/to/destination/
|
六、系统管理命令
1. systemctl - 系统服务管理
语法: systemctl [选项] [命令] 服务名
常用命令:
start:启动服务
stop:停止服务
restart:重启服务
status:查看服务状态
enable:设置服务开机自启
disable:禁止服务开机自启
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 启动服务
sudo systemctl start apache2
# 停止服务
sudo systemctl stop apache2
# 重启服务
sudo systemctl restart apache2
# 查看服务状态
sudo systemctl status apache2
# 设置服务开机自启
sudo systemctl enable apache2
# 禁止服务开机自启
sudo systemctl disable apache2
|
2. journalctl - 查看系统日志
语法: journalctl [选项]
常用选项:
-u:查看指定服务的日志
-f:实时查看日志
-n:查看最近的日志条目
--since:查看指定时间以来的日志
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 查看系统日志
journalctl
# 查看指定服务的日志
journalctl -u apache2
# 实时查看日志
journalctl -f
# 查看今天的日志
journalctl --since "today"
# 查看最近100行日志
journalctl -n 100
|
3. cron - 定时任务管理
语法: crontab [选项]
常用选项:
-e:编辑定时任务
-l:列出定时任务
-r:删除定时任务
cron表达式格式: 分 时 日 月 周 命令
示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 编辑定时任务
crontab -e
# 列出当前用户的定时任务
crontab -l
# 删除所有定时任务
crontab -r
# 系统定时任务文件
cat /etc/crontab
|
常见cron表达式示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 每天凌晨2点执行备份脚本
0 2 * * * /home/user/scripts/backup.sh
# 每小时执行一次命令
0 * * * * /path/to/command
# 每周一早上8点执行
0 8 * * 1 /path/to/weekly_task.sh
# 每5分钟执行一次
*/5 * * * * /path/to/check.sh
|
4. df - 磁盘空间使用情况
语法: df [选项]
常用选项:
-h:以人类可读的格式显示
-T:显示文件系统类型
示例:
1
2
3
4
5
|
# 查看所有磁盘分区的使用情况
df -h
# 查看特定文件系统的使用情况
df -h /dev/sda1
|
5. fdisk - 磁盘分区管理
语法: fdisk [选项] 设备
示例:
1
2
3
4
5
|
# 查看磁盘分区表
sudo fdisk -l
# 编辑磁盘分区
sudo fdisk /dev/sda
|
6. mount - 挂载文件系统
语法: mount [选项] 设备 挂载点
常用选项:
示例:
1
2
3
4
5
6
7
8
|
# 挂载U盘
sudo mount /dev/sdb1 /mnt/usb
# 挂载ISO镜像
sudo mount -o loop image.iso /mnt/iso
# 查看已挂载的文件系统
mount
|
7. umount - 卸载文件系统
语法: umount [选项] 设备或挂载点
示例:
1
2
3
4
5
|
# 卸载设备
udo umount /dev/sdb1
# 强制卸载(如果设备忙)
sudo umount -f /mnt/usb
|
8. tar - 文件归档工具
语法: tar [选项] 文件
常用选项:
-c:创建归档文件
-x:提取归档文件
-v:显示详细信息
-f:指定归档文件名
-z:使用gzip压缩
-j:使用bzip2压缩
示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 创建tar.gz压缩文件
tar -czvf archive.tar.gz /path/to/directory
# 解压tar.gz文件
tar -xzvf archive.tar.gz
# 创建tar.bz2压缩文件
tar -cjvf archive.tar.bz2 /path/to/directory
# 解压tar.bz2文件
tar -xjvf archive.tar.bz2
|
9. gzip/gunzip - 文件压缩和解压
语法:
gzip [选项] 文件:压缩文件
gunzip [选项] 文件:解压文件
示例:
1
2
3
4
5
6
7
8
|
# 压缩文件
gzip file.txt
# 解压文件
gunzip file.txt.gz
# 压缩多个文件
gzip *.txt
|
10. findmnt - 查看挂载信息
语法: findmnt [选项]
示例:
1
2
3
4
5
|
# 查看所有挂载点
findmnt
# 查看特定设备的挂载信息
findmnt /dev/sda1
|
七、其他常用命令
1. history - 查看命令历史
语法: history [选项]
示例:
1
2
3
4
5
6
7
8
9
10
11
|
# 查看命令历史
history
# 执行历史记录中的第n条命令
!n
# 执行最近的以特定字符串开头的命令
!string
# 清除命令历史
history -c
|
2. alias - 设置命令别名
语法: alias 别名='命令'
示例:
1
2
3
4
5
6
7
8
|
# 设置命令别名
alias ll='ls -la'
# 查看所有别名
alias
# 取消别名
unalias ll
|
3. echo - 输出文本
语法: echo [选项] 文本
常用选项:
示例:
1
2
3
4
5
6
7
8
|
# 输出文本
echo "Hello World"
# 输出环境变量
echo $HOME
# 使用转义字符
echo -e "Line 1\nLine 2"
|
4. export - 设置环境变量
语法: export 变量名=值
示例:
1
2
3
4
5
6
|
# 设置临时环境变量
export PATH=$PATH:/new/path
# 将环境变量写入配置文件
echo 'export JAVA_HOME=/usr/lib/jvm/java-11' >> ~/.bashrc
source ~/.bashrc
|
5. bc - 计算器
语法: bc [选项]
示例:
1
2
3
4
5
6
7
8
|
# 启动计算器
bc
# 执行计算表达式
echo "10 + 5" | bc
# 使用小数运算
echo "scale=2; 10/3" | bc
|
6. date - 显示或设置系统日期和时间
语法: date [选项] [+格式]
示例:
1
2
3
4
5
6
7
8
|
# 显示当前日期和时间
date
# 以指定格式显示
date +"%Y-%m-%d %H:%M:%S"
# 设置系统时间(需要root权限)
sudo date -s "2024-10-22 12:00:00"
|
7. sort - 排序文本文件
语法: sort [选项] 文件
常用选项:
-n:按数字排序
-r:反向排序
-k:按指定列排序
-u:去除重复行
示例:
1
2
3
4
5
6
7
8
|
# 排序文件
sort file.txt
# 按数字排序
sort -n numbers.txt
# 按第二列排序
sort -k 2 data.txt
|
8. uniq - 去除重复行
语法: uniq [选项] 文件
常用选项:
示例:
1
2
3
4
5
6
7
8
|
# 去除文件中的重复行
sort file.txt | uniq
# 统计每行出现的次数
sort file.txt | uniq -c
# 只显示重复的行
sort file.txt | uniq -d
|
9. which - 查找命令位置
语法: which 命令
示例:
1
2
3
4
5
|
# 查找命令位置
which ls
# 查找多个命令位置
which python java gcc
|
10. locate - 快速查找文件
语法: locate 文件名
示例:
1
2
3
4
5
6
7
8
|
# 更新数据库
sudo updatedb
# 查找文件
locate filename.txt
# 查找特定类型的文件
locate "*.conf"
|
八、Linux命令行快捷键
1. 常用快捷键
Ctrl + A:移动到命令行开头
Ctrl + E:移动到命令行结尾
Ctrl + U:删除从光标到命令行开头的内容
Ctrl + K:删除从光标到命令行结尾的内容
Ctrl + L:清屏
Ctrl + C:中断当前命令
Ctrl + D:退出当前shell
Ctrl + Z:暂停当前命令(可使用fg恢复)
Tab:自动补全命令或文件名
上下箭头:浏览命令历史
Ctrl + R:搜索命令历史
2. 命令行编辑技巧
!!:重复上一条命令
!n:执行历史中的第n条命令
!string:执行最近的以string开头的命令
^old^new:将上一条命令中的old替换为new并执行
总结
本文介绍了Linux系统中最常用的命令,包括文件操作、文本处理、系统信息查看、用户管理、网络配置、系统管理等多个方面。掌握这些命令将大大提高您在Linux环境下的工作效率。
学习Linux命令的最佳方法是多加练习。建议读者尝试在实际环境中使用这些命令,逐步熟悉它们的用法和选项。随着经验的积累,您会发现Linux命令行是一个强大而高效的工具。
记住,几乎所有Linux命令都支持--help选项来查看用法说明,例如ls --help。此外,您还可以通过man 命令名查看命令的详细手册,例如man ls。