当前位置:首页 > 技术 > 正文内容

Shell 实用技术速查手册

访客 技术 2026年5月24日 5

本文汇总了 Shell 编程中常见的基础命令、脚本技巧、常见陷阱以及实用工具,帮助开发者在日常工作中更高效地使用 Bash。

常用命令分类

  • 面向新手的 20 个 Linux 命令
  • 面向中级用户的 20 个 Linux 命令
  • 面向高级用户的 20 个 Linux 命令
  • 日常高频命令行使用技巧

速查表与参考手册

脚本编写最佳实践

  • 为脚本提供 --help 选项
  • 运行前检查依赖命令是否存在
  • 不依赖当前工作目录,使用绝对路径或相对引用
  • 优先使用环境变量而非硬编码参数
  • 记录关键操作日志,支持 --silent 模式
  • 显示进度动画(如旋转光标)
  • 输出错误信息时使用颜色区分
  • 遇到错误立即退出(set -e
  • 自动清理临时文件
  • 退出时使用不同的错误码
  • 输出内容末尾增加换行

避免常见陷阱

  • Bash Pitfalls:记录了许多易错用法
  • CRLF 问题:Windows 下创建的脚本文件可能包含回车符(\r),导致变量异常。使用 dos2unixtr -d '\r' 去除

逐行读取文件示例

方法一:使用管道

cat data.txt | while read line; do
  echo "Line: $line"
done

方法二:命令替换(注意:会忽略空行)

for line in $(cat data.txt); do
  echo "Line: $line"
done

方法三:输入重定向(推荐)

while read line; do
  echo "Line: $line"
done < data.txt

正则表达式与通配符

临时文件管理

使用 mktemp 命令创建安全临时文件,避免冲突和权限问题。

tmpfile=$(mktemp /tmp/myapp.XXXXXX)
trap "rm -f $tmpfile" EXIT

Expect 脚本常见问题

错误信息 spawn id exp6 not open 多因 exp_continue 使用不当。以下模式容易导致问题:

expect {
    "yes/no" { send "yes\n"; exp_continue }
    "password" { send "$PASSWORD\n"; exp_continue }
    "Password" { send "$PASSWORD\n" }
}

修复方案:移除冗余的 exp_continue,让期望匹配只执行一次。

学习资源推荐

开发规范参考

  • Shell 风格指南
  • 企业级 Shell 开发规范

思维导图

推荐绘制 Shell 基础知识思维导图,便于快速回顾命令分类、变量、循环、条件判断等核心概念。

标签: Bash

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。