当前位置:首页 > 科技  > 软件

使用 dialog 和 jq 在 Linux 上编写高效终端 TUI

来源: 责编: 时间:2023-11-18 17:05:15 315观看
导读为何选择文字用户界面(TUI)?许多人每日都在使用终端,因此,文字用户界面Text User Interface(TUI)逐渐显示出其价值。它能减少用户输入命令时的误差,让终端操作更高效,提高生产力。以我的个人使用情况为例:我每日会通过家用电脑

jZc28资讯网——每日最新资讯28at.com

jZc28资讯网——每日最新资讯28at.com

为何选择文字用户界面(TUI)?

许多人每日都在使用终端,因此,文字用户界面Text User Interface(TUI)逐渐显示出其价值。它能减少用户输入命令时的误差,让终端操作更高效,提高生产力。jZc28资讯网——每日最新资讯28at.com

以我的个人使用情况为例:我每日会通过家用电脑远程连接到我使用 Linux 系统的实体 PC。所有的远程网络连接都通过私有 VPN 加密保护。然而,当我需要频繁重复输入命令进行连接时,这种经历实在令人烦躁。jZc28资讯网——每日最新资讯28at.com

于是,我创建了下面这个 Bash 函数,从而有所改进:jZc28资讯网——每日最新资讯28at.com

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}

但后来,我发现自己还是频繁地执行下面这条命令(在一行中):jZc28资讯网——每日最新资讯28at.com

remote_pass=(/bin/cat/.mypassfile) remote_machine $remote_machine $remote_pass

这太烦了。更糟糕的是,我的密码被明文存储在我的电脑上(我虽然使用了加密驱动器,但这点依然令人不安)。jZc28资讯网——每日最新资讯28at.com

因此,我决定投入一些时间,编写一个实用的脚本,从而更好地满足我的基本需求。jZc28资讯网——每日最新资讯28at.com

我需要哪些信息才能连接到远程桌面?

实际上,要连接到远程桌面,你只需提供少量信息。这些信息需要进行结构化处理,所以一个简单的 JSON 文件就能够满足要求:jZc28资讯网——每日最新资讯28at.com

{"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。下面我要向你展示如何利用它来提取机器列表:jZc28资讯网——每日最新资讯28at.com

/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,试用你的表达式,然后在你的脚本中使用这些表达式。jZc28资讯网——每日最新资讯28at.com

既然已经准备好了连接远程计算机所需的所有信息,那现在就让我们来创建一个美观实用的 TUI 吧。jZc28资讯网——每日最新资讯28at.com

Dialog 的帮助

Dialog 是那些你可能希望早些认识的、被低评估的 Linux 工具之一。你可以利用它构建出一个井然有序、简介易懂,并且完美适用于你终端的用户界面。jZc28资讯网——每日最新资讯28at.com

比如,我可以创建一个包含我喜欢的编程语言的简单的复选框列表,且默认选择 Python:jZc28资讯网——每日最新资讯28at.com

dialog --clear --checklist "Favorite programming languages:" 10 30 7/  1 Python on 2 Java off 3 Bash off 4 Perl off 5 Ruby off

jZc28资讯网——每日最新资讯28at.com

我们通过这条命令向 dialog 下达了几个指令:jZc28资讯网——每日最新资讯28at.com

  • 清除屏幕(所有选项都以 -- 开头)
  • 创建一个带有标题的复选框(第一个位置参数)
  • 决定窗口尺寸(高度、宽度和列表高度,共 3 个参数)
  • 列表中的每条选项都由一个标签和一个值组成。

惊人的是,仅仅一行代码,就带来了简洁直观和视觉友好的选择列表。jZc28资讯网——每日最新资讯28at.com

关于 dialog 的详细文档,你可以在 这里 阅读。jZc28资讯网——每日最新资讯28at.com

整合所有元素:使用 Dialog 和 JQ 编写 TUI

我编写了一个 TUI,它使用 jq 从我的 JSON 文件中提取配置详细信息,并且使用 dialog 来组织流程。每次运行,我都会要求输入密码,并将其保存在一个临时文件中,脚本使用后便会删除这个临时文件。jZc28资讯网——每日最新资讯28at.com

这个脚本非常基础,但它更安全,也使我能够专注于更重要的任务

本文链接:http://www.28at.com/showinfo-26-29283-0.html使用 dialog 和 jq 在 Linux 上编写高效终端 TUI

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 过去 10 年消费全部免单,美团外卖感谢首位用户隋蕊

下一篇: OPPO Reno11 系列影像配置、新系统全面曝光,打造超级标准版!

标签:
  • 热门焦点
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • 跑分安卓第一!Redmi K60至尊版8月发布!卢伟冰:目标年度性能之王

    8月5日消息,Redmi K60至尊版将于8月发布,在此前举行的战略发布会上,官方该机将搭载搭载天玑9200+处理器,安兔兔V10跑分超177万分,是目前安卓阵营最高的分数
  • 多线程开发带来的问题与解决方法

    使用多线程主要会带来以下几个问题:(一)线程安全问题  线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所修改,那么对于当前线程而言,该线程
  • 微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • 为什么你不应该使用Div作为可点击元素

    按钮是为任何网络应用程序提供交互性的最常见方式。但我们经常倾向于使用其他HTML元素,如 div span 等作为 clickable 元素。但通过这样做,我们错过了许多内置浏览器的功能。
  • 重估百度丨大模型,能撑起百度的“今天”吗?

    自象限原创 作者|程心 罗辑2023年之前,对于自己的“今天”,百度也很迷茫。“新业务到 2022 年底还是 0,希望 2023 年出来一个 1。”这是2022年底,李彦宏
  • 到手价3099元起!iQOO Neo8 Pro今日首销:安卓性能最强旗舰

    5月23日,iQOO如期举行了新品发布会,全新的iQOO Neo8系列也正式与大家见面,包含iQOO Neo8和iQOO Neo8 Pro两个版本,其中标准版搭载高通骁龙8+,而Pro版更
Top