linux 图形界面下如何看到shell脚本的输出

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 图形界面下如何看到shell脚本的输出相关的知识,希望对你有一定的参考价值。

开个模拟终端。英文叫terminal,我用的是lilyterm。此外什么gnome,xfce4,kde都有自带的。在模拟终端里面执行脚本就看得到输出了追问

我的意思是在图形界面下双击运行了脚本,如何能看到脚本的输出呢?我有个设想,就是在脚本中做一个设置,脚本一运行就自动打开一个终端什么的,然后把所有输出定向到这个终端里。但不知如何做。

追答

这个,应该要靠wm的配置,fvwm应该做的到,定义一下双击时判断文件类型,不过这貌似会把二进制和脚本都归类一起。然后你开程序的话也不得不开终端了。。。。其他wm就不知道了。况且开个终端又不会怀孕~~~~~~~~

参考技术A 如果你是红帽子的话,可以同过命令:cat /etc/shells 查看能够使用的shell程序的列表!!
默认使用的shell是:/bin/bash
参考技术B 看不到

确定用户是否在当前tty上运行图形界面

shell脚本是否可以确定用户是否在用户工作的相同tty上运行图形界面?

也许这甚至不可能?

编辑:

我正在尝试编写一个shell脚本,当用户在与用户正在处理的tty相同的tty上运行窗口管理器时,该脚本显示GUI(通过使用zenity / yad)。否则,脚本将回退到普通的命令行界面。

答案

尝试通过检查TERM的输出来检查变量tset -q或更准确。终端的类型取决于它。在普通的控制台中,它只是Linux,而在大多数终端中它是xterm。

其他的事情是检查变量$DISPLAY。大多数情况下,当您在GUI终端上运行时,它会被设置。

另一答案

一种可靠的方法是抛弃一些将立即终止的GUI进程,并检查退出状态。 xterm通常是可用的(虽然最新的Linux Mint默认没有它)并且可以立即退出:

xterm -iconic -e echo test && echo "Has a display"

-iconic应该防止xterm在显示器上闪烁(我希望这是一个通用选项)。

由于您的环境具有zenity,如果无法使用显示,它也将返回错误状态,并输出错误消息。你可以在bash中检测到这个:

echo "" | zenity --progress --text "Display test" --auto-close 2> /dev/null
if [ $? -eq 0 ]
then 
   echo "has display"
fi

不幸的是,进度对话框瞬间在显示屏上闪烁。这具有检测zenity本身是否不可用的额外好处。

我过去使用过xterm方法。

另一答案

你真正想要测试的是是否存在tty或pseudotty。

在linux上,使用命令tty。它将返回0并输出tty文件位置,或返回1(false)并在不是tty时打印not a tty

tset -q命令可以返回一个TERM(例如我的情况下为linux)。

以上是关于linux 图形界面下如何看到shell脚本的输出的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本相关知识

shell & dialog

确定用户是否在当前tty上运行图形界面

Linux下Dialog+Shell三层目录专业规范跳板机脚本

LINUX下shell脚本如何执行 sql脚本 到DB2数据库?

求助:如何在shell脚本中添加写日志的功能