如何使用dialog和jq在Linux上编写高效终端TUI
如何使用dialog和jq在Linux上编写高效终端TUI
对于许多网友来说如何使用dialog和jq在Linux上编写高效终端TUI的IT知识,下面IT袋网为您详细介绍
许多人每日都在使用终端,因此,文字用户界面(TUI)逐渐显示出其价值。
它能减少用户输入命令时的误差,让终端操作更高效,提高生产力。
以我的个人使用情况为例:我每日会通过家用电脑远程连接到我使用 Linux 系统的实体 PC。
所有的远程网络连接都通过私有 VPN 加密保护。
然而,当我需要频繁重复输入命令进行连接时,这种经历实在令人烦躁。
于是,我创建了下面这个 Bash 函数,从而有所改进:
export REMOTE_RDP_USER="myremoteuser"
function remote_machine() {
/usr/bin/xfreerdp /cert-ignore /sound:sys:alsa /f /u:$REMOTE_RDP_USER /v:$1 /p:$2
}
但后来,我发现自己还是频繁地执行下面这条命令(在一行中):
remote_pass=(/bin/cat/.mypassfile) remote_machine $remote_machine $remote_pass
这太烦了。更糟糕的是,我的密码被明文存储在我的电脑上(我虽然使用了加密驱动器,但这点依然令人不安)。
因此,我决定投入一些时间,编写一个实用的脚本,从而更好地满足我的基本需求。
我需要哪些信息才能连接到远程桌面?
实际上,要连接到远程桌面,你只需提供少量信息。这些信息需要进行结构化处理,所以一个简单的 JSON 文件就能够满足要求:
{"machines": [
{
"name": "machine1.domain.com",
"description": "Personal-PC"
},
{
"name": "machine2.domain.com",
"description": "Virtual-Machine"
}
],
"remote_user": "MYUSER@DOMAIN",
"title" : "MY COMPANY RDP connection"
}
尽管在各种配置文件格式中,JSON 并非最佳选择(例如,它不支持注解),但是 Linux 提供了许多工具通过命令行方式解析 JSON 内容。其中,特别值得一提的工具就是 jq。
下面我要向你展示如何利用它来提取机器列表:
/usr/bin/jq --compact-output --raw-output '.machines[]| .name' \
$HOME/.config/scripts/kodegeek_rdp.json) \
"machine1.domain.com" "machine2.domain.com"
jq 的文档可以在 这里 找到。另外,你也可以直接将你的 JSON 文件复制粘贴到 jq play,试用你的表达式,然后在你的脚本中使用这些表达式。
既然已经准备好了连接远程计算机所需的所有信息,那现在就让我们来创建一个美观实用的 TUI 吧。
Dialog 的帮助
Dialog 是那些你可能希望早些认识的、被低评估的 Linux 工具之一。
你可以利用它构建出一个井然有序、简介易懂,并且完美适用于你终端的用户界面。
比如,我可以创建一个包含我喜欢的编程语言的简单的复选框列表,且默认选择 Python:
相关阅读
-
windows10命令行 win10控制面板命令行是什么详细介绍
为网友们解答win10控制面板命令行是什么详细介绍方面的讲解,关于windows10命令行 win10控制面板命令行是什么详细介绍,下面小编为您详细解答 我们在使用控制面板的时候,总会觉得有些功能
-
U盘装机大师怎么装win8 u盘装机大师怎么装原版系统
本文为你详解U盘装机大师怎么装win8的相关知识,关于U盘装机大师怎么装win8 u盘装机大师怎么装原版系统,接下来就是全面介绍。 很多的用户们想要用U盘装机大师快速的一键安装win8系统但是
-
windows更新失败0x800f0922 win10版本1903升级1909失败0x800f0982怎么解决
全面的为您讲解win10版本1903升级1909失败0x800f0982怎么解决的相关知识,关于win10版本1903升级1909失败0x800f0982怎么解决,接下来分享详细内容。 如果我们在使用安装win101903版本系统的过程中想要升
-
台式电脑怎么安装系统教程 电脑boot一键修复方法
小编为大家说一说台式电脑怎么安装系统教程和电脑boot一键修复方法的相关话题,接下来就是全面介绍。 台式电脑系统重装系统按键操作是什么?重装系统通常会使用U盘或光盘,当我们要使用


