范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

使你的Bash脚本更具交互性和现代化的5种技巧

  使用这些技巧使您的 Bash 脚本更具交互性和未来感。
  程序员经常使用 Bash 命令语言创建 shell 脚本来自动化执行任务。例如,他们为各种配置、文件操作、生成构建工件以及各种 DevOps 相关活动创建 Bash 脚本。几乎所有类 Unix 或基于 Unix 的操作系统都为用户提供了预装的 Bash 解释器——因此我们可以使用 Bash 编写更多可移植的自动化脚本。
  我们已经知道,Bash 脚本是指使用 Bash 命令语言的语法、内置 Bash 命令和核心操作系统 CLI 程序(如 GNU 核心实用程序)编写一系列命令。标准的 Bash 脚本通常会执行一些命令并在终端上显示纯文本输出。
  但是,我们可以通过几个独特的概念使我们的 Bash 脚本更具未来感和用户友好性。以下概念使用一些鲜为人知的现代 Bash 脚本技术使您的自动化脚本现代化。  给长时间运行的任务显示动画指示
  在某些情况下,我们必须从 Bash 脚本执行长时间运行的命令。有几种方法可以指示长时间运行的任务。最简单易行的方法是使用 echo 命令显示带有三个尾随点(也称为省略号)的消息。但是,这种方法会产生一条静态消息,对用户和开发人员来说交互性和友好性都不是很好。
  我们可以使用核心 Unix 操作系统命令和 Bash 内置命令轻松显示 ASCII 动画。看看下面只有两个动画帧的简单动画:  #!/bin/bash while true; do     # Frame #1     printf "r< Loading..."      sleep 0.5     # Frame #2      printf "r> Loading..."      sleep 0.5  done
  上面的 Bash 脚本在终端上显示了一个无休止的两帧动画。 printf 语句使用 r 转义字符来重置当前行的终端光标。上面的脚本呈现以下基于文本的动画:
  用Bash做一个简单的两帧文字动画,作者截图
  我们可以向动画添加更多帧并显示它,直到使用以下 Bash 脚本完成特定的耗时任务。  #!/bin/bash sleep 5 & pid=$! frames="/ |  -" while kill -0 $pid 2&>1 > /dev/null; do     for frame in $frames;     do         printf "r$frame Loading..."          sleep 0.5     done done printf " "
  上面的脚本显示基于文本的旋转动画,直到 sleep 5 命令完成执行。同样,我们可以为任何长时间运行的任务显示旋转动画,而不是显示带有回显的静态消息。看看下面的预览。
  使用 Bash 的旋转文字动画
  这些基于文本的动画使 CLI 程序更加用户友好和交互,因此大多数现代 CLI 程序都显示这些 ASCII 动画。现在,您知道了如何使用动画使 Bash 脚本现代化——尝试通过更改帧字符列表来创建不同的动画。  Bash 执行过程中显示本机 GUI 通知
  Bash 脚本和 CLI 程序通常为经常使用终端界面的开发人员提供工具。例如,Flutter框架为开发者提供了flutter命令行程序,用于管理Flutter应用和配置Flutter应用开发环境。假设您正在使用 Bash 脚本开发一个长时间运行的命令。如何在用户不看终端输出时显示重要消息?
  所有类 Unix 和基于 Unix 的操作系统都有特殊的命令来显示 GUI 通知。我们可以从 Bash 脚本中调用这些命令来显示本机通知。例如,您可以在基于 GNU/Linux 的操作系统上使用 notify-send 命令,如下所示。  #!/bin/bash sleep 10 notify-send "notify.sh" "Task #1 was completed successfully"
  一些 GNU/Linux 发行版通常提供 notify-send (通知发送工具)的预安装版本。上面的 Bash 脚本会在十秒后显示本机通知。看下面的预览:
  Ubuntu上的原生通知
  macOS 用户可以从 Bash 执行  AppleScript[1]  解释器来显示本机通知,如下所示: #!/bin/bash sleep 10 osascript -e "display notification "Task #1 was completed successfully" with title "notify.sh""
  GUI 通知对于通过长时间运行的脚本或永远运行的后台脚本向用户通知重要事件非常有帮助。  Bash 脚本中的并行执行
  程序员通常使用他们的 Bash 脚本按顺序运行命令。因此,Bash 解释器一条一条地执行每个语句,直到它到达源文件的末尾或退出语句。我们确实可以将这种顺序执行方式改为并行执行,加速自动化脚本。
  首先,我们可以将整个 Bash 脚本分解为几个可以异步运行的独立函数。接下来,我们可以将所有 Bash 函数作为后台任务运行。最后,我们可以使用内置的 wait 命令,让脚本执行过程保持活跃,直到所有异步进程结束执行。
  看下面的示例代码:  #!/bin/bash function task1() {     echo "Running task1..."     sleep 5 } function task2() {     echo "Running task2..."     sleep 5 } task1 & task2 & wait echo "All done!"
  这里我们运行两个并行函数作为后台作业:task1 和 task2。此外,我们使用 wait 内置函数使脚本实例保持活动状态,直到后台作业完成执行。如果您检查脚本的执行时间,您会发现这两个函数都在大约五秒内结束——而不是十秒。
  使用 Bash 显示 GUI 组件
  早些时候,我们讨论了如何通过长时间运行的 Bash 脚本显示 GUI 通知。同样,我们可以显示其他 GUI 组件,如消息框、输入框和文件选择对话框。有时我们必须为非技术的计算机用户构建基于 GUI 的程序。如果您已经了解 Bash 脚本,则无需使用其他 GUI 开发工具来创建简单的 GUI 应用程序——因为我们可以使用 Bash 显示 GUI 元素。
  zenity  程序提供了几个命令来显示来自 GNU/Linux 命令行环境的各种 GUI 元素。例如,我们可以使用以下命令打开一个文件选择对话框。 zenity --file-selection
  大多数基于 GNOME 的 GNU/Linux 操作系统发行版都预装了 Zenity 版本。此外,您也可以在基于 KDE 的 GNU/Linux 发行版上使用 kdialog 命令。
  macOS 用户可以照常调用 AppleScript 解释器。例如,他们可以使用以下命令通过 Bash 脚本显示文件选择对话框。  osascript -e "POSIX path of (choose file)"
  您还可以构建自己的二进制文件(如 Zenity)并显示来自 Bash 脚本的任何 GUI 组件。此外,可以使用  Neutralinojs[2]  通过 Bash 脚本在本机窗口中显示交互式本地/远程 HTML 界面。 使用文本样式使终端输出现代化
  我们经常使用 echo 命令从脚本中输出消息。默认情况下,echo 命令根据默认的终端文本样式打印给定的文本。但是,在某些场景下,我们可以使用基本的用户体验原则,根据当前上下文改进文本样式。例如,我们可以用红色显示一条错误消息。此外,您还可以使用粗体强调段落中的一些关键细节。
  tput  Unix 程序提供了控制当前终端屏幕的命令。它提供了更改终端光标位置、检索终端信息和更改文本样式的命令。我们可以调用带有 echo 命令的 tput 命令来在所有类 Unix 和基于 Unix 的操作系统上打印各种文本样式。
  查看以下打印不同文本样式的示例:  #!/bin/bash bold=$(tput bold) underline=$(tput smul) italic=$(tput sitm) info=$(tput setaf 2) error=$(tput setaf 160) warn=$(tput setaf 214) reset=$(tput sgr0) echo "${info}INFO${reset}: This is an ${bold}info${reset} message" echo "${error}ERROR${reset}: This is an ${underline}error${reset} message" echo "${warn}WARN${reset}: This is a ${italic}warning${reset} message"
  在这里,我们使用 tput 命令为每种文本样式定义了一些变量。最后我们用echo命令执行临时保存的命令,显示不同的文字样式,如下图。
  您可以使用上述方法为您的 Bash 脚本构建您自己的个性化配色方案。  引用链接
  [1] AppleScript:  https://en.wikipedia.org/wiki/AppleScript
  [2] Neutralinojs:  https://github.com/neutralinojs/neutralinojs

