iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些
  • 710
分享到

10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些

2023-06-16 11:06:25 710人浏览 安东尼
摘要

本篇文章为大家展示了10个增加UNIX/linux shell脚本趣味的工具分别是哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。有些误解认为 shell 脚本仅用于 CLI 环境。实际上在 KD

本篇文章为大家展示了10个增加UNIX/linux shell脚本趣味的工具分别是哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

有些误解认为 shell 脚本仅用于 CLI 环境。实际上在 KDE 或 Gnome 桌面下,你可以有效的使用各种工具编写 GUI  或者网络Socket)脚本。shell 脚本可以使用一些 GUI  组件(菜单、警告框、进度条等),你可以控制终端输出、光标位置以及各种输出效果等等。利用下面的工具,你可以构建强壮的、可交互的、对用户友好的  UNIX/Linux bash 脚本。

制作 GUI 应用不是一项困难的任务,但需要时间和耐心。幸运的是,UNIX 和 Linux 都带有大量编写漂亮 GUI 脚本的工具。以下工具是基于 FreeBSD 和 Linux 操作系统做的测试,而且也适用于其他类 UNIX 操作系统。

1、notify-send 命令

notify-send 命令允许你借助通知守护进程发送桌面通知给用户。这种避免打扰用户的方式,对于通知桌面用户一个事件或显示一些信息是有用的。在 Debian 或 ubuntu 上,你需要使用 apt 命令 或 apt-get 命令 安装的包:

sudo apt-get install libnotify-bin

Centos/RHEL 用户使用下面的 yum 命令:

sudo yum install libnotify

Fedora Linux 用户使用下面的 dnf 命令:

`$ sudo dnf install libnotify`In this example, send simple desktop notification from the command line, enter:### 发送一些通知 ###notify-send "rsnapshot done :)"

示例输出:

10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些

notify-send: Shell Script Get Or Send Desktop Notifications

下面是另一个附加选项的代码:

