Linux 基础命令速成手册(附详细示例)

Linux 是一种广泛应用于服务器、云计算、嵌入式系统和开发环境中的操作系统,熟练掌握常用 Linux 命令是系统运维、测试开发和软件工程师的基本技能。

本文对 Linux 系统中常见且高频使用的操作指令 进行了系统整理,并按照功能模块进行分类,涵盖文件目录操作、权限管理、进程管理、网络操作等内容。

所有命令均配有典型示例 ,适合 Linux 初学者快速入门,也可作为日常工作中的命令速查手册。


以下是Linux系统中常见命令的详细示例列表,按功能分类:


一、文件和目录操作

基本目录操作

bash 复制代码
# 查看当前目录
pwd
# 切换到用户主目录
cd ~
# 切换到上一级目录
cd ..
# 切换到指定目录
cd /usr/local/bin
# 创建目录
mkdir new_folder
# 创建多级目录
mkdir -p /path/to/new/folder
# 列出当前目录内容
ls
# 列出详细信息
ls -l
# 列出所有文件(包括隐藏文件)
ls -la
# 以人类可读格式显示文件大小
ls -lh
# 按修改时间排序
ls -lt
# 递归列出子目录
ls -R

文件操作

bash 复制代码
# 创建空文件
touch filename.txt
# 复制文件
cp file1.txt file2.txt
# 复制目录
cp -r dir1 dir2
# 移动/重命名文件
mv oldname.txt newname.txt
# 移动文件到指定目录
mv file.txt /path/to/destination/
# 删除文件
rm file.txt
# 删除目录及其内容
rm -rf directory/
# 创建软链接
ln -s /path/to/original /path/to/link
# 创建硬链接
ln /path/to/original /path/to/link

文件查看和编辑

bash 复制代码
# 查看文件全部内容
cat filename.txt
# 查看文件前10行
head filename.txt
# 查看文件前5行
head -5 filename.txt
# 查看文件后10行
tail filename.txt
# 查看文件后5行
tail -5 filename.txt
# 实时查看日志文件
tail -f /var/log/syslog
# 分页查看文件
less filename.txt
# 在less中搜索:输入/然后输入搜索词
# 显示行号查看文件
cat -n filename.txt
# 查看文件类型
file filename.txt

二、权限和用户管理

文件权限

bash 复制代码
# 修改文件权限(数字方式)
chmod 755 filename
# 755表示:所有者rwx,所属组r-x,其他用户r-x
# 修改文件权限(符号方式)
chmod u+x filename    # 给所有者添加执行权限
chmod g+w filename    # 给所属组添加写权限
chmod o-r filename    # 移除其他用户的读权限
chmod a+x filename    # 给所有用户添加执行权限
# 修改文件所有者
chown user:group filename
chown user filename
chown :group filename
# 递归修改目录权限
chmod -R 755 directory/
chown -R user:group directory/
# 查看文件权限详情
ls -l filename
# 显示文件的数字权限
stat -c "%a %n" filename

用户和组管理

bash 复制代码
# 创建新用户
sudo useradd -m username
# 创建用户并指定shell
sudo useradd -m -s /bin/bash username
# 设置用户密码
sudo passwd username
# 删除用户
sudo userdel username
# 删除用户及其主目录
sudo userdel -r username
# 修改用户信息
sudo usermod -s /bin/bash username
sudo usermod -g groupname username
# 将用户添加到附加组
sudo usermod -aG sudo username
# 创建新组
sudo groupadd groupname
# 查看当前用户
whoami
# 查看用户所属组
groups
# 查看指定用户所属组
groups username
# 切换用户
su username
# 以目标用户登录环境
su - username
# 以root身份执行单个命令
sudocommand
# 切换到root用户
sudo su -

三、文件内容处理

文本搜索

bash 复制代码
# 在文件中搜索字符串
grep "search_text" filename.txt
# 搜索时忽略大小写
grep -i "search_text" filename.txt
# 递归搜索目录
grep -r "search_text" /path/to/search/
# 显示匹配行及行号
grep -n "search_text" filename.txt
# 反向匹配(显示不包含的行)
grep -v "search_text" filename.txt
# 使用正则表达式
grep -E "^[A-Z]" filename.txt
# 搜索多个文件
grep "text" file1.txt file2.txt
# 统计匹配行数
grep -c "text" filename.txt
# 显示匹配行周围的上下文
grep -C 3 "text" filename.txt  # 显示匹配行前后3行

