博客
关于我
几个增加 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 Row_Format 参数讲解
查看>>
mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
查看>>
MySQL Server 5.5安装记录
查看>>
mysql server has gone away
查看>>
mysql slave 停了_slave 停止。求解决方法
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
MYSQL sql语句针对数据记录时间范围查询的效率对比
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql Timestamp时间隔了8小时
查看>>
Mysql tinyint(1)与tinyint(4)的区别
查看>>
mysql union orderby 无效
查看>>
mysql v$session_Oracle 进程查看v$session
查看>>
mysql where中如何判断不为空
查看>>
MySQL Workbench 使用手册:从入门到精通
查看>>
mysql workbench6.3.5_MySQL Workbench
查看>>
MySQL Workbench安装教程以及菜单汉化
查看>>
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>
MySQL _ MySQL常用操作
查看>>
MySQL – 导出数据成csv
查看>>