Linux 基础命令
快速上手命令
目录操作
# 查看当前目录
pwd
# 列出文件和目录
ls -la # 显示所有文件(包括隐藏文件)的详细信息
ls -lh # 以人类可读格式显示文件大小
# 创建目录
mkdir -p /path/to/directory # -p 参数可以创建多级目录
# 切换目录
cd /path/to/directory
cd .. # 返回上一级目录
cd ~ # 返回用户主目录
cd - # 返回上一个工作目录
# 删除目录
rmdir directory # 只能删除空目录
rm -rf directory # 递归删除目录及其内容(危险命令,谨慎使用)
文件操作
# 创建空文件或更新时间戳
touch filename
# 复制文件
cp source destination
cp -r source_dir destination_dir # 递归复制目录
# 移动/重命名文件
mv source destination
# 删除文件
rm filename
rm -f filename # 强制删除,不提示
# 查看文件内容
cat filename # 显示整个文件
head -n 10 file # 显示文件前10行
tail -n 20 file # 显示文件后20行
tail -f log.txt # 实时查看文件更新(常用于日志监控)
less filename # 分页查看,可搜索(按 / 搜索,按 q 退出)
# 查找文件
find /path -name "*.txt" # 按名称查找
find /path -type f -size +100M # 查找大于100MB的文件
find /path -mtime -7 # 查找7天内修改的文件
文件权限
# 查看文件权限
ls -l filename
# 修改文件权限
chmod 755 filename # 数字方式:rwxr-xr-x
chmod u+x filename # 符号方式:给所有者添加执行权限
chmod -R g+w directory # 递归地给组添加写权限
# 修改文件所有者
chown user:group filename # 修改文件的用户和组
chown -R user directory # 递归修改目录所有者
系统管理
# 进程管理
ps aux # 显示所有进程
ps -ef | grep nginx # 查找特定进程
top # 动态显示进程信息
kill PID # 终止进程
kill -9 PID # 强制终止进程
killall process_name # 终止所有同名进程
# 系统资源
free -h # 查看内存使用情况
df -h # 查看磁盘使用情况
du -sh /path # 查看目录大小
uptime # 查看系统负载
# 网络
ping host # 测试网络连通性
netstat -tulpn # 查看所有监听端口
ss -tuln # 现代化的netstat替代品
ifconfig # 查看网络接口配置
ip a # 现代化的网络配置查看命令
文本处理快捷命令
# 搜索文件内容
grep "pattern" filename # 在文件中搜索
grep -r "pattern" directory # 递归搜索目录中所有文件
grep -i "pattern" filename # 不区分大小写搜索
# 重定向
command > file # 将输出重定向到文件(覆盖)
command >> file # 将输出追加到文件
command 2> error.log # 重定向错误输出
command > file 2>&1 # 同时重定向标准输出和错误
# 管道
command1 | command2 # 将command1的输出作为command2的输入
ps aux | grep nginx # 查找nginx进程
cat file | sort | uniq # 过滤重复行
实战脚本示例
监控服务状态脚本
#!/bin/bash
# 检查服务状态并在失败时重启
SERVICE_NAME="nginx"
if ! systemctl is-active --quiet $SERVICE_NAME; then
echo "$(date): $SERVICE_NAME 服务已停止,尝试重启..." >> /var/log/service-monitor.log
systemctl restart $SERVICE_NAME
# 检查重启是否成功
if systemctl is-active --quiet $SERVICE_NAME; then
echo "$(date): $SERVICE_NAME 重启成功" >> /var/log/service-monitor.log
else
echo "$(date): $SERVICE_NAME 重启失败,发送告警" >> /var/log/service-monitor.log
# 发送告警邮件
echo "$SERVICE_NAME 服务重启失败,请检查系统" | mail -s "服务告警" admin@example.com
fi
fi
批量重命名文件
#!/bin/bash
# 批量将.txt文件重命名为.md文件
# 检查参数
if [ $# -ne 1 ]; then
echo "用法: $0 目录路径"
exit 1
fi
DIR="$1"
# 检查目录是否存在
if [ ! -d "$DIR" ]; then
echo "错误: $DIR 不是一个目录"
exit 2
fi
# 批量重命名
count=0
for file in "$DIR"/*.txt; do
if [ -f "$file" ]; then
newname="${file%.txt}.md"
mv "$file" "$newname"
echo "已重命名: $file -> $newname"
((count++))
fi
done
echo "总共重命名了 $count 个文件"
命令速查表
命令类别 |
常用命令 |
功能描述 |
文件操作 |
ls, cp, mv, rm |
列出、复制、移动、删除文件 |
目录操作 |
mkdir, rmdir, cd |
创建、删除、切换目录 |
文件内容 |
cat, less, head, tail |
查看文件内容 |
文件查找 |
find, locate |
查找文件 |
文本处理 |
grep, sed, awk |
搜索、编辑、处理文本 |
权限管理 |
chmod, chown |
修改权限和所有者 |
压缩/解压 |
tar, gzip, zip |
文件压缩与解压 |
进程管理 |
ps, top, kill |
查看、监控、终止进程 |
网络工具 |
ping, netstat, curl |
网络诊断和传输 |
系统信息 |
uname, df, free |
查看系统信息和资源 |