博客
关于我
几个增加 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 为什么需要两阶段提交?
查看>>
mysql 为某个字段的值加前缀、去掉前缀
查看>>
mysql 主从
查看>>
mysql 主从 lock_mysql 主从同步权限mysql 行锁的实现
查看>>
mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
查看>>
mysql 主从关系切换
查看>>
MYSQL 主从同步文档的大坑
查看>>
mysql 主键重复则覆盖_数据库主键不能重复
查看>>
Mysql 事务知识点与优化建议
查看>>
Mysql 优化 or
查看>>
mysql 优化器 key_mysql – 选择*和查询优化器
查看>>
MySQL 优化:Explain 执行计划详解
查看>>
Mysql 会导致锁表的语法
查看>>
mysql 使用sql文件恢复数据库
查看>>
mysql 修改默认字符集为utf8
查看>>
Mysql 共享锁
查看>>
MySQL 内核深度优化
查看>>
mysql 内连接、自然连接、外连接的区别
查看>>
mysql 写入慢优化
查看>>
mysql 分组统计SQL语句
查看>>