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

使你的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

运动就在身边,还能体验非物质文化遗产,这个都市运动中心值得老友去打卡作为上海传统文化的重要代表地区,浦东新区三林镇有着众多的非物质文化遗产项目,一直是老友们游览的好去处。说到非遗项目,其中舞龙狮就是当地一项民间传统的体育运动,三林镇更是被命名为中国若无阿里与马云的努力,我们移动支付能做得比美国更好吗?我感到手机移动支付,以前是支付宝,现在加上微信支付,非常方便,有消息说,中国的移动支付比美国还普遍,这是了不起的成就。这其中有阿里的艰苦攻关,功不可没。当然,二维码并不是阿里发明的企业的内部泄密是如何造成的?职场中,内部泄密很多大公司一直在努力加密或开发软件,权限限制等等。例如我们公司吧,是一个与美企合资企业,合资6年后美企倒闭了,但我们的影响不大,公司一直正常运营,并且在国外扩张了几回到90年没有智能机没有无线网你愿意吗?没有手机和网络照样能生活啊,现在科技越来越发达了,手机已经是很普及了,现在低头族太多了,好多人因为没有交流而疏远了很多,就像小时候,没有手机没有网络的时候我们过的比现在开心多了。其快手为何在一些方面干不过抖音?我只是一个最普通的用户,就我的感觉,我看了几天快手真就看不下去了,一,快手操作界面不如抖音。二,快手上几乎全都是拍的段子,段子偶尔看看还行。抖音上社会新闻很多,快手上看了几天全都是人是长寿好还是活到75岁左右为好?长寿的意义是什么?人能活长寿应该是一件好事,但最最理想的是,无论活到多大岁数,能有自理能力,处理自己各方面的生活之类的事,基本上不用人伺候,活多大岁数都是好事。随着时代的飞速发展,人们生活水平不断提绿美城市更宜居来源曲靖日报掌上曲靖县城一角。处处有绿,步步有景。初春的罗平县城气候宜人,漫步街头巷尾,青树翠蔓,芬芳馥郁。近年来,罗平县科学规划统筹安排,深入推进新型城镇化建设,大力实施城市绿化此处花开正艳,宜骑行,推荐路线在这里每年3月中下旬,小昆山镇中德路和光华路两侧的染井吉野樱长势良好,粉白色的花朵簇拥盛开。其中,光华路(昆港公路七号河段)种植的花木品种丰富,包括了加拿大紫荆高杆月季和茶梅株等近50种世外桃源就在渭南民俗文化园渭南桃花源,整体规模非常大,现在由于疫情的问题,游客很少,可以把车开到景区最里面,到酒店住宿处,有个停车场。从紫阳广场进去开始游玩的,里面非常大。有仿古街,小吃街很多小吃都没开门挺古丈县牛角山村再度跻身全国乡村特色产业亿元村来源湘西州政府县市日前,农业农村部公布了2022年全国乡村特色产业产值超亿元村名单,湖南省9个村入选。其中,我州古丈县默戎镇牛角山村上榜,这是该村继2020年跻身全国乡村特色产业亿农民辛苦饲养的土鸡,城里人为何不买了?老人的话,有道理吗?感谢邀请!农民辛苦饲养的土鸡,城里人为何不买了?农民养殖鸡的确辛苦,可能那些养殖户,卖的价格高,尝到了甜头,就大批量养殖,大批量养殖,鸡吃什么呢?养殖鸡少的时候,一般是喂养的纯粮食
联合定制!三星推出GalaxyZFlip4MaisonMargiela定制版2022年8月,三星推出了旗下的一款折叠屏产品,这款折叠屏产品就是GalaxyZFlip4,这款产品是一款竖向折叠屏产品,对于笔者来说,相比于这个,还是更喜欢横向折叠的产品,因为折真牛掰!阿里人用5个案例就彻底讲清了SpringSecurity安全框架安全框架安全框架顾名思义,就是解决系统安全问题的框架。任何应用开发的计划阶段都应该确定一组特定的安全需求,如身份验证授权和加密方式。不使用安全框架之前,我们需要手动处理每个资源的访PCB三星智能手机主基板市场再次重组!日本IBIDEN被排除CINNOResearch产业资讯,三星电子智能手机主基板(HDI)市场将再次重组。曾向三星旗舰智能手机供应HDI的日本IBIDEN将从供应链中排除,预计另一家日本厂商MEIKO的华为服务体系ITR流程体系详解当ITR流程不顺畅时,企业可能会面临客户总是投诉客户复购率低等实际问题,此时企业就需要考虑如何优化ITR流程了。不过不少人可能并不了解什么是ITR流程,ITR流程又可以实际解决哪些苹果放弃中国内存芯片转向三星采购产品受美国贸易禁令的影响,原先想采购长江存储内存芯片的苹果公司,将转向三星采购产品来满足市场需求。未来,三星可能将为苹果生产高达40的iPhone存储芯片。今年4月开始有消息报道称,紫阿曼湾海战,奥斯曼帝国的第四次印度洋远征奥斯曼简史78头条创作挑战赛在奥斯曼帝国苏莱曼时代的强盛时期,奥斯曼土耳其人总共对印度洋发起了四次规模浩大的远征,即1538第一次印度洋远征15511552第二次印度洋远征1553第三次印度洋远盘点!第11代雅阁第4代普锐斯等,这些新车将引入国内!可惜了,本来这几天,是2022广州车展举行的时间,却因为疫情防控不得不无限延期。国内的车展是看不成了,海外的车展倒是如期而至。日前,2022洛杉矶车展正式开幕,全新普锐斯全新雅阁全他是谁?世界杯开幕仪式的无身少年!足球是团结与和平的象征11月21日报道,2022年卡塔尔世界杯开幕式上,相信很多球迷都被和著名演员摩根弗里曼对话的这位只有上半身的少年所震撼,他是谁?他是GhanimAlMuftah,加尼姆阿尔穆夫塔,美国欧洲中国关于工业互联网的比较分析工业革命的发展历史1。0机械化大规模2。0电气化自动化3。0信息化产品标准4。0网络化定制3。0相当于肯德基麦当劳门店全部机械化,全程过程控制,任何一批不合格的产品,都可以追溯到上欧洲投资界高管看好中国目前正是对中国内地进行长期投资大好时机环球时报综合报道香港南华早报21日报道称,德国安联集团旗下的资产管理公司安联投资的首席执行官托比亚斯普罗斯日前接受该报专访时表示,中国不是风险地带,目前正是对中国内地进行长期投资的外交部发言人亚太地区是合作高地,不是博弈棋局新华社北京11月23日电(记者温馨)外交部发言人赵立坚23日表示,亚太地区是合作高地,不是博弈棋局。中方愿同各方一道,加强对话交流,促进团结合作,共同维护地区和平稳定繁荣。当日例行