气排球垫球的改革技术及其训练方法气排球球质软体积大球网低的特点决定了气排球训练特定的训练技术和训练方法要求。气排球垫球运动作为将休闲与健身相结合的新型运动之一,在近几年逐渐受到运动爱好者的广泛关注。随着人们对身体NBA最新排名76人重返第4灰熊9连胜剑指第一绿军领跑全联盟雄鹿95111热火。三天两相遇,热火完成双杀,球队三人得分上20,反观字母哥继续缺阵,朱霍勒迪显然带队能力进攻能力一般(12分10助攻),雄鹿遭遇两连败。而热火取得3连胜,近11场山东泰山绝杀浙江队获得足协杯冠军中国青年报客户端北京1月15日电(中青报中青网记者郭剑)21!山东泰山凭借第89分钟的绝杀进球,赢得2022中国足协杯决赛冠军完成足协杯三连冠,这也是山东队第8个足协杯冠军,而几乎陈戌源自曝困难压力大!为国足操碎了心,甚至为此患上了抑郁症1月15日,经过近2个月时间的调查,相关部门针对李铁的调查取得了阶段性的进展,相信不久就会有结果!据了解,相关部门已经开启新一轮的调查,中国足坛被搞得人人自危苦不堪言,甚至有人为了22,米兰难求3分!防线被打爆,莱奥队长艰难救主,真没招了?头条创作挑战赛与莱切一战,米兰又被辣到了。开场23分钟,就已经是02落后了,一向充当大腿的特奥,甚至还打进了一粒乌龙球。在自家的禁区内,米兰的防线阵脚大乱,连续多场比赛丢球,好在莱CBA积分变化山东加时胜上海排第4!新疆排第5!1,新疆8378险胜宁波取得3连胜!新疆与宁波在上半场打出超低分!下半场你来我往,最终新疆取胜,排到第五名!法尔超高命中率,防守强悍,10投9中,拿下22135!阿布都沙拉木17分CBA最新排名领头羊保住榜首,辽宁有惊喜,广东赔了夫人又折兵最近的一个比赛日,积分榜排在前面的三支球队同时出战,不过最终的结果却有人欢喜有人愁。虽然积分榜排名前四的球队,并没有太大的变化,但是对于常规赛冠军的争夺来说,形势却发生了微妙的调整晚读让春节有仪式感的小事岁末年初,请不要轻易荒废时光。给生活加点糖,给冬日一束光。试试这几件让春节有仪式感的小事给自己写一封信,为家人制作美食,看一部春节档电影,拍一张全家福照片愿你过得充实有意义。给自己护肾就是保命!冬季补肾养肾的方法都有哪些?中医认为,冬季,阳气潜藏,阴气渐盛。天气渐渐寒冷,寒与肾相应,最易伤害肾的阳气。这对身体造成了两个伤害,一是容易发生腰膝冷痛易感风寒夜尿频多阳痿遗精等疾病二是肾阳气虚又伤及肾阴,肾久置的开水可以喝吗?久置的开水可以喝吗?开水久置以后,其中含氮的有机物会不断被分解成亚硝酸盐。尤其是存放过久的开水,难免有细菌污染,此时含氮有机物分解加速,亚硝酸盐的生成也就更多。饮用这样的水后亚硝酸中医中国栏目首季第4集ampampquot养生ampampquot梗概来源中华中医药学会关于生命的起源人与自然生命的发展规律,以及生命衰老的原因等诸如此类的问题,都是人类永远探究的主题。从清代十朝帝后的医疗档案所载不难看出,清朝宫廷的医疗水平相当之高
为什么湖北武汉与云南昆明相距1500多公里,但方言却几乎相同?这是你一厢情愿而己。重庆市黔江区进入湖北来凤县,再往前就是恩施州府,四川人都认为他们讲四川话,很容易听懂。但你在往前走武汉,武汉话就变化大了,懵懂听音别听词,武汉话音80的音色和语家里给找了劳务派遣的岗位,要去吗?待遇怎么样?很多年轻人不知情,被派遣公司骗了进去,可是万万想不到,他们的父母其实更不知情。说真的,如果不是亲身经历,或者身边的朋友深受其害,谁又能够理解劳务派遣这四个字下面深藏的罪恶?正是因为江苏最发达的四个城市排名为苏州南京无锡南通,你怎么看?我是南通人苏州南京无锡前三毫无争议我们南通第四起码现在还非常非常勉强吧个人感觉咱们南通城市建设人均GDP远远落后于常州和镇江现在排第四基本没什么含金量应该跟常州镇江并列第四差不多还有什么事情是去过奥地利才知道的?来到奥地利才后悔为什么没有早点来,来过奥地利才后悔时间过得太快,还没来得及欣赏就要匆匆离开,奥地利来了真不想走。奥地利初体验工作的缘故曾经到奥地利短期出差半个月,从北京乘坐10个小这个世界上有完美犯罪的案例吗?好吧,我承认我就是完美犯罪的罪犯,因为我被命运所惩罚的时候,我都不知道我犯了什么罪。以上是个玩笑。不过可以看出,完美犯罪的标准其实只有一个无人知晓的犯罪。从我从警多年的经历来看,这40多岁为什么会脑梗塞?要注意什么?作为医生真的发现现在得脑梗死的人年龄越来年轻了,以前真是的是很少发现4050岁人得脑梗死脑出血或者心梗的,近年来这些以前老年人多发的疾病都越来越年轻了,不只是40岁左右,甚至203父母都走了之后,兄弟姐妹就散了基本不来往了,是真的吗?看到这个问题,我的心里是好难受啊!从我的亲身经历来说,父母都走了之后,我和我的大哥大嫂不是基本不来往了,而是彻底不来往了,是断绝了一切关系。我在爸爸的葬礼结束后的第一时间,就把我哥很多人在城里工作生活,为什么就是不愿意把农村户口迁到城里来?土地是农民的生存基础,虽然很多农民到城里工作生活,但是不能把户口迁到城里来,农村户口一迁土地将要被村委会收回的,那就意味着没有生存的依赖了,更没有农村耕地的补贴了。所以,没有哪个到作为高三美术特长生,学校不允许外出集训,必须跟着学校走,强制跟着学校走,这算不算违规行为?这个谈不上违规,只能说是处理方法。得分开看待问题。首先跟着学校走方便照顾,知根知底,学校也可以统一管理,不管是教学还是对学生个人情况都是比较了解,出现特殊情况也可以及时沟通处理。学文化基础很差(初中水平),有一个函授大专和网络教育本科的学历,想考研请问现实吗,该怎样去系统学习?我也是函授大专加网络教育本科,现在已经在备考研究生了,英语是最大的难关关键还是钱的问题,既然参加了两次非全学历提升,应该是明白的。另外本科阶段有没有学位证?完全没有学校肯接收非全学民办中学录取的学生建的学籍和公办一样吗?为什么?谢邀!你这里特别说明了中学建立,这让我有点不是很理解,学生学籍号应从幼儿园入园或小学入学初次采集学籍信息后开始使用,一人一号,籍随人走,基础教育高等教育职业教育成人教育有机衔接,终