文本处理

bash 复制代码
# 查找包含"error"的行,然后计数
grep "error" logfile.txt | wc -l
# 对文件内容排序
sort filename.txt
# 排序并去重
sort filename.txt | uniq
# 排序、去重并计数
sort filename.txt | uniq -c
# 显示重复行
uniq -d filename.txt
# 比较两个文件的差异
diff file1.txt file2.txt
# 比较目录差异
diff -r dir1 dir2
# 提取文件的第一列
cut -f1 -d" " filename.txt
# 提取文件的前10个字符
cut -c1-10 filename.txt
# 合并文件
paste file1.txt file2.txt
# 文件行数统计
wc -l filename.txt
# 单词数统计
wc -w filename.txt
# 字符数统计
wc -c filename.txt

Sed和Awk

bash 复制代码
# sed示例:替换文本
sed 's/old/new/g' filename.txt
# 替换并保存
sed -i 's/old/new/g' filename.txt
# 删除包含"delete"的行
sed '/delete/d' filename.txt
# 删除第3行
sed '3d' filename.txt
# awk示例:打印第一列
awk '{print $1}' filename.txt
# 打印第一和第三列
awk '{print $1, $3}' filename.txt
# 使用自定义分隔符
awk -F',''{print $1}' filename.txt
# 条件过滤
awk '$3 > 100' filename.txt
# 计算列的总和
awk '{sum += $1} END {print sum}' filename.txt
# 分组统计
awk '{count[$1]++} END {for (i in count) print i, count[i]}' filen

四、系统管理和监控

系统信息

bash 复制代码
# 查看系统信息
uname -a
# 查看内核版本
uname -r
# 查看系统架构
uname -m
# 查看主机名
hostname
# 修改主机名
sudo hostnamectl set-hostname newname
# 查看系统运行时间
uptime
# 查看系统启动时间
who -b
# 查看登录用户
who
# 查看详细登录信息
w
# 查看登录历史
last
# 查看当前时间
date
# 设置时间
sudodate -s "2023-12-25 10:30:00"
# 查看日历
cal
# 查看指定月份
cal 12 2023

进程管理

bash 复制代码
# 查看所有进程
ps aux
# 查看指定用户的进程
ps -u username
# 查看指定进程
ps -p PID
# 查看进程树
pstree
# 动态查看进程
top
# 按内存使用排序
top -o %MEM
# 按CPU使用排序
top -o %CPU
# 终止进程
kill PID
# 强制终止进程
kill -9 PID
# 按名称终止进程
pkill processname
# 查找进程
pgrep processname
# 查看进程打开的文件
lsof -p PID
# 后台运行命令
command &
# 查看后台作业
jobs
# 将后台作业调到前台
fg %1
# 将前台作业调到后台
Ctrl+Z
bg

资源监控

bash 复制代码
# 查看内存使用
free -h
# 查看磁盘使用
df -h
# 查看指定目录大小
du -sh /path/to/directory
# 查看目录详细大小
du -h /path/to/directory
# 查看目录深度为2的大小
du -h -d 2 /path/to/directory
# 查看磁盘分区
fdisk -l
# 查看块设备
lsblk
# 查看CPU信息
lscpu
# 查看PCI设备
lspci
# 查看USB设备
lsusb
# 查看内核模块
lsmod
# 查看加载的模块
modprobe -l

五、网络管理

网络配置和诊断

bash 复制代码
# 查看IP地址
ip addr show
# 查看特定接口
ip addr show eth0
# 查看路由表
ip route show
# 添加IP地址
sudo ip addr add 192.168.1.100/24 dev eth0
# 启动/停止接口
sudo ip linkset eth0 up
sudo ip linkset eth0 down
# 传统方式查看IP
ifconfig
# 查看网络接口
ifconfig -a
# 测试网络连通性
ping google.com
# 指定ping次数
ping -c 5 google.com
# 查看网络路由
traceroute google.com
# 查看网络连接
netstat -tuln
# 查看所有网络连接
netstat -tulnap
# 查看端口占用
ss -tuln
# 查看TCP连接
ss -t
# 查看UDP连接
ss -u
# 域名解析
nslookup google.com
# 更强大的DNS查询
dig google.com

