博客
关于我
几个增加 linux shell 脚本趣味的工具
阅读量:662 次
发布时间:2019-03-15

本文共 3016 字,大约阅读时间需要 10 分钟。

使用 notify-send、tput、setleds、zenity、kdialog 和 Dialog etc. 构建 Linux / UNIX_USERSPACE Shell 脚本

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

1. notify-send 命令

notify-send 命令允许你借助通知守护进程向用户发送桌面通知。这对于通知用户某个事件或显示信息非常有用。在 Debian 或 Ubuntu 上,你需要安装 libnotify-bin 包:

sudo apt-get install libnotify-bin

如果你使用 RHEL,请运行:

sudo yum install libnotify

Fedora Linux 用户请使用下列命令:

sudo dnf install libnotify

以下是一个简单的示例,用于从命令行发送桌面通知:

notify-send "rsnapshot done :)"

示例输出可以根据你选择的参数不同有所变化,例如:

  • -t 5000:指定超时时间(毫秒),例如 5 秒。
  • -u low:设置紧急等级(如:低、普通、紧急)。
  • -i gtk-dialog-info:设置要显示的图标名称或路径。

更多关于 notify-send 的功能信息,请参考其手册。

2. tput 命令

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

  • 实现终端光标移动。
  • 获取终端信息。
  • 设置颜色(背景和前景)。
  • 设置加粗模式。
  • 设置反转模式等。

以下是一个实例,展示了如何在 shell 脚本中设置颜色和光标位置:

#!/bin/bashcleartput cup 3 15  # 光标移动到 (3,15) 位置tput setaf 3  # 设置前景颜色为红色echo "Welcome to XYX Corp LTD." tput sgr0  # 恢复默认颜色设置tput cup 5 17  # 光标移动到新的位置tput reve  # 启用反转模式echo "Main Menu" tput sgr0tput cup 7 15echo "Here is a sample menu:"tput cup 8 17echo "1. User Management"tput cup 9 17echo "2. Service Management"tput cup 10 17echo "3. Process Management"tput cup 12 17read -p "Enter your choice [1-4] " choicetput cleartput sgr0tput rc

3. setleds 命令

setleds 命令允许你设置键盘灯。以下是一个例子,打开和关闭数字键灯:

setleds -D +num  # 打开数字键灯setleds -D -num  # 关闭数字键灯

setleds 还支持其他选项,如大小写锁定灯和滚动锁定灯。更多信息请参考手册。

4. zenity 命令

zenity 是一个基于 GTK+ 的工具,允许你在 shell 脚本中添加对话框、信息框和aredbox 对话框。下面的示例用于实现简单的域名查询 GUI 客户端:

#!/bin/bashdomain=$(zenity --title "Enter domain" --entry --text "Enter the domain you would like to see whois info" )if [ $? -eq 0 ]; then  whois $domain | tee >(/tmp/whois.output.$(date +%s)) &>(${zenity --width=200 --height=100 --title="whois" --progress --pulsate --text="Searching domain info..." --auto-kill --auto-close --percentage=10}) zenity --width=800 --height=600 --title "Whois info for $domain" --text-info --filename="/tmp/whois.output.$(date +%s)"else  zenity --error --text="No input provided" fi

5. kdialog 命令

kdialog 与 zenity 类似,但它是为 KDE 桌面和 Qt 应用设计的。以下是一个示例,用于显示信息:

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

6. Dialog 命令

Dialog 命令使用 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

对话框会返回一个退出状态(0 表示用户点击了“是”,1 表示用户点击了“否”,255 表示用户按了 Esc 键)。

7. logger 命令

logger 命令将信息写入系统日志文件,例如 /var/log/messages。以下是一个示例:

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

8. setterm 命令

setterm 命令用于设置终端属性。以下是一个示例,用于设置屏幕休眠设置:

setterm -blank 15 -powersave powerdown -powerdown 60

你也可以设置光标显示或关闭:

setterm -cursor off \\ # 关闭光标显示setterm -cursor on   # 打开光标显示

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

如果你使用 cron 将脚本设置为每小时运行,例如,记得在脚本头部设置 DISPLAY=:0.0 以确保图形输出显示在本地屏幕上。

你喜欢使用哪些增加 shell 脚本趣味的 UNIX 工具吗?欢迎在评论区分享!

转载地址:http://ywxmz.baihongyu.com/

你可能感兴趣的文章
MYSQL中 find_in_set() 函数用法详解
查看>>
MySQL中auto_increment有什么作用?(IT枫斗者)
查看>>
MySQL中B+Tree索引原理
查看>>
mysql中cast() 和convert()的用法讲解
查看>>
mysql中datetime与timestamp类型有什么区别
查看>>
MySQL中DQL语言的执行顺序
查看>>
mysql中floor函数的作用是什么?
查看>>
MySQL中group by 与 order by 一起使用排序问题
查看>>
mysql中having的用法
查看>>
MySQL中interactive_timeout和wait_timeout的区别
查看>>
mysql中int、bigint、smallint 和 tinyint的区别、char和varchar的区别详细介绍
查看>>
mysql中json_extract的使用方法
查看>>
mysql中json_extract的使用方法
查看>>
mysql中kill掉所有锁表的进程
查看>>
mysql中like % %模糊查询
查看>>
MySql中mvcc学习记录
查看>>
mysql中null和空字符串的区别与问题!
查看>>
MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
查看>>
MYSQL中TINYINT的取值范围
查看>>
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>