在 ChatGPT 惊天动地地首次亮相时,我已经在 DevOps 和 SRE 领域工作了大约 5 年,它真正彻底改变了我的工作流程,但我稍后会深入探讨。...最初,我开始要求它用 Python 和 Bash 生成小脚本,只是为了让我的脚趾涉足 OpenAI/ChatGPT 水域。...ChatGPT 编写了一个自动化的 Python 脚本来对 VM 执行内存检查。 结果让我大吃一惊! 它不仅生成了语法完美的代码,而且还向我解释了代码!...在过去的两个月里,当我根本无法在 Google 上找到我需要的东西或只需要快速回答一个问题时,帮助我解除封锁。...最终,在当前版本的 ChatGPT 中,我认为 DevOps 工程师或 SRE 不会很快被取代。
作者:掘金@苏里 https://juejin.im/post/6844904185599623175 前言 工作时间久了,发现越来越离不开 bash 自动化脚本了。...前置条件 本文提到的所有命令只在 MacOS 系统上测试使用,同时都是写入 ~/.bash_profile 然后 source ~/.bash_profile 进行更新应用。...这样你就可以在命令行中快速用 vscode 打开项目。...环境变量 在 vscode 中设置环境变量 VSCODE,然后再在 .bash_profile 中就可以读取变量,并根据此变量设定不同的命令行提示符。...vim 里也能语法高亮,同时编辑 bash 时能自动缩进。
错误处理:在代码中包含错误处理,以确保代码在遇到错误时不会崩溃或产生不可预测的结果。 使用双引号:在引用变量时,使用双引号而不是单引号,以确保变量扩展能够正常工作。...使用“set -u”:使用“set -u”来检查未定义的变量,以避免在引用未定义的变量时产生错误。 这些规范有助于提高 Bash 代码的可读性、可维护性和可靠性。...https://regex101.com/ 测试代码的运行。...后续:增加git hook检测代码 为了让以后新增的代码,也都符合上述规范,我增加了这样一个 pre-commit脚本。这样,每次提交之前,它都会帮我确保代码合规。...shellguide.html' exit 1 fi GIT_PRE_COMMIT_EOF chmod +x .git/hooks/pre-commit fi 总结: 寻找业界规范 遵循规范 修改过去不合规范的代码
图形界面shell就是 GUI shell,而命令行式shell在Windows中为 cmd.exe命令提示字符、在Linux中则是 bash等等。...以后如果不指定,默认shell为命令行式shell,在工作中,最常用的便是Linux系统下的bash。.../bin/bash a={$1} echo "小仙女永远 ${a+18} 岁" 我们执行下面的命令,分别得到下面的结果: bash hello.sh 小仙女永远 18 岁 bash hello.sh...-size n[c]:查找文件长度为n块的文件,带有c时表示文件长度以字节计。 -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。...-mindepth n:在查找文件时,查找当前目录中的第n层目录的文件,然后再在其子目录中查找。 !
1 遍历文件系统可以使用Shell脚本中的循环结构和相关的命令来完成。下面是一个简单的例子,展示如何使用Shell脚本来完成一次文件系统的遍历。#!..." "$file_path"; then echo "字符串存在于文件中"else echo "字符串不存在于文件中"fi调试方法:在脚本文件的开头添加 set -x 行,该命令会将运行的每一行都打印出来...-eq 0 ]]; then # 处理命令执行成功的输出else # 处理命令执行失败的输出fi以上是处理多种可能输出的一些常见方法,在实际编写Shell脚本时,需要根据具体的情况选择合适的方法来处理输出...5 实现多条件判断在Shell脚本中,可以使用if语句来实现多条件判断。...% 2 == 0)); then echo "这是一个偶数"elif ((num % 2 == 1)); then echo "这是一个奇数"else echo "无效输入"fi运行脚本时
文章目录 修剪字符串的前导和尾随空格 修剪字符串中的所有空白并截断空格 在字符串上使用regex 修剪字符串的前导和尾随空格 这是sed、awk、perl和其他工具的替代品。...下面的函数通过查找所有前导和尾随空格并将其从字符串的开头和结尾移除来工作。 内置的:用来代替临时变量。...在字符串上使用regex bash正则表达式匹配的结果可以用于替换大量用例中的sed。 警告: 这是为数不多的依赖于平台的bash特性之一。 bash将使用用户系统上安装的任何regex引擎。...当使用多个捕获组时,需要进行一些修改。...([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))$' # no output (invalid) 脚本中的用法示例: is_hex_color() { if [[ $1 =~ ^
下面的函数通过查找所有前导和尾随空格并将其从字符串的开头和结尾移除来工作。 内置的:用来代替临时变量。...在字符串上使用regex bash正则表达式匹配的结果可以用于替换大量用例中的sed。 警告: 这是为数不多的依赖于平台的bash特性之一。 bash将使用用户系统上安装的任何regex引擎。...当使用多个捕获组时,需要进行一些修改。...示例函数: regex() { # Usage: regex "string" "regex" [[ $1 =~ $2 ]] && printf '%s\n' "${BASH_REMATCH...([a-fA-F0-9]{6}|[a-fA-F0-9]{3}))$' # no output (invalid) 脚本中的用法示例: is_hex_color() { if [[ $1 =~ ^
随着时间推移,当我再次观测 Filebeat 时,发现它已经在正常工作了,但是日志内依旧没有错误输出,找到恢复时间点的最早日志: 2021-05-28T05:55:17.822Z INFO log/input.go...每次启动时都会检查 JSON 文件中的 states 是否需要更新(新增或者删除文件),而当任何一个 state 需要更新, registry file 将会全量序列化(读) → 持久化(写),随着 states...而在当前选择的依赖背压的采集方案 中,我们并不倾向将日志文件留在采集管道中,而是将日志留在原处——机器的磁盘上,然后尽量保证管道的通畅,将日志实时采集到 ES 中。...如果因为硬盘容量限制,删除日志的周期小于产品许诺的日志保存时长,当链路出现堵塞又未能及时处理 → 导致日志丢失 所以我写了一个 删除脚本,在保证清理过期日志的同时,会判断日志文件的句柄使用情况,跳过那些仍在被写入的文件...(其实就是我不会 Bash) 然后我们需要将它跑在集群中的每一个节点上,定期执行清理工作: 首先定义镜像 FROM python:3 RUN apt-get update && apt-get install
前言 在linux中,Bash 脚本是很基础的知识,大家可能一听bash脚本感觉很高大上,像小编当初刚开始学一样,感觉会写脚本的都是大牛。...虽然复杂的bash脚本是很烧脑,但是,当我们熟练的掌握了其中的用法与技巧,再多加练习,总有一天也会成为得心应手的bash脚本大牛。...脚本在生产中的作用,想必小编我不说,大家也都知道,脚本写的6,可以省下很多复杂的操作,减轻自己的工作压力。推荐大家先看看Shell 脚本编程入门最佳实践这篇文章。...then 条件为真的分支代码 else 以上条件都为假的分支代码 fi 逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if。...exp1只执行一次,相当于在for里嵌了while ③ 执行机制: 依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束 列表的表示方法,可以glob 通配符
int从0开始,每次循环处理时,int加1。运行上述脚本,返回数字1到5,然后终止。 #!...let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量,具体可查阅:Bash let 命令。...$a -lt 10 ] do echo $a a=`expr $a + 1` done 运行结果: 输出结果为: 0 1 2 3 4 5 6 7 8 9 跳出循环 在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环...continue echo "游戏结束" ;; esac done 运行代码发现,当输入大于5的数字时,该例中的循环不会结束,语句 echo "游戏结束"... 永远不会被执行。
这一节课主要讲的的是一些shell中进阶工具的使用,虽然在日常工作当中我也经常使用shell命令,有时候也会编写shell脚本,这节课听完仍然让我眼界大开,原来还有这么多神奇的工具和用法。...在bash创建变量,使用语法foo=bar,将会创建一个变量$foo。需要注意foo = bar不会生效,因为它会将foo当成是要执行的程序,而=和bar当成是foo的参数。...返回码可以被用在条件语句当中,使用&&或||,两者都是短路运算符。命令之间也可以使用分号;进行分隔,true命令永远返回0,false命令永远返回1。...注意,脚本并不是一定需要写在bash中才能被终端调用。...当你运行macro时,你当前工作的路径应当以某种方式被保存。当你运行polo时,无论你处在什么路径下,polo都会cd回你之前运行macro的地方。
上述脚本将打印Today's date is 09/18/2017到控制台。 同样的脚本在Python中是这样的: ? 4 – 电子邮件验证 正则表达式也可用于输入验证。 ?...此脚本的输出应为 ? 注意——在现实应用程序中,使用Regex验证电子邮件地址对于许多情况,例如用户注册,是不够的。...一个格式正确的Regex替换可以将繁琐的需要半小时忙碌的工作变成一个漂亮的Regex重构魔法。 不要编写脚本来执行这些操作,试着在你选择的文本编辑器中去做。...当数据源中的边缘情况或次要语法错误导致表达式失败时,将导致最终(或即时)的灾难,出于此目的去编写你自己的正则表达式可能会让你心情沮丧。...过度使用Regex会让你的同事(以及需要工作在你的代码上的任何人)生气恼怒,甚至恨不得揍你一顿。 结论 我希望这是对Regex的许多用途的一个有用的介绍。 还有很多Regex的用例是我们没有涵盖的。
它的工作原理是在LXC容器中运行Android运行时环境,重新创建Android的目录结构作为可安装的循环映像,同时使用本机Linux内核来执行应用程序。...为了更容易在Anbox上安装Google Play商店和Google Play服务,并让它支持ARM应用程序和游戏(使用libhoudini),geeks-r-us.de(链接文章是德语)的人创建了一个自动执行这些任务的脚本...此外,请确保anbox.appmgr在安装Anbox之后和使用此脚本之前至少运行一次,以避免遇到问题。另外,确保在执行下面的脚本时Anbox没有运行(我怀疑这是导致评论中提到的这个问题的原因)。...警告:永远不要在不知道它做什么的情况下运行你没写过的脚本。在运行此脚本之前,请查看其代码。 ...如果未启用Google Play商店和Google Play服务的所有权限,则在尝试登录Google帐户时可能会遇到问题,并显示以下错误消息:“ 无法登录。与Google服务器通信时出现问题。
编写 HTTP 查询脚本时,效率和可维护性是两个关键因素。以下是一些建议,帮助你编写更有效的 HTTP 查询脚本:问题背景通常情况下,我想自动完成 HTTP 查询。...另一个答案中链接的 Mechanize 是一个“浏览器中的库”,并且在 perl、Ruby 和 Python 中有克隆。Perl 是最初版本,如果您不想要浏览器,这似乎是解决方案。...它是一个 GUI 程序,但您仍然可以将查询保存并还原为 XML 文件(或让它们生成)、嵌入、编写测试脚本等。并且它是基于 Java 的(这不是临时优势,但您提到了它)。录制会话的缺点。...7. bash + curl具体取决于您要做什么,最简单的解决方案似乎是 bash + curl。...或者,powershell 在脚本环境中公开了完整的 .NET http 库。9. TwillTwill 非常出色,专为测试而设计。它可以用作脚本、在交互式会话中或在 Python 程序中。10.
正则表达式(简写为 regex 或者 regexp)基本上是定义一种搜索模式的字符串,可以被用来执行“搜索”或者“搜索并替换”操作,也可以被用来验证像密码策略等条件。...expressions(简写为 regex 或者 regexp)基本上是定义一种搜索模式的字符串,可以被用来执行“搜索”或者“搜索并替换”操作,也可以被用来验证像密码策略等条件。...所以如果你使用 Bash 脚本或者创建一个 python 程序时,我们可以使用正则表达式,或者也可以写一个单行搜索查询。...我们在方括号中也可以定义像 或者 作为匹配字符的列表。 这就像正则表达式的 not 操作。当使用 时,它意味着我们的搜索将包括除了方括号内提到的所有字符。...通过这篇基本正则表达式教程,我们现在有一些关于正则表达式如何工作的基本概念。在我们的下一篇教程中,我们将学习一些高级的正则表达式的概念。
在Linux系统中,Shell脚本是实现自动化任务的关键工具,对于提高工作效率具有重要意义。然而,编写无误且高效的Shell脚本对于新手来说是一个挑战,因为很容易忽视一些常见的错误和漏洞。...通过将 ShellCheck 集成到我们的编辑器,我们可以在编写 shell 脚本时即时获得反馈,这样可以更快地发现并修复潜在的问题,从而提高我们的开发效率和代码质量。...$n} # Works in ksh, but not bash/dash/sh #在 ksh 中可用,在 bash/dash/sh 中不可用echo {1.....10} # Works in ksh and bash, but not dash/sh #在 ksh 中可用,在 bash/dash/sh 中不可用echo...-n 42 # Works in ksh, bash and dash, undefined in sh #在 ksh/bash/dash 中可用,在 sh
int从0开始,每次循环处理时,int加1。运行上述脚本,返回数字1到5,然后终止。 #!...Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量,具体可查阅:Bash let 命令 ?...,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:break和continue。...continue echo "游戏结束" ;; esac done 运行代码发现,当输入大于5的数字时,该例中的循环不会结束,语句 echo “Game...永远不会被执行 esac:case的语法和C family语言差别很大,它需要一个esac(就是case反过来)作为结束标记,每个case分支用右圆括号,用两个分号表示break。
更多详情的地址 https://landscape.cncf.io/ 在这里小白以日常工作中常使用到的应用来跟大家简单介绍CNCF里面的一些云原生 1....在图中小白可以了解到,Prometheus的监控数据来源主要分两种,直接从目标exporter中主动抓取数据,或者短期job上传给Pushgateway再由Prometheus主动抓取。...有条件的同学可以在CMDB系统内直接与Consul交互来维护资产,没有条件的同学也可以通过脚本的方式定时同步CMDB数据到Consul,其基本的逻辑如下: CMDB --------------> |...对于普通用户,我们不用对于一些特定的小功能去开发一个exporter,而是通过crontab定时执行脚本的方式产生一些文本让node-exporter来帮助我们暴露指标。...小白举个实用的脚本例子,可以让大家更直观的看到文本收集器的作用,下面这个脚本主要用途为采集主机上磁盘的Uitl值 #!
我想聊的,是一些程序员工作中可以用到的小小技巧和工具,没有用过的朋友如果使用后,应该会感到工作效率有所提升,可是它们都太小太常见,我已经可以想像出我老板看到这篇文章之后的第一反应,必然不是“你真是太棒了...在过去几年的工作中,遇到问题,只要找到一个解决方法,能work就行了,一些似懂未懂的点,也就那么随便的忽略了。于是一而再,再而三的栽进类似的坑里。...直到最近,需要在两个项目下执行编译/安装/复制aar包之类的操作,cd过来cd过去,自己都要烦死了,才终于写了个小脚本,在一个目录下把编译aar,拷贝aar到另一个目录,在另一个目录编译apk,安装编译好的...差不多就是这样的一个小脚本了: ---- #! /bin/bash ./gradlew assembleDebug cd ...../compileDir ---- 且不说相对路径之类的还可以改进的东西,这个脚本能做的事情已经让我很满意了。
领取专属 10元无门槛券
手把手带您无忧上云