网络传输

bash 复制代码
# 下载文件
wget https://example.com/file.zip
# 断点续传
wget -c https://example.com/file.zip
# 后台下载
wget -b https://example.com/file.zip
# 通过curl下载
curl -O https://example.com/file.zip
# 通过curl获取网页
curl https://example.com
# 通过curl获取并保存
curl -o output.html https://example.com
# 上传文件
curl -F "file=@localfile" https://example.com/upload
# SSH连接
ssh user@hostname
# SSH指定端口
ssh -p 2222 user@hostname
# SSH使用密钥
ssh -i ~/.ssh/id_rsa user@hostname
# 安全复制文件
scp file.txt user@hostname:/remote/path/
# 从远程复制
scp user@hostname:/remote/file.txt ./
# 递归复制目录
scp -r /local/dir/ user@hostname:/remote/path/
# 同步文件
rsync -avz /source/dir/ /dest/dir/
# 远程同步
rsync -avz -e ssh /local/dir/ user@hostname:/remote/dir/

六、软件包管理

APT (Debian/Ubuntu)

bash 复制代码
# 更新包列表
sudo apt update
# 升级已安装的包
sudo apt upgrade
# 升级系统
sudo apt dist-upgrade
# 安装软件包
sudo apt install package_name
# 安装多个包
sudo apt install package1 package2
# 移除软件包
sudo apt remove package_name
# 移除软件包和配置文件
sudo apt purge package_name
# 查找软件包
apt search keyword
# 显示包信息
apt show package_name
# 列出已安装的包
apt list --installed
# 清理缓存
sudo apt clean
sudo apt autoclean
# 移除不需要的包
sudo apt autoremove

YUM/DNF (RHEL/CentOS/Fedora)

bash 复制代码
# 安装软件包
sudo yum install package_name
sudo dnf install package_name
# 更新所有包
sudo yum update
sudo dnf update
# 查找软件包
yum search keyword
dnf search keyword
# 删除软件包
sudo yum remove package_name
sudo dnf remove package_name
# 显示包信息
yum info package_name
dnf info package_name
# 列出已安装的包
yum list installed
dnf list installed
# 清理缓存
sudo yum clean all
sudo dnf clean all

Pacman (Arch Linux)

bash 复制代码
# 更新系统
sudo pacman -Syu
# 安装软件包
sudo pacman -S package_name
# 删除软件包
sudo pacman -R package_name
# 删除软件包和依赖
sudo pacman -Rs package_name
# 查找软件包
pacman -Ss keyword
# 显示包信息
pacman -Si package_name
# 清理缓存
sudo pacman -Sc
# 清理所有缓存
sudo pacman -Scc

七、压缩和解压

常见压缩格式

bash 复制代码
# tar创建归档
tar -cvf archive.tar file1 file2
# tar解压
tar -xvf archive.tar
# tar压缩为gzip
tar -czvf archive.tar.gz directory/
# tar解压gzip
tar -xzvf archive.tar.gz
# tar压缩为bzip2
tar -cjvf archive.tar.bz2 directory/
# tar解压bzip2
tar -xjvf archive.tar.bz2
# tar压缩为xz
tar -cJvf archive.tar.xz directory/
# tar解压xz
tar -xJvf archive.tar.xz
# 仅查看tar内容
tar -tvf archive.tar
# gzip压缩
gzip filename
# gzip解压
gunzip filename.gz
# 或
gzip -d filename.gz
# bzip2压缩
bzip2 filename
# bzip2解压
bunzip2 filename.bz2
# 或
bzip2 -d filename.bz2
# zip压缩
zip archive.zip file1 file2
# zip递归压缩
zip -r archive.zip directory/
# zip解压
unzip archive.zip
# zip查看内容
unzip -l archive.zip
# 7z压缩
7z a archive.7z file1 file2
# 7z解压
7z x archive.7z

