8.shell
目录 点击展开目录 目录 文件操作 文件查找与过滤 文件处理 文件压缩 文件权限管理 HDFS操作 文件查看 文件大小统计 文件上传 文本处理 文件读取 文本过滤 高级文本处理 sed 流编辑器 awk 文本处理工具 grep 文本搜索工具 cut 列提取工具 sort 排序工具 uniq 去重工具 综合应用示例 管道操作详解 控制结构 条件判断 分支语句 循环语句 函数定义 信号与异常处理 字符串处理 字符串基本操作 字符串截取与替换 字符串转换 字符串比较与判断 字符串切割生成数组 正则表达式处理 数组操作 数组定义与初始化 索引数组 数组初始化技巧 数组访问与修改 基本访问操作 数组切片操作 数组修改操作 数组遍历 基本遍历方法 高级遍历技巧 数组操作方法 数组搜索与查找 数组排序 数组去重与合并 数组 Map 操作 字符串分割与数组生成 数组排错与兼容性 关联数组 关联数组基础 关联数组操作 关联数组高级应用 数组实用示例 命令行参数处理 日志处理系统 数据处理管道 数学运算 基本算术运算 整数运算 使用let命令 使用expr命令 高级数学运算 浮点数运算 使用awk进行数学运算 数值比较与判断 数值比较操作 数值范围判断 进制转换 不同进制之间的转换 随机数生成 生成各种随机数 数学运算实用示例 统计计算器 数学函数库 单位转换器 进程管理 进程监控与控制 组合查杀实战(精准定位与终止) 后台任务管理 时间处理 日期格式化 时间计算 网络请求 基本网络命令 高级网络操作 curl 高级用法与变量传递 Shell 中向 curl 传递变量的核心原则 基本原则:变量展开 引号使用口诀 不同场景下的变量传递方法 GET 请求(URL 参数) POST 请求(表单数据) POST 请求(JSON 数据) Header 中传递变量 变量包含特殊字符 Shell 数组与 JSON 处理 Shell 数组与字符串的区分 使用 jq 安全生成 JSON 数组与 JSON 的转换 Shell 数组的进阶操作 计算数组交集 判断数组是否"有效" 数组的清洗与过滤 脚本执行环境与常见错误 Bash 与 sh 的关键区别 常见错误:进程替换语法错误 生产脚本的最佳实践 实战案例:geohash 校验脚本链路 完整流程与黄金模板 关键陷阱与防御性编程 jq 常用操作 1. 基础用法 2. 字段提取与访问 3. 数组操作 4. 过滤与转换 (Map & Select) 5. 排序与去重 6. 构造与修改 JSON 7. 高级统计与计算 8. 格式转换 9. 处理 JSON 行文件 (NDJSON) 10. 常用实战场景 终端代理配置 Windows PowerShell代理 Windows CMD代理 Git Bash代理 Mac终端代理 Linux终端代理 代理测试与故障排除 代理管理脚本 Windows 网络诊断 常用命令行工具 网卡信息解读实战 多网卡路由优先级 开发环境 Node.js 管理 系统监控 资源使用监控 日志分析 性能分析 性能测试工具 性能优化技巧 安全操作 权限管理 加密与解密 数据库操作 MySQL操作 PostgreSQL操作 自动化脚本示例 定时备份 批量处理 Windows 常用操作 PowerShell 基础 文件与目录操作 网络操作 进程与系统管理 常用快捷键与技巧 终端复用(tmux) Cloudflare Wrangler 安装与配置 项目管理 开发调试 部署发布 Pages(静态站点/博客部署) 常用资源操作 配置文件 (wrangler.toml) Hugo 安装与版本 本地开发 内容编写 构建发布 配合 Cloudflare Pages(Direct Upload) 主题与模块(常见维护) 主题本地/远程不一致(排查与修复) OpenSkills 安装与配置 技能管理 常用安装源 文件操作 文件查找与过滤 # 查找目录下以8位数字结尾的文件(YYYYMMDD格式) find /path/to/dir -type f -regextype posix-extended -regex '.*[0-9]{8}$' # 检查文件是否存在 if [ ! -f "$file" ]; then echo "File not found: $file" exit 1 fi # 查找最近7天修改过的文件 find /path/to/dir -type f -mtime -7 # 查找大于100MB的文件 find /path/to/dir -type f -size +100M # 查找并删除空文件 find /path/to/dir -type f -empty -delete # 查找特定权限的文件 find /path/to/dir -type f -perm 644 文件处理 # 分割大文件 split -b 10M large_file.txt output_ # 合并文件 cat output_* > combined_file.txt # 按行分割文件 split -l 1000 large_file.txt output_ # 批量重命名文件 rename 's/\.txt$/.md/' *.txt # 将所有.txt文件重命名为.md # 查找重复文件 fdupes -r /path/to/directory # 创建文件链接 ln -s /path/to/original /path/to/link # 软链接 ln /path/to/original /path/to/link # 硬链接 # 查看二进制文件 hexdump -C binary_file | head # 查看文件类型 file filename # 批量替换文件内容 find . -type f -name "*.txt" -exec sed -i 's/old_text/new_text/g' {} \; # 递归创建目录 mkdir -p path/to/nested/directory 文件压缩 # 压缩文件 gzip a.txt # 压缩并删除原文件 gzip -c a.txt # 压缩并保留原文件 # 解压文件 gunzip your_file.txt.gz # tar压缩 tar -czvf archive.tar.gz directory/ # 创建gzip压缩的tar归档 tar -cjvf archive.tar.bz2 directory/ # 创建bzip2压缩的tar归档 # tar解压 tar -xzvf archive.tar.gz # 解压gzip压缩的tar归档 tar -xjvf archive.tar.bz2 # 解压bzip2压缩的tar归档 # zip压缩 zip -r archive.zip directory/ # zip解压 unzip archive.zip 文件权限管理 # 修改文件权限 chmod 755 file.sh # 设置可执行权限 chmod -R 644 dir/ # 递归修改目录下所有文件权限 # 修改文件所有者 chown user:group file.txt chown -R user:group directory/ # 递归修改 # 设置SUID/SGID/Sticky位 chmod u+s file # 设置SUID chmod g+s directory # 设置SGID chmod +t directory # 设置Sticky位 # 复制权限 getfacl source_file | setfacl --set-file=- target_file # 添加ACL权限 setfacl -m u:user:rwx file.txt # 为特定用户添加权限 setfacl -m g:group:rx file.txt # 为特定组添加权限 HDFS操作 文件查看 # 列出HDFS目录下以8位数字结尾的文件 hadoop fs -ls /path/to/dir | awk '$NF ~ /[0-9]{8}$/ {print $NF}' # 使用grep过滤HDFS目录 hadoop fs -ls /data/dept/bi/dim/data | grep -E "[0-9]{8}$" 文件大小统计 # 获取目录文件大小并选择最后一行 hadoop fs -du -h $line | tail -n 1 >> file_size_result.txt 文件上传 ### 多行文件上传 cat <<EOF | hdfs dfs -put - /path/in/hdfs/multiline.txt This is line 1 This is line 2 This is line 3 EOF 文本处理 文件读取 # 遍历文件每一行 file="example.txt" while IFS= read -r line; do echo "$line" done < "$file" # 另一种读取方式 cat "$file" | while read line; do echo "$line" done 文本过滤 # 查看grep过滤结果的前100个字符 grep "关键词" file.txt | cut -c 1-100 # 显示匹配行及其后5行 curl -s "http://localhost:8080/hotsearch" | grep -A 5 "wallpaper-menu" 高级文本处理 sed 流编辑器 基本语法 ...