...alert=18000live=$(lynx --dump Http://money.rediff.com/ | grep 'BSE LIVE' | awk '{ print $5}' | sed 's/,//g;s/\.[0-9]*//g')[ $notify_counter -eq 0 ] && [ $live -ge $alert ] && { notify-send -t 5000 -u low -i   "BSE Sensex touched 18k";  notify_counter=1; }...

示例输出:

10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些

Linux / UNIX: Display Notifications From Your Shell Scripts With notify-send

这里:

  • -t 5000:指定超时时间(毫秒) (5000 毫秒 = 5 秒)

  • -u low: 设置紧急等级 (如:低、普通、紧急)

  • -i gtk-dialog-info: 设置要显示的图标名称或者指定的图标(你可以设置路径为:-i /path/to/your-icon.png

关于更多使用 notify-send 功能的信息,请参考 man 手册。在命令行下输入 man notify-send 即可看见:

man notify-send

2、tput 命令

tput 命令用于设置终端特性。通过 tput 你可以设置:

  • 在屏幕上移动光标。

  • 获取终端信息。

  • 设置颜色(背景和前景)。

  • 设置加粗模式。

  • 设置反转模式等等。

下面有一段示例代码:

#!/bin/bash # clear the screentput clear # Move cursor to screen location X,Y (top left is 0,0)tput cup 3 15 # Set a foreground colour using ANSI escapetput setaf 3echo "XYX Corp LTD."tput sgr0 tput cup 5 17# Set reverse video modetput revecho "M A I N - M E N U"tput sgr0 tput cup 7 15echo "1. User Management" tput cup 8 15echo "2. Service Management" tput cup 9 15echo "3. Process Management" tput cup 10 15echo "4. Backup" # Set bold modetput boldtput cup 12 15read -p "Enter your choice [1-4] " choice tput cleartput sgr0tput rc

示例输出:

10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些

Linux / UNIX Script Colours and Cursor Movement With tput

关于 tput 命令的详细信息,参见手册:

man 5 terminfoman tput

3、setleds 命令

setleds 命令允许你设置键盘灯。下面是打开数字键灯的示例:

setleds -D +num

关闭数字键灯,输入:

setleds -D -num
  • -caps:关闭大小写定灯

  • +caps:打开大小写锁定灯

  • -scroll:关闭滚动锁定灯

  • +scroll:打开滚动锁定灯

查看 setleds 手册可看见更多信息和选项 man setleds

4、zenity 命令

zenity 命令显示 GTK+ 对话框,并且返回用户输入。它允许你使用各种 Shell 脚本向用户展示或请求信息。下面是一个 whois 指定域名目录服务的 GUI 客户端示例。

#!/bin/bash# Get domain name_zenity="/usr/bin/zenity"_out="/tmp/whois.output.$$"domain=$(${_zenity} --title  "Enter domain" \             --entry --text "Enter the domain you would like to see whois info" ) if [ $? -eq 0 ]then  # Display a progress dialog while searching whois database  whois $domain  | tee >(${_zenity} --width=200 --height=100 \                    --title="whois" --progress \                        --pulsate --text="Searching domain info..." \                                    --auto-kill --auto-close \                                    --percentage=10) >${_out}   # Display back output  ${_zenity} --width=800 --height=600  \         --title "Whois info for $domain" \         --text-info --filename="${_out}"else  ${_zenity} --error \         --text="No input provided"fi

示例输出:

10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些

zenity: Linux / UNIX display Dialogs Boxes From The Shell Scripts

 GTK+ 的组件:

zenity --helpman zenity

5、kdialog 命令

kdialog 命令与 zenity 类似,但它是为 KDE 桌面和 Qt 应用设计。你可以使用 kdialog 展示对话框。下面示例将在屏幕上显示信息:

kdialog --dontagain myscript:nofilemsg --msgbox "File: '~/.backup/config' not found."

示例输出:

10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些

Kdialog: Suppressing the display of a dialog

6、Dialog

Dialog 是一个使用 Shell 脚本的应用,显示用户界面组件的文本。它使用 curses 或者 ncurses 库。下面是一个示例代码:

#!/bin/bashdialog --title "Delete file" \--backtitle "Linux Shell Script Tutorial Example" \--yesno "Are you sure you want to permanently delete \"/tmp/foo.txt\"?" 7 60 # Get exit status# 0 means user hit [yes] button.# 1 means user hit [no] button.# 255 means user hit [Esc] key.response=$?case $response in   0) echo "File deleted.";;   1) echo "File not deleted.";;   255) echo "[ESC] key pressed.";;esac

参见 dialog 手册获取详细信息:man dialog

关于其他用户界面工具的注意事项

UNIX、Linux 提供了大量其他工具来显示和控制命令行中的应用程序,shell 脚本可以使用一些 KDE、Gnome、X 组件集:

  • gmessage - 基于 GTK xmessage 的克隆

  • xmessage - 在窗口中显示或询问消息(基于 X 的 /bin/echo)

  • whiptail - 显示来自 shell 脚本的对话框

  • python-dialog - 用于制作简单文本或控制台模式用户界面的 Python 模块 

7、logger 命令

logger 命令将信息写到系统日志文件,如:/var/log/messages。它为系统日志模块 syslog 提供了一个 shell 命令行接口:

logger "MySQL database backup failed."tail -f /var/log/messageslogger -t Mysqld -p daemon.error "Database Server failed"tail -f /var/log/syslog

示例输出:

Apr 20 00:11:45 vivek-desktop kernel: [38600.515354] CPU0: Temperature/speed nORMalApr 20 00:12:20 vivek-desktop mysqld: Database Server failed

参见 《如何写消息到 syslog 或 日志文件》 获得更多信息。此外,你也可以查看 logger 手册获取详细信息:man logger

8、setterm 命令

setterm 命令可设置不同的终端属性。下面的示例代码会强制屏幕在 15 分钟后变黑,监视器则 60 分钟后待机。

setterm -blank 15 -powersave powerdown -powerdown 60

下面的例子将 xterm 窗口中的文本以下划线展示:

setterm -underline on;echo "Add Your Important Message Here"setterm -underline off

另一个有用的选项是打开或关闭光标显示:

setterm -cursor off

打开光标:

setterm -cursor on

参见 setterm 命令手册获取详细信息:man setterm

9、smbclient:给 MS-windows 工作站发送消息

smbclient 命令可以与 SMB/CIFS 服务器通讯。它可以向 MS-Windows 系统上选定或全部用户发送消息。

smbclient -M WinXPPro <<eofMessage 1Message 2.....EOF

echo "${Message}" | smbclient -M salesguy2

参见 smbclient 手册或者阅读我们之前发布的文章:《给 Windows 工作站发送消息》:man smbclient

10、Bash 套接字编程

在 bash 下,你可以打开一个套接字并通过它发送数据。你不必使用 curl 或者 lynx 命令抓取远程服务器的数据。bash 和两个特殊的设备文件可用于打开网络套接字。以下选自 bash 手册:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. /dev/tcp/host/port - 如果 host 是一个有效的主机名或者网络地址,而且端口是一个整数或者服务名,bash 会尝试打开一个相应的 TCP 连接套接字。

  3. /dev/udp/host/port - 如果 host 是一个有效的主机名或者网络地址,而且端口是一个整数或者服务名,bash 会尝试打开一个相应的 UDP 连接套接字。

你可以使用这项技术来确定本地或远程服务器端口是打开或者关闭状态,而无需使用 nmap 或者其它的端口扫描器。

# find out if TCP port 25 open or not(echo >/dev/tcp/localhost/25) &>/dev/null && echo "TCP port 25 open" || echo "TCP port 25 close"

下面的代码片段,你可以利用 bash 循环找出已打开的端口:

echo "Scanning TCP ports..."for p in {1..1023}do  (echo >/dev/tcp/localhost/$p) >/dev/null 2>&1 && echo "$p open"done

示例输出:

Scanning TCP ports...22 open53 open80 open139 open445 open631 open

下面的示例中,你的 bash 脚本将像 HTTP 客户端一样工作:

#!/bin/bashexec 3<> /dev/tcp/${1:-www.cyberciti.biz}/80 printf "GET / HTTP/1.0\r\n" >&3printf "Accept: text/html, text/plain\r\n" >&3printf "Accept-Language: en\r\n" >&3printf "User-Agent: nixCraft_BashScript v.%s\r\n" "${BASH_VERSION}"   >&3printf "\r\n" >&3 while read LINE <&3Do   # do something on $LINE   # or send $LINE to grep or awk for grabbing data   # or simply display back data with echo command   echo $LINEdone

关于 GUI 工具和 cron 任务的注意事项

如果你 使用 crontab 来启动你的脚本,你需要使用 export DISPLAY=[用户机器]:0 命令请求本地显示或输出服务。举个例子,使用 zenity 工具调用 /home/vivek/scripts/monitor.stock.sh

@hourly DISPLAY=:0.0 /home/vivek/scripts/monitor.stock.sh

上述内容就是10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网操作系统频道。

--结束END--

本文标题: 10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些

本文链接: https://www.lsjlt.com/news/283428.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些
    本篇文章为大家展示了10个增加UNIX/Linux Shell脚本趣味的工具分别是哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。有些误解认为 shell 脚本仅用于 CLI 环境。实际上在 KD...
    99+
    2023-06-16
  • Java架构师与开发者提高效率的10个工具分别是哪些
    Java架构师与开发者提高效率的10个工具分别是哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java 受到全球百万计开发者的追捧,已经演变为一门出色的编程语言。最终,...
    99+
    2023-06-17
  • 10个常见的Linux终端仿真器分别是哪些
    10个常见的Linux终端仿真器分别是哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。默认情况下,所有的 Linux 发行版都已经预装了“终端terminal...
    99+
    2023-06-15
  • Linux系统中sudo命令的10个技巧分别是哪些
    今天就跟大家聊聊有关Linux系统中sudo命令的10个技巧分别是哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。sudo 命令与安全策略配合使用,默认安全策略是 sudoers,...
    99+
    2023-06-16
  • Linux服务器上必备的4个开源工具分别是哪几个
    Linux服务器上必备的4个开源工具分别是哪几个,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. SambaSamba是种自由软件,用来让UNIX系列的操作系统与微软Wi...
    99+
    2023-06-15
  • Linux系统中五款好用的日志分析工具分别是哪些
    这期内容当中小编将会给大家带来有关Linux系统中五款好用的日志分析工具分别是哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。监控网络活动是一项繁琐的工作,但有充分的理由这样做。例如,它允许你查找和调查...
    99+
    2023-06-05
  • 为PHP开发者准备的12个调试工具分别是哪些
    本篇文章为大家展示了为PHP开发者准备的12个调试工具分别是哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。PHP是在实践中发展迅速并被最多使用的脚本语言;包含了诸如详细的文档、庞大的社区、无数可...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作