八、磁盘管理

磁盘操作

bash 复制代码
# 查看磁盘空间
df -h
# 查看指定目录大小
du -sh /path/to/directory
# 查看目录大小详情
du -h /path/to/directory
# 挂载文件系统
sudo mount /dev/sda1 /mnt
# 卸载文件系统
sudo umount /mnt
# 查看挂载点
mount
# 查看所有块设备
lsblk
# 查看磁盘分区
sudo fdisk -l
# 查看UUID
sudo blkid
# 修复文件系统
sudo fsck /dev/sda1
# 格式化磁盘
sudo mkfs.ext4 /dev/sda1
# 检查磁盘坏道
sudo badblocks -v /dev/sda
# 测试磁盘速度
sudo hdparm -Tt /dev/sda
# 查看磁盘信息
sudo smartctl -a /dev/sda

九、系统服务管理

Systemd

bash 复制代码
# 启动服务
sudo systemctl start servicename
# 停止服务
sudo systemctl stop servicename
# 重启服务
sudo systemctl restart servicename
# 重载服务配置
sudo systemctl reload servicename
# 查看服务状态
sudo systemctl status servicename
# 启用开机启动
sudo systemctl enable servicename
# 禁用开机启动
sudo systemctl disable servicename
# 查看服务是否启用
sudo systemctl is-enabled servicename
# 查看所有服务
sudo systemctl list-units --type=service
# 查看系统日志
sudo journalctl -u servicename
# 查看实时日志
sudo journalctl -f
# 查看特定时间日志
sudo journalctl --since "2023-01-01" --until"2023-12-31"
# 重启系统
sudo systemctl reboot
# 关机
sudo systemctl poweroff

SysVinit

bash 复制代码
# 启动服务
sudo service servicename start
# 停止服务
sudo service servicename stop
# 重启服务
sudo service servicename restart
# 查看服务状态
sudo service servicename status
# 启用开机启动
sudo chkconfig servicename on
# 禁用开机启动
sudo chkconfig servicename off
# 查看运行级别
runlevel
# 进入单用户模式
sudo init 1
# 重启
sudo reboot
# 关机
sudo poweroff

十、文本编辑器

Vim基本操作

bash 复制代码
# 打开文件
vim filename.txt
# vim基本命令:
# i - 进入插入模式
# Esc - 退出插入模式
# :w - 保存文件
# :wq - 保存并退出
# :q! - 不保存退出
# :q - 退出
# /text - 搜索文本
# n - 下一个匹配
# N - 上一个匹配
# :s/old/new/g - 替换文本
# dd - 删除当前行
# yy - 复制当前行
# p - 粘贴
# u - 撤销
# Ctrl+r - 重做
# :set number - 显示行号
# :set nonumber - 隐藏行号

Nano基本操作

bash 复制代码
# 打开文件
nano filename.txt
# nano快捷键:
# Ctrl+O - 保存文件
# Ctrl+X - 退出
# Ctrl+K - 剪切行
# Ctrl+U - 粘贴
# Ctrl+W - 搜索
# Ctrl+\ - 替换
# Ctrl+C - 显示光标位置
# Ctrl+G - 显示帮助

十一、计划任务

Cron定时任务

bash 复制代码
# 编辑当前用户的cron任务
crontab -e
# 列出当前用户的cron任务
crontab -l
# 删除当前用户的cron任务
crontab -r
# 编辑指定用户的cron任务
sudo crontab -u username -e
# cron时间格式示例:
# * * * * * command
# | | | | |
# | | | | +---- 星期 (0-6) (0=星期日)
# | | | +------ 月份 (1-12)
# | | +-------- 日期 (1-31)
# | +---------- 小时 (0-23)
# +------------ 分钟 (0-59)
# 每分钟执行
* * * * * command
# 每小时的第5分钟执行
5 * * * * command
# 每天2:30执行
30 2 * * * command
# 每周一2:30执行
30 2 * * 1 command
# 每月1号2:30执行
30 2 1 * * command
# 每年1月1日2:30执行
30 2 1 1 * command

一次性任务

bash 复制代码
# 5分钟后执行命令
echo"command" | at now + 5 minutes
# 今天22:00执行
echo"command" | at 22:00
# 明天10:00执行
echo"command" | at 10:00 tomorrow
# 查看at任务
atq
# 删除at任务
atrm job_number

十二、系统管理高级命令

系统调试

bash 复制代码
# 查看系统日志
sudotail -f /var/log/syslog
# 查看认证日志
sudotail -f /var/log/auth.log
# 查看内核日志
dmesg
# 查看最近内核日志
dmesg | tail
# 查看启动日志
journalctl -b
# 查看内核参数
sysctl -a
# 修改内核参数
sudo sysctl -w kernel.parameter=value
# 查看系统限制
ulimit -a
# 查看环境变量
env
# 查看特定环境变量
echo$PATH
# 设置环境变量
export VARIABLE=value
# 添加到PATH
export PATH=$PATH:/new/path

性能监控

bash 复制代码
# 实时系统监控
top
# 更友好的监控
htop
# 监控进程打开的文件
lsof -p PID
# 监控网络连接
sudo netstat -tulpn
# 或
sudo ss -tulpn
# 监控磁盘I/O
iotop
# 监控网络流量
iftop
# 监控CPU使用
mpstat
# 监控内存使用
vmstat
# 查看系统活动报告
sar
# 查看历史CPU使用
sar -u
# 查看历史内存使用
sar -r
# 查看历史I/O
sar -b
# 查看实时系统统计
dstat

十三、Shell脚本示例

基本脚本

bash 复制代码
#!/bin/bash
# 这是一个Shell脚本示例
# 注释以#开头

# 定义变量
name="World"
count=10
files=$(ls)

# 输出
echo"Hello, $name!"
echo"Count: $count"

# 条件判断
if [ $count -eq 10 ]; then
echo"Count is 10"
elif [ $count -gt 10 ]; then
echo"Count is greater than 10"
else
echo"Count is less than 10"
fi

# 循环
for i in {1..5}; do
echo"Number: $i"
done

# 遍历文件
for file in$files; do
echo"File: $file"
done

# while循环
while [ $count -gt 0 ]; do
echo"Countdown: $count"
    count=$((count-1))
done

# 函数定义
greet() {
echo"Hello, $1!"
}

# 函数调用
greet "Alice"
greet "Bob"

# 参数传递
echo"First argument: $1"
echo"Second argument: $2"
echo"All arguments: $@"
echo"Number of arguments: $#"

# 返回值
check_file() {
if [ -f "$1" ]; then
return 0
else
return 1
fi
}

# 使用函数
if check_file "test.txt"; then
echo"File exists"
else
echo"File does not exist"
fi

十四、实用小技巧

命令行技巧

bash 复制代码
# 历史命令搜索
Ctrl+R
# 清屏
Ctrl+L
# 移动到行首
Ctrl+A
# 移动到行尾
Ctrl+E
# 删除到行首
Ctrl+U
# 删除到行尾
Ctrl+K
# 删除前一个单词
Ctrl+W
# 粘贴删除的内容
Ctrl+Y
# 暂停进程
Ctrl+Z
# 终止进程
Ctrl+C
# 退出终端
Ctrl+D
# 快速执行上一条命令
!!
# 快速执行上一条以特定字符串开头的命令
!sudo
# 执行历史中的第N条命令
!N
# 重复上一条命令的最后一个参数
!$
# 重复上一条命令的所有参数
!*

# 命令替换
ls $(which bash)
# 或
ls `which bash`

# 管道示例
ps aux | grep ssh
cat file.txt | grep "error" | wc -l
ls -la | less

# 重定向示例
command > output.txt      # 覆盖重定向
command >> output.txt     # 追加重定向
command 2> error.txt      # 错误重定向
command &> output.txt     # 所有输出重定向
command < input.txt       # 输入重定向

# 后台运行
long_running_command &
# 后台运行并忽略挂起信号
nohup long_running_command &
# 查看后台作业
jobs
# 将后台作业调到前台
fg %1

实用命令组合

bash 复制代码
# 统计当前目录文件数
ls | wc -l
# 查找大文件
find . -type f -size +100M
# 查找修改时间在7天内的文件
find . -type f -mtime -7
# 查找并删除7天前的日志文件
find /var/log -name "*.log" -mtime +7 -delete
# 查找包含特定文本的文件
grep -r "search_text" /path/to/search/
# 查找并替换文本
find . -type f -name "*.txt" -exec sed -i 's/old/new/g' {} \;
# 统计代码行数
find . -name "*.py" -execcat {} \; | wc -l
# 监控文件变化
tail -f /var/log/syslog | grep "error"
# 查看内存使用前10的进程
ps aux --sort=-%mem | head -11
# 查看CPU使用前10的进程
ps aux --sort=-%cpu | head -11
# 监控网络连接数
watch -n 1 "netstat -an | grep :80 | wc -l"
# 生成随机密码
openssl rand -base64 12
# 或
tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 12
# 查看文件修改时间
stat filename.txt
# 比较两个目录差异
diff -r dir1 dir2

十五、常见任务快速参考

系统维护

bash 复制代码
# 更新系统
# Debian/Ubuntu
sudo apt update && sudo apt upgrade
# RHEL/CentOS/Fedora
sudo yum update
sudo dnf update
# Arch
sudo pacman -Syu

# 清理系统
# 清理包缓存
sudo apt clean
sudo yum clean all
# 清理旧内核
sudo apt autoremove
# 清理日志
sudo journalctl --vacuum-time=7d
# 清理临时文件
sudorm -rf /tmp/*
sudorm -rf /var/tmp/*

# 查看磁盘使用
df -h
# 查看目录大小
du -sh /*
# 查找大文件
find / -type f -size +100M 2>/dev/null
# 查找大目录
du -h /home/* | sort -rh | head -20

# 监控系统资源
# 查看内存使用
free -h
# 查看CPU使用
top
# 查看网络连接
ss -tuln
# 查看进程
ps aux

问题排查

bash 复制代码
# 查看系统负载
uptime
# 查看内存使用
free -m
# 查看进程占用内存
ps aux --sort=-%mem | head
# 查看进程占用CPU
ps aux --sort=-%cpu | head
# 查看磁盘I/O
iotop
# 查看网络流量
iftop
# 查看系统日志
sudotail -f /var/log/syslog
# 查看应用日志
sudo journalctl -u servicename -f
# 查看错误日志
sudo grep -i error /var/log/syslog
# 查看网络连接
netstat -tulpn
# 查看端口占用
sudo lsof -i :80
# 查看系统启动时间
who -b
# 查看登录用户
who
# 查看最近登录
last

十六、Shell内建命令

Bash内建命令

bash 复制代码
# 查看内建命令
compgen -b
# 常见内建命令:
# cd - 切换目录
# pwd - 打印工作目录
# echo - 输出文本
# read - 读取输入
# export - 设置环境变量
# unset - 删除变量
# alias - 创建别名
# unalias - 删除别名
# source 或 . - 执行脚本
# exit - 退出shell
# history - 查看历史
# type - 显示命令类型
# test 或 [ ] - 条件测试
# time - 测量时间
# trap - 信号处理
# ulimit - 设置限制
# umask - 设置默认权限

使用说明

  1. 命令参数:大部分命令都有很多选项,使用--help或man查看完整帮助
  2. 权限:许多系统管理命令需要sudo或root权限
  3. 路径:注意当前工作目录,相对路径和绝对路径的区别
  4. 危险操作:rm -rf、fdisk、dd等命令要特别小心
  5. 备份:执行可能破坏数据的操作前,先备份重要数据
  6. 测试:在生产环境执行命令前,先在测试环境验证
相关推荐
讯捷蓝达42 分钟前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
且从容.2 小时前
ubuntu安装flink
linux·ubuntu·flink
数字新视界3 小时前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
爱和冰阔落3 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨3 小时前
WSL2的安装与使用
linux·wsl
微小的鱼3 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng4 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮5 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹5 小时前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器
孙克旭_5 小时前
k8s基础组件与创建资源
运维·docker·容器·kubernetes