跳转至

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 查看系统信息和资源