ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Introduction to Bash Scripting:用 alias 创建自定义 Bash 命令的实战指南

Introduction to Bash Scripting:用 alias 创建自定义 Bash 命令的实战指南 Introduction to Bash Scripting用 alias 创建自定义 Bash 命令的实战指南【免费下载链接】introduction-to-bash-scriptingFree Introduction to Bash Scripting eBook项目地址: https://gitcode.com/GitHub_Trending/in/introduction-to-bash-scripting在终端里反复敲击一长串命令是每个开发者和系统管理员日常工作中最消耗耐心的事情。本指南取自开源电子书 Introduction to Bash Scripting 的「创建自定义 Bash 命令」章节英文原稿本文基于其葡萄牙语版 ebook/pt_br/content/014-creating-custom-bash-commands.md 展开以「统计 Web 服务器 80/443 端口 TCP 连接数」这一真实运维场景为例带你掌握 Bashalias的创建、使用与持久化理解~/.bashrc、~/.bash_profile等 Shell 配置文件的作用并学会用函数、脚本等方式替代别名实现更复杂的自定义命令。读完本文你将能够为任何高频命令建立自己的「快捷键」显著提升终端操作效率。为什么需要自定义 Bash 命令作为开发者或系统管理员你可能一天中大部分时间都待在终端里。凡是重复性的操作都值得去优化——这正是 Bash 脚本与别名alias存在的意义。创建自定义命令通常有两种方式编写简短的 Bash 脚本把一组命令放进.sh文件通过bash script.sh或直接执行来复用创建别名alias为一个很长的命令定义短名称本质上就是命令的「快捷键」。对于「偶尔用到、但命令很长」的场景别名是最轻量、最直接的解决方案不必为一句命令单独建文件、赋执行权限一条alias语句即可。实战场景统计 80/443 端口的 TCP 连接数当服务器在 80HTTP或 443HTTPS端口上出现连接异常时我们通常需要确认是否有服务正在这些端口上监听当前有多少条 TCP 连接落在这些端口上。下面的netstat命令可以一次性回答这两个问题——统计当前 80 与 443 端口的 TCP 连接数量netstat -plant | grep 80\|443 | grep -v LISTEN | wc -l这条命令由四个环节通过管道|串联而成逐段拆解如下片段作用netstat -plant-p显示进程信息-l显示监听套接字-a显示所有连接-n以数字形式显示地址与端口-t仅显示 TCP 连接grep 80\|443用基本正则匹配包含80或443的行\|表示「或」grep -v LISTEN-v反向过滤排除处于LISTEN监听状态的连接wc -l统计剩余行数即当前活动连接数命令本身并不复杂但每次排查都完整敲一遍显然不划算——尤其是在需要快速定位问题时。这正是别名的用武之地。说明netstat在部分新版发行版中已被ss取代ss -plant参数语义类似具体以你服务器上可用的工具为准。创建第一个别名conn假设我们希望输入connconnections 的缩写就能获得上面那条命令的完整输出只需要执行alias connnetstat -plant | grep 80\|443 | grep -v LISTEN | wc -l这样就定义了一个名为conn的别名它是长命令的「快捷方式」。之后在同一个 Shell 会话中直接运行conn即可得到与长命令完全一致的输出。让输出更友好拼接 echo 提示别名不仅可以指向一条命令还可以组合多条命令。用分号;可以把多条命令拼进同一个别名中例如先输出一行提示信息再执行统计alias connecho Total de conexões na porta 80 e 443: ; netstat -plant | grep 80\|443 | grep -v LISTEN | wc -l此时运行conn你会看到类似下面的输出Total de conexões na porta 80 e 443: 12先有提示文字再是统计数字一眼就能看懂结果含义非常适合在告警排查时快速自报家门。别名的局限性需要注意用alias定义的自定义命令只在当前 Shell 会话中生效。一旦你退出登录logout或关闭终端再重新进入别名就会丢失。要让别名跨会话持久存在必须把它写进 Shell 的配置文件——这就是下一节的内容。让别名永久生效写入 Shell 配置文件为了让别名在每次登录时都自动加载需要把alias语句添加到 Shell 的**配置文件profile file**中。不同的系统、不同的 Shell 加载的文件不一样常见的有文件典型适用场景~/.bashrcUbuntu 等发行版默认的 Bash 交互式 Shell 配置每个新的交互式终端都会读取~/.bash_profile登录 Shelllogin shell读取的配置macOS 及部分 Linux 环境常见~/.profile登录 Shell 的通用配置某些环境没有.bash_profile时会回退读取它~/.zshrc使用 Zsh 作为默认 Shell 时对应的配置文件以 Ubuntu 为例默认是~/.bashrc。用你喜欢的编辑器打开它nano ~/.bashrc滚动到文件底部追加如下一行alias connecho Total de conexões na porta 80 e 443: ; netstat -plant | grep 80\|443 | grep -v LISTEN | wc -l保存并退出编辑器nano中为Ctrl O保存、Ctrl X退出。从此以后即使退出登录再重新登录别名依然存在conn这条自定义命令就真正「永久化」了。立即生效source 命令如果你不想等下次登录可以让当前会话立刻重新加载配置文件source ~/.bashrc也可以写成. ~/.bashrc。执行后当前终端就能直接使用conn了无需重启终端。查看与管理所有别名当你怀疑某些命令行为异常例如ls的默认参数被某个别名改掉了可以列出当前 Shell 中所有已定义的别名alias不带任何参数的alias会输出类似这样的清单alias conn... alias lsls --colorauto alias llls -alF ...常用别名管理命令命令作用alias列出当前 Shell 的所有别名alias namecommand定义临时别名仅当前会话有效unalias name删除指定别名unalias -a删除当前会话的所有别名type name查看name究竟是别名、函数还是可执行文件如果只想临时绕过某个别名、直接执行原始命令可以在命令前加反斜杠例如\ls。深入对比别名、函数与脚本该选哪个原文档的结论部分指出你也可以把一段逻辑写成一个 Bash 脚本放进/usr/bin目录来「注册」全局命令但这通常需要root或sudo权限而别名完全可以在普通用户下使用无需任何提权操作。三者各有适用场景可以这样选择别名alias适合单行命令的简写无需提权配置在~/.bashrc中即可函数function适合需要接收参数、包含条件分支或多步逻辑的命令。定义在~/.bashrc或单独的函数文件中同样无需提权例如function conn_count() { echo Port 80/443 connections: netstat -plant | grep 80\|443 | grep -v LISTEN | wc -l }独立脚本放到/usr/bin或自定义的PATH目录适合可独立分发、供多台服务器复用的完整工具但写入系统目录需要相应权限若没有 root 权限也可以把脚本放到~/bin并把该目录加入$PATH。作为补充参考第 12 章「Bash 函数」 系统讲解了函数的定义与调用第 15 章「编写你的第一个 Bash 脚本」 则展示了如何把变量、函数与系统命令组合成完整的.sh工具脚本值得与本章对照阅读。结合仓库验证多语言章节与代码质量保障在本仓库中本章内容被完整收录于多个语言版本除葡萄牙语外还包括英文 ebook/en/content/014-creating-custom-bash-commands.md、西班牙语 ebook/es/content/014-creating-custom-bash-commands.md、德语 ebook/de/content/014-erstellen-benutzerdefinierter-bash-befehle.md 等这从侧面印证了「创建自定义命令」是 Bash 入门读者普遍需要的基础能力。同时仓库还提供了专门的代码质量校验脚本 scripts/shellcheck-ebook.sh它会自动提取各章节 Markdown 中的bash代码块逐一交给 ShellCheck 做静态检查并跳过故意演示错误或占位符的代码块。这意味着书中包括本章的示例命令都经过了自动化校验你可以放心在真实环境中试用。如果你想自行验证某个别名或脚本片段同样可以用 ShellCheck 这类工具在本地做一次检查。小结通过一个运维实战案例我们完整走过了自定义 Bash 命令的四个关键步骤识别高频长命令以netstat -plant | grep 80\|443 | grep -v LISTEN | wc -l为例用alias创建快捷键alias conn...并可用分号拼接echo提示信息写入配置文件持久化Ubuntu 默认写~/.bashrcmacOS 等环境可能是~/.bash_profile并用source ~/.bashrc立即生效用alias命令随时审查发现命令行为异常时检查现有别名是否覆盖了默认命令。相比把脚本放进/usr/bin别名方案的最大优势是无需 root 或 sudo 权限即可在用户级完成自定义。当需求从「一句话简写」升级为「带参数、带逻辑」时再平滑过渡到 Bash 函数与独立脚本即可。把重复劳动交给别名把时间留给真正有价值的事情。【免费下载链接】introduction-to-bash-scriptingFree Introduction to Bash Scripting eBook项目地址: https://gitcode.com/GitHub_Trending/in/introduction-to-bash-scripting创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表