781 lines
24 KiB
Markdown
781 lines
24 KiB
Markdown
# Linux 常用命令指南
|
||
|
||
## 目录
|
||
- [文件与目录操作](#文件与目录操作)
|
||
- [文件查看与编辑](#文件查看与编辑)
|
||
- [文件搜索](#文件搜索)
|
||
- [权限管理](#权限管理)
|
||
- [进程管理](#进程管理)
|
||
- [系统信息](#系统信息)
|
||
- [网络操作](#网络操作)
|
||
- [压缩与解压](#压缩与解压)
|
||
- [文本处理](#文本处理)
|
||
- [磁盘管理](#磁盘管理)
|
||
- [用户管理](#用户管理)
|
||
- [服务管理](#服务管理)
|
||
- [常用快捷键](#常用快捷键)
|
||
- [组合命令](#组合命令)
|
||
|
||
---
|
||
|
||
## 文件与目录操作
|
||
|
||
### 目录操作
|
||
```bash
|
||
# 查看当前目录
|
||
pwd
|
||
|
||
# 切换目录
|
||
cd <目录路径>
|
||
cd ~ # 切换到用户主目录
|
||
cd - # 切换到上一个目录
|
||
cd .. # 切换到上级目录
|
||
cd / # 切换到根目录
|
||
|
||
# 列出目录内容
|
||
ls # 列出当前目录文件
|
||
ls -l # 详细列表(长格式)
|
||
ls -a # 显示隐藏文件
|
||
ls -la # 详细列表包含隐藏文件
|
||
ls -lh # 人类可读的文件大小
|
||
ls -lt # 按时间排序
|
||
ls -ltr # 按时间倒序
|
||
ls -R # 递归列出子目录
|
||
|
||
# 创建目录
|
||
mkdir <目录名> # 创建单个目录
|
||
mkdir -p dir1/dir2/dir3 # 递归创建多级目录
|
||
mkdir dir1 dir2 dir3 # 创建多个目录
|
||
|
||
# 删除目录
|
||
rmdir <目录名> # 删除空目录
|
||
rm -r <目录名> # 递归删除目录
|
||
rm -rf <目录名> # 强制递归删除(危险!)
|
||
```
|
||
|
||
### 文件操作
|
||
```bash
|
||
# 创建文件
|
||
touch <文件名> # 创建空文件或更新文件时间戳
|
||
touch file1 file2 file3 # 创建多个文件
|
||
|
||
# 复制文件
|
||
cp <源文件> <目标文件> # 复制文件
|
||
cp -r <源目录> <目标目录> # 递归复制目录
|
||
cp -p <源文件> <目标文件> # 保留文件属性
|
||
cp -a <源目录> <目标目录> # 归档复制(保留所有属性)
|
||
|
||
# 移动/重命名文件
|
||
mv <源文件> <目标文件> # 移动或重命名文件
|
||
mv <源目录> <目标目录> # 移动目录
|
||
|
||
# 删除文件
|
||
rm <文件名> # 删除文件
|
||
rm -f <文件名> # 强制删除(不提示)
|
||
rm -i <文件名> # 交互式删除(提示确认)
|
||
rm -rf <目录> # 递归强制删除目录(危险!)
|
||
```
|
||
|
||
### 文件链接
|
||
```bash
|
||
# 创建硬链接
|
||
ln <源文件> <链接名>
|
||
|
||
# 创建软链接(符号链接)
|
||
ln -s <源文件> <链接名>
|
||
ln -s <源目录> <链接目录>
|
||
```
|
||
|
||
---
|
||
|
||
## 文件查看与编辑
|
||
|
||
### 查看文件内容
|
||
```bash
|
||
# 查看整个文件
|
||
cat <文件名> # 显示文件全部内容
|
||
cat -n <文件名> # 显示行号
|
||
cat file1 file2 # 连接多个文件显示
|
||
|
||
# 分页查看
|
||
less <文件名> # 分页查看(可上下滚动)
|
||
more <文件名> # 分页查看(只能向下)
|
||
|
||
# 查看文件头部
|
||
head <文件名> # 显示前10行
|
||
head -n 20 <文件名> # 显示前20行
|
||
head -c 100 <文件名> # 显示前100字节
|
||
|
||
# 查看文件尾部
|
||
tail <文件名> # 显示后10行
|
||
tail -n 20 <文件名> # 显示后20行
|
||
tail -f <文件名> # 实时跟踪文件变化(常用于日志)
|
||
tail -F <文件名> # 跟踪文件(文件被删除重建后继续跟踪)
|
||
|
||
# 查看文件类型
|
||
file <文件名> # 显示文件类型信息
|
||
|
||
# 统计文件信息
|
||
wc <文件名> # 统计行数、单词数、字节数
|
||
wc -l <文件名> # 只统计行数
|
||
wc -w <文件名> # 只统计单词数
|
||
wc -c <文件名> # 只统计字节数
|
||
```
|
||
|
||
### 文件编辑
|
||
```bash
|
||
# vi/vim 编辑器
|
||
vi <文件名> # 打开文件编辑
|
||
vim <文件名> # 打开文件编辑(增强版vi)
|
||
|
||
# nano 编辑器(简单易用)
|
||
nano <文件名> # 打开文件编辑
|
||
|
||
# 基本vim操作
|
||
# 进入编辑模式:按 i(插入)或 a(追加)
|
||
# 退出编辑模式:按 Esc
|
||
# 保存并退出::wq 或 :x
|
||
# 不保存退出::q!
|
||
# 保存不退出::w
|
||
```
|
||
|
||
---
|
||
|
||
## 文件搜索
|
||
|
||
### find 命令
|
||
```bash
|
||
# 按名称搜索
|
||
find <目录> -name "<文件名>" # 精确匹配
|
||
find <目录> -name "*.txt" # 通配符匹配
|
||
find <目录> -iname "*.txt" # 忽略大小写
|
||
|
||
# 按类型搜索
|
||
find <目录> -type f # 只查找文件
|
||
find <目录> -type d # 只查找目录
|
||
find <目录> -type l # 只查找链接
|
||
|
||
# 按大小搜索
|
||
find <目录> -size +100M # 大于100MB的文件
|
||
find <目录> -size -10k # 小于10KB的文件
|
||
find <目录> -size 50M # 等于50MB的文件
|
||
|
||
# 按时间搜索
|
||
find <目录> -mtime -7 # 7天内修改的文件
|
||
find <目录> -mtime +30 # 30天前修改的文件
|
||
find <目录> -mmin -60 # 60分钟内修改的文件
|
||
|
||
# 按权限搜索
|
||
find <目录> -perm 644 # 权限为644的文件
|
||
find <目录> -perm -u+x # 用户有执行权限的文件
|
||
|
||
# 执行操作
|
||
find <目录> -name "*.log" -delete # 删除找到的文件
|
||
find <目录> -name "*.txt" -exec rm {} \; # 对找到的文件执行命令
|
||
find <目录> -name "*.txt" -ok rm {} \; # 交互式执行
|
||
```
|
||
|
||
### locate 命令(需要先建立索引)
|
||
```bash
|
||
locate <文件名> # 快速搜索文件(基于数据库)
|
||
updatedb # 更新locate数据库(需要root)
|
||
```
|
||
|
||
### grep 命令(文本搜索)
|
||
```bash
|
||
# 基本搜索
|
||
grep "关键字" <文件名> # 在文件中搜索
|
||
grep -i "关键字" <文件名> # 忽略大小写
|
||
grep -v "关键字" <文件名> # 反向搜索(不匹配的行)
|
||
grep -n "关键字" <文件名> # 显示行号
|
||
grep -c "关键字" <文件名> # 统计匹配行数
|
||
|
||
# 递归搜索
|
||
grep -r "关键字" <目录> # 递归搜索目录
|
||
grep -r -n "关键字" <目录> # 递归搜索并显示行号
|
||
|
||
# 正则表达式
|
||
grep "^关键字" <文件名> # 以关键字开头
|
||
grep "关键字$" <文件名> # 以关键字结尾
|
||
grep -E "正则表达式" <文件名> # 扩展正则表达式
|
||
|
||
# 上下文显示
|
||
grep -A 3 "关键字" <文件名> # 显示匹配行及后3行
|
||
grep -B 3 "关键字" <文件名> # 显示匹配行及前3行
|
||
grep -C 3 "关键字" <文件名> # 显示匹配行及前后3行
|
||
```
|
||
|
||
### which/whereis 命令
|
||
```bash
|
||
which <命令> # 查找命令的完整路径
|
||
whereis <命令> # 查找命令、源码和手册页位置
|
||
```
|
||
|
||
---
|
||
|
||
## 权限管理
|
||
|
||
### 查看权限
|
||
```bash
|
||
ls -l <文件名> # 查看文件权限
|
||
stat <文件名> # 查看详细文件信息
|
||
```
|
||
|
||
### 修改权限(chmod)
|
||
```bash
|
||
# 数字方式
|
||
chmod 755 <文件名> # rwxr-xr-x
|
||
chmod 644 <文件名> # rw-r--r--
|
||
chmod 777 <文件名> # rwxrwxrwx(所有权限)
|
||
|
||
# 符号方式
|
||
chmod u+x <文件名> # 用户添加执行权限
|
||
chmod g-w <文件名> # 组移除写权限
|
||
chmod o+r <文件名> # 其他用户添加读权限
|
||
chmod a+x <文件名> # 所有人添加执行权限
|
||
chmod u=rwx,g=rx,o=r <文件名> # 分别设置权限
|
||
|
||
# 递归修改
|
||
chmod -R 755 <目录> # 递归修改目录及子目录权限
|
||
```
|
||
|
||
### 修改所有者(chown)
|
||
```bash
|
||
chown <用户> <文件名> # 修改文件所有者
|
||
chown <用户>:<组> <文件名> # 修改所有者和组
|
||
chown -R <用户> <目录> # 递归修改目录所有者
|
||
```
|
||
|
||
### 修改组(chgrp)
|
||
```bash
|
||
chgrp <组名> <文件名> # 修改文件组
|
||
chgrp -R <组名> <目录> # 递归修改目录组
|
||
```
|
||
|
||
### 特殊权限
|
||
```bash
|
||
# SUID(Set User ID)
|
||
chmod u+s <文件名> # 执行时以文件所有者身份运行
|
||
|
||
# SGID(Set Group ID)
|
||
chmod g+s <文件名> # 执行时以文件组身份运行
|
||
|
||
# Sticky Bit
|
||
chmod +t <目录> # 目录中只有所有者可以删除文件
|
||
```
|
||
|
||
---
|
||
|
||
## 进程管理
|
||
|
||
### 查看进程
|
||
```bash
|
||
# 基本查看
|
||
ps # 显示当前终端进程
|
||
ps aux # 显示所有进程详细信息
|
||
ps -ef # 显示所有进程(另一种格式)
|
||
ps aux | grep <进程名> # 搜索特定进程
|
||
|
||
# 实时查看
|
||
top # 实时显示进程(类似任务管理器)
|
||
htop # 增强版top(需要安装)
|
||
top -p <PID> # 只显示指定进程
|
||
|
||
# 按资源排序
|
||
top -o %CPU # 按CPU使用率排序
|
||
top -o %MEM # 按内存使用率排序
|
||
```
|
||
|
||
### 进程控制
|
||
```bash
|
||
# 启动进程
|
||
<命令> & # 后台运行命令
|
||
nohup <命令> & # 后台运行,终端关闭后继续
|
||
|
||
# 终止进程
|
||
kill <PID> # 终止进程(发送SIGTERM信号)
|
||
kill -9 <PID> # 强制终止(发送SIGKILL信号)
|
||
killall <进程名> # 终止所有同名进程
|
||
pkill <进程名> # 按名称终止进程
|
||
|
||
# 暂停/恢复进程
|
||
kill -STOP <PID> # 暂停进程
|
||
kill -CONT <PID> # 恢复进程
|
||
|
||
# 查看进程树
|
||
pstree # 显示进程树
|
||
pstree -p # 显示进程树和PID
|
||
```
|
||
|
||
### 作业控制
|
||
```bash
|
||
jobs # 查看后台作业
|
||
fg <作业号> # 将后台作业调到前台
|
||
bg <作业号> # 将暂停的作业放到后台运行
|
||
```
|
||
|
||
---
|
||
|
||
## 系统信息
|
||
|
||
### 系统版本
|
||
```bash
|
||
uname -a # 显示所有系统信息
|
||
uname -r # 显示内核版本
|
||
uname -m # 显示机器架构
|
||
cat /etc/os-release # 显示发行版信息
|
||
lsb_release -a # 显示LSB信息(需要安装)
|
||
```
|
||
|
||
### CPU信息
|
||
```bash
|
||
cat /proc/cpuinfo # 显示CPU详细信息
|
||
lscpu # 显示CPU架构信息
|
||
nproc # 显示CPU核心数
|
||
```
|
||
|
||
### 内存信息
|
||
```bash
|
||
free # 显示内存使用情况
|
||
free -h # 人类可读格式
|
||
free -m # 以MB为单位
|
||
cat /proc/meminfo # 详细内存信息
|
||
```
|
||
|
||
### 磁盘信息
|
||
```bash
|
||
df # 显示磁盘使用情况
|
||
df -h # 人类可读格式
|
||
df -i # 显示inode使用情况
|
||
du <目录> # 显示目录占用空间
|
||
du -h <目录> # 人类可读格式
|
||
du -sh <目录> # 只显示总计
|
||
du -h --max-depth=1 <目录> # 只显示一级子目录
|
||
```
|
||
|
||
### 系统负载
|
||
```bash
|
||
uptime # 显示系统运行时间和负载
|
||
w # 显示登录用户和负载
|
||
```
|
||
|
||
### 硬件信息
|
||
```bash
|
||
lspci # 显示PCI设备
|
||
lsusb # 显示USB设备
|
||
dmidecode # 显示硬件信息(需要root)
|
||
```
|
||
|
||
---
|
||
|
||
## 网络操作
|
||
|
||
### 网络配置
|
||
```bash
|
||
# 查看IP地址
|
||
ifconfig # 显示网络接口信息
|
||
ip addr # 显示IP地址(新命令)
|
||
ip addr show # 显示所有接口
|
||
hostname -I # 显示本机IP地址
|
||
|
||
# 配置网络
|
||
ifconfig <接口> <IP地址> # 设置IP地址
|
||
ip addr add <IP地址>/<掩码> dev <接口> # 添加IP地址
|
||
|
||
# 查看路由
|
||
route -n # 显示路由表
|
||
ip route # 显示路由表(新命令)
|
||
```
|
||
|
||
### 网络连接测试
|
||
```bash
|
||
ping <主机> # 测试网络连通性
|
||
ping -c 4 <主机> # 发送4个包后停止
|
||
ping -i 2 <主机> # 每2秒发送一次
|
||
|
||
# 端口测试
|
||
telnet <主机> <端口> # 测试端口连通性
|
||
nc -zv <主机> <端口> # 测试端口(netcat)
|
||
```
|
||
|
||
### 网络下载
|
||
```bash
|
||
wget <URL> # 下载文件
|
||
wget -c <URL> # 断点续传
|
||
wget -r <URL> # 递归下载
|
||
curl <URL> # 下载文件(支持更多协议)
|
||
curl -O <URL> # 保存文件
|
||
curl -L <URL> # 跟随重定向
|
||
```
|
||
|
||
### 网络统计
|
||
```bash
|
||
netstat -an # 显示所有网络连接
|
||
netstat -tuln # 显示监听端口
|
||
netstat -rn # 显示路由表
|
||
ss -an # 显示网络连接(新命令,更快)
|
||
ss -tuln # 显示监听端口
|
||
```
|
||
|
||
### 防火墙
|
||
```bash
|
||
# iptables(需要root)
|
||
iptables -L # 列出规则
|
||
iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 添加规则
|
||
|
||
# ufw(Ubuntu防火墙)
|
||
ufw status # 查看状态
|
||
ufw enable # 启用防火墙
|
||
ufw allow 80/tcp # 允许端口
|
||
ufw deny 22/tcp # 拒绝端口
|
||
```
|
||
|
||
---
|
||
|
||
## 压缩与解压
|
||
|
||
### tar 命令
|
||
```bash
|
||
# 压缩
|
||
tar -czf <压缩包名>.tar.gz <目录> # 创建gzip压缩包
|
||
tar -cjf <压缩包名>.tar.bz2 <目录> # 创建bzip2压缩包
|
||
tar -cJf <压缩包名>.tar.xz <目录> # 创建xz压缩包
|
||
|
||
# 解压
|
||
tar -xzf <压缩包名>.tar.gz # 解压gzip压缩包
|
||
tar -xjf <压缩包名>.tar.bz2 # 解压bzip2压缩包
|
||
tar -xJf <压缩包名>.tar.xz # 解压xz压缩包
|
||
|
||
# 查看压缩包内容
|
||
tar -tzf <压缩包名>.tar.gz # 列出gzip压缩包内容
|
||
tar -tjf <压缩包名>.tar.bz2 # 列出bzip2压缩包内容
|
||
|
||
# 常用选项说明
|
||
# -c: 创建压缩包
|
||
# -x: 解压
|
||
# -z: gzip压缩
|
||
# -j: bzip2压缩
|
||
# -J: xz压缩
|
||
# -f: 指定文件名
|
||
# -v: 显示过程
|
||
# -C: 指定解压目录
|
||
```
|
||
|
||
### zip/unzip 命令
|
||
```bash
|
||
zip -r <压缩包名>.zip <目录> # 压缩目录
|
||
zip <压缩包名>.zip <文件1> <文件2> # 压缩文件
|
||
unzip <压缩包名>.zip # 解压
|
||
unzip -l <压缩包名>.zip # 查看压缩包内容
|
||
unzip -d <目录> <压缩包名>.zip # 解压到指定目录
|
||
```
|
||
|
||
### gzip/gunzip 命令
|
||
```bash
|
||
gzip <文件名> # 压缩文件(生成.gz文件)
|
||
gunzip <文件名>.gz # 解压.gz文件
|
||
gzip -d <文件名>.gz # 解压(另一种方式)
|
||
```
|
||
|
||
---
|
||
|
||
## 文本处理
|
||
|
||
### 文本过滤
|
||
```bash
|
||
# cut 命令(按列提取)
|
||
cut -d: -f1 /etc/passwd # 以:为分隔符,提取第1列
|
||
cut -c1-10 <文件名> # 提取第1-10个字符
|
||
|
||
# sort 命令(排序)
|
||
sort <文件名> # 排序文件
|
||
sort -r <文件名> # 倒序排序
|
||
sort -n <文件名> # 按数字排序
|
||
sort -u <文件名> # 去重排序
|
||
|
||
# uniq 命令(去重)
|
||
uniq <文件名> # 去除相邻重复行
|
||
uniq -c <文件名> # 统计重复次数
|
||
uniq -d <文件名> # 只显示重复行
|
||
uniq -u <文件名> # 只显示不重复行
|
||
|
||
# 组合使用
|
||
sort <文件名> | uniq # 排序后去重
|
||
```
|
||
|
||
### 文本替换
|
||
```bash
|
||
# sed 命令(流编辑器)
|
||
sed 's/旧文本/新文本/g' <文件名> # 替换文本
|
||
sed -i 's/旧文本/新文本/g' <文件名> # 直接修改文件
|
||
sed 's/旧文本/新文本/g' <文件名> > 新文件 # 保存到新文件
|
||
sed -n '10,20p' <文件名> # 显示第10-20行
|
||
sed '10,20d' <文件名> # 删除第10-20行
|
||
|
||
# tr 命令(字符转换)
|
||
tr 'a-z' 'A-Z' < <文件名> # 小写转大写
|
||
tr -d '\n' < <文件名> # 删除换行符
|
||
```
|
||
|
||
### awk 命令(文本处理工具)
|
||
```bash
|
||
awk '{print $1}' <文件名> # 打印第1列
|
||
awk -F: '{print $1}' <文件名> # 以:为分隔符,打印第1列
|
||
awk '/关键字/ {print}' <文件名> # 打印包含关键字的行
|
||
awk '{sum+=$1} END {print sum}' <文件名> # 计算第1列总和
|
||
```
|
||
|
||
---
|
||
|
||
## 磁盘管理
|
||
|
||
### 磁盘分区
|
||
```bash
|
||
fdisk -l # 列出所有分区(需要root)
|
||
lsblk # 以树形显示块设备
|
||
parted -l # 显示分区信息
|
||
```
|
||
|
||
### 挂载/卸载
|
||
```bash
|
||
mount # 显示已挂载的文件系统
|
||
mount <设备> <挂载点> # 挂载设备
|
||
umount <挂载点> # 卸载设备
|
||
umount -l <挂载点> # 强制卸载(lazy unmount)
|
||
```
|
||
|
||
### 文件系统检查
|
||
```bash
|
||
fsck <设备> # 检查文件系统(需要root)
|
||
fsck -y <设备> # 自动修复错误
|
||
```
|
||
|
||
---
|
||
|
||
## 用户管理
|
||
|
||
### 用户操作
|
||
```bash
|
||
whoami # 显示当前用户名
|
||
id # 显示用户ID和组ID
|
||
who # 显示登录用户
|
||
w # 显示登录用户和活动
|
||
|
||
# 添加/删除用户(需要root)
|
||
useradd <用户名> # 添加用户
|
||
userdel <用户名> # 删除用户
|
||
passwd <用户名> # 修改用户密码
|
||
```
|
||
|
||
### 切换用户
|
||
```bash
|
||
su <用户名> # 切换用户
|
||
su - <用户名> # 切换用户并加载环境变量
|
||
sudo <命令> # 以root权限执行命令
|
||
sudo -u <用户> <命令> # 以指定用户执行命令
|
||
```
|
||
|
||
### 组操作
|
||
```bash
|
||
groups # 显示当前用户所属组
|
||
groupadd <组名> # 添加组(需要root)
|
||
groupdel <组名> # 删除组(需要root)
|
||
usermod -aG <组名> <用户名> # 将用户添加到组(需要root)
|
||
```
|
||
|
||
---
|
||
|
||
## 服务管理
|
||
|
||
### systemd 服务(现代Linux发行版)
|
||
```bash
|
||
systemctl status <服务名> # 查看服务状态
|
||
systemctl start <服务名> # 启动服务
|
||
systemctl stop <服务名> # 停止服务
|
||
systemctl restart <服务名> # 重启服务
|
||
systemctl reload <服务名> # 重新加载配置
|
||
systemctl enable <服务名> # 设置开机自启
|
||
systemctl disable <服务名> # 取消开机自启
|
||
systemctl list-units # 列出所有服务
|
||
systemctl list-unit-files # 列出所有服务文件
|
||
```
|
||
|
||
### service 命令(传统方式)
|
||
```bash
|
||
service <服务名> status # 查看服务状态
|
||
service <服务名> start # 启动服务
|
||
service <服务名> stop # 停止服务
|
||
service <服务名> restart # 重启服务
|
||
```
|
||
|
||
---
|
||
|
||
## 常用快捷键
|
||
|
||
### 终端快捷键
|
||
```bash
|
||
Ctrl + C # 中断当前命令
|
||
Ctrl + D # 退出终端/结束输入
|
||
Ctrl + Z # 暂停进程(放入后台)
|
||
Ctrl + L # 清屏(等同于clear)
|
||
Ctrl + A # 移动到行首
|
||
Ctrl + E # 移动到行尾
|
||
Ctrl + U # 删除光标前所有内容
|
||
Ctrl + K # 删除光标后所有内容
|
||
Ctrl + W # 删除光标前一个单词
|
||
Ctrl + R # 搜索历史命令
|
||
Tab # 自动补全
|
||
```
|
||
|
||
### 历史命令
|
||
```bash
|
||
history # 显示命令历史
|
||
history | grep <关键字> # 搜索历史命令
|
||
!! # 执行上一条命令
|
||
!<编号> # 执行历史中指定编号的命令
|
||
!<字符串> # 执行最近以字符串开头的命令
|
||
```
|
||
|
||
---
|
||
|
||
## 组合命令
|
||
|
||
### 管道操作
|
||
```bash
|
||
# 基本管道
|
||
命令1 | 命令2 # 将命令1的输出作为命令2的输入
|
||
|
||
# 示例
|
||
ps aux | grep python # 查找python进程
|
||
cat file.txt | grep "关键字" # 在文件中搜索
|
||
ls -l | wc -l # 统计文件数量
|
||
```
|
||
|
||
### 重定向
|
||
```bash
|
||
命令 > 文件 # 输出重定向到文件(覆盖)
|
||
命令 >> 文件 # 输出追加到文件
|
||
命令 < 文件 # 从文件读取输入
|
||
命令 2> 文件 # 错误输出重定向
|
||
命令 > 文件 2>&1 # 标准输出和错误都重定向
|
||
命令 > /dev/null 2>&1 # 丢弃所有输出
|
||
```
|
||
|
||
### 逻辑操作
|
||
```bash
|
||
命令1 && 命令2 # 命令1成功才执行命令2
|
||
命令1 || 命令2 # 命令1失败才执行命令2
|
||
命令1 ; 命令2 # 顺序执行命令(无论成功失败)
|
||
```
|
||
|
||
### 常用组合示例
|
||
```bash
|
||
# 查找并删除
|
||
find . -name "*.log" -delete
|
||
|
||
# 统计文件行数
|
||
find . -name "*.txt" -exec wc -l {} \; | awk '{sum+=$1} END {print sum}'
|
||
|
||
# 查找大文件
|
||
find . -type f -size +100M -exec ls -lh {} \;
|
||
|
||
# 批量重命名
|
||
for file in *.txt; do mv "$file" "${file%.txt}.bak"; done
|
||
|
||
# 监控日志
|
||
tail -f /var/log/syslog | grep "ERROR"
|
||
|
||
# 压缩并删除原文件
|
||
tar -czf backup.tar.gz dir/ && rm -rf dir/
|
||
|
||
# 查找并替换
|
||
find . -name "*.txt" -exec sed -i 's/旧文本/新文本/g' {} \;
|
||
```
|
||
|
||
---
|
||
|
||
## 实用技巧
|
||
|
||
### 别名设置
|
||
```bash
|
||
# 临时设置
|
||
alias ll='ls -alF'
|
||
alias la='ls -A'
|
||
alias l='ls -CF'
|
||
|
||
# 永久设置(添加到 ~/.bashrc 或 ~/.bash_profile)
|
||
echo "alias ll='ls -alF'" >> ~/.bashrc
|
||
source ~/.bashrc # 重新加载配置
|
||
```
|
||
|
||
### 环境变量
|
||
```bash
|
||
echo $PATH # 显示PATH变量
|
||
export PATH=$PATH:/新路径 # 添加PATH
|
||
export VAR=value # 设置环境变量
|
||
env # 显示所有环境变量
|
||
```
|
||
|
||
### 后台运行
|
||
```bash
|
||
nohup <命令> & # 后台运行,忽略挂起信号
|
||
screen -S <会话名> # 创建screen会话
|
||
screen -r <会话名> # 恢复screen会话
|
||
tmux new -s <会话名> # 创建tmux会话
|
||
tmux attach -t <会话名> # 附加到tmux会话
|
||
```
|
||
|
||
---
|
||
|
||
## 常用命令速查表
|
||
|
||
| 功能 | 命令 |
|
||
|------|------|
|
||
| 查看当前目录 | `pwd` |
|
||
| 列出文件 | `ls -lah` |
|
||
| 切换目录 | `cd <目录>` |
|
||
| 创建目录 | `mkdir -p dir1/dir2` |
|
||
| 删除文件 | `rm -rf <文件/目录>` |
|
||
| 复制文件 | `cp -r <源> <目标>` |
|
||
| 移动文件 | `mv <源> <目标>` |
|
||
| 查看文件 | `cat/less/more <文件>` |
|
||
| 查看头部 | `head -n 20 <文件>` |
|
||
| 查看尾部 | `tail -f <文件>` |
|
||
| 搜索文件 | `find . -name "*.txt"` |
|
||
| 搜索文本 | `grep -r "关键字" <目录>` |
|
||
| 查看进程 | `ps aux \| grep <进程>` |
|
||
| 终止进程 | `kill -9 <PID>` |
|
||
| 查看内存 | `free -h` |
|
||
| 查看磁盘 | `df -h` |
|
||
| 查看网络 | `ifconfig` 或 `ip addr` |
|
||
| 测试网络 | `ping <主机>` |
|
||
| 压缩文件 | `tar -czf file.tar.gz dir/` |
|
||
| 解压文件 | `tar -xzf file.tar.gz` |
|
||
| 修改权限 | `chmod 755 <文件>` |
|
||
| 修改所有者 | `chown user:group <文件>` |
|
||
| 查看系统信息 | `uname -a` |
|
||
| 查看系统负载 | `uptime` |
|
||
|
||
---
|
||
|
||
## 注意事项
|
||
|
||
1. **权限问题**:很多系统管理命令需要root权限(使用`sudo`)
|
||
2. **路径问题**:注意绝对路径和相对路径的区别
|
||
3. **通配符**:`*` 匹配任意字符,`?` 匹配单个字符
|
||
4. **危险命令**:`rm -rf`、`dd`、`mkfs` 等命令要谨慎使用
|
||
5. **命令历史**:使用 `history` 查看,`Ctrl+R` 搜索
|
||
6. **帮助文档**:使用 `man <命令>` 或 `<命令> --help` 查看帮助
|
||
|
||
---
|
||
|
||
## 参考资源
|
||
|
||
- [Linux命令大全](https://www.runoob.com/linux/linux-command-manual.html)
|
||
- [GNU Coreutils文档](https://www.gnu.org/software/coreutils/manual/)
|
||
- [Linux man pages](https://man7.org/linux/man-pages/)
|
||
|
||
---
|
||
|
||
*最后更新:2024年*
|