日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

使用 dialog 和 jq 在 Linux 上編寫高效終端 TUI

來源: 責編: 時間:2023-11-18 17:05:15 254觀看
導讀為何選擇文字用戶界面(TUI)?許多人每日都在使用終端,因此,文字用戶界面Text User Interface(TUI)逐漸顯示出其價值。它能減少用戶輸入命令時的誤差,讓終端操作更高效,提高生產力。以我的個人使用情況為例:我每日會通過家用電腦

qnl28資訊網——每日最新資訊28at.com

qnl28資訊網——每日最新資訊28at.com

為何選擇文字用戶界面(TUI)?

許多人每日都在使用終端,因此,文字用戶界面Text User Interface(TUI)逐漸顯示出其價值。它能減少用戶輸入命令時的誤差,讓終端操作更高效,提高生產力。qnl28資訊網——每日最新資訊28at.com

以我的個人使用情況為例:我每日會通過家用電腦遠程連接到我使用 Linux 系統的實體 PC。所有的遠程網絡連接都通過私有 VPN 加密保護。然而,當我需要頻繁重復輸入命令進行連接時,這種經歷實在令人煩躁。qnl28資訊網——每日最新資訊28at.com

于是,我創建了下面這個 Bash 函數,從而有所改進:qnl28資訊網——每日最新資訊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}

但后來,我發現自己還是頻繁地執行下面這條命令(在一行中):qnl28資訊網——每日最新資訊28at.com

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

這太煩了。更糟糕的是,我的密碼被明文存儲在我的電腦上(我雖然使用了加密驅動器,但這點依然令人不安)。qnl28資訊網——每日最新資訊28at.com

因此,我決定投入一些時間,編寫一個實用的腳本,從而更好地滿足我的基本需求。qnl28資訊網——每日最新資訊28at.com

我需要哪些信息才能連接到遠程桌面?

實際上,要連接到遠程桌面,你只需提供少量信息。這些信息需要進行結構化處理,所以一個簡單的 JSON 文件就能夠滿足要求:qnl28資訊網——每日最新資訊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。下面我要向你展示如何利用它來提取機器列表:qnl28資訊網——每日最新資訊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,試用你的表達式,然后在你的腳本中使用這些表達式。qnl28資訊網——每日最新資訊28at.com

既然已經準備好了連接遠程計算機所需的所有信息,那現在就讓我們來創建一個美觀實用的 TUI 吧。qnl28資訊網——每日最新資訊28at.com

Dialog 的幫助

Dialog 是那些你可能希望早些認識的、被低評估的 Linux 工具之一。你可以利用它構建出一個井然有序、簡介易懂,并且完美適用于你終端的用戶界面。qnl28資訊網——每日最新資訊28at.com

比如,我可以創建一個包含我喜歡的編程語言的簡單的復選框列表,且默認選擇 Python:qnl28資訊網——每日最新資訊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

qnl28資訊網——每日最新資訊28at.com

我們通過這條命令向 dialog 下達了幾個指令:qnl28資訊網——每日最新資訊28at.com

  • 清除屏幕(所有選項都以 -- 開頭)
  • 創建一個帶有標題的復選框(第一個位置參數)
  • 決定窗口尺寸(高度、寬度和列表高度,共 3 個參數)
  • 列表中的每條選項都由一個標簽和一個值組成。

驚人的是,僅僅一行代碼,就帶來了簡潔直觀和視覺友好的選擇列表。qnl28資訊網——每日最新資訊28at.com

關于 dialog 的詳細文檔,你可以在 這里 閱讀。qnl28資訊網——每日最新資訊28at.com

整合所有元素:使用 Dialog 和 JQ 編寫 TUI

我編寫了一個 TUI,它使用 jq 從我的 JSON 文件中提取配置詳細信息,并且使用 dialog 來組織流程。每次運行,我都會要求輸入密碼,并將其保存在一個臨時文件中,腳本使用后便會刪除這個臨時文件。qnl28資訊網——每日最新資訊28at.com

這個腳本非常基礎,但它更安全,也使我能夠專注于更重要的任務

本文鏈接:http://www.www897cc.com/showinfo-26-29283-0.html使用 dialog 和 jq 在 Linux 上編寫高效終端 TUI

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 過去 10 年消費全部免單,美團外賣感謝首位用戶隋蕊

下一篇: OPPO Reno11 系列影像配置、新系統全面曝光,打造超級標準版!

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 余江县| 安达市| 仁布县| 贵南县| 寿光市| 承德县| 贵溪市| 泰宁县| 鄂伦春自治旗| 华蓥市| 姜堰市| 巩义市| 阳东县| 庄浪县| 汉沽区| 平遥县| 沅陵县| 中西区| 抚顺市| 资源县| 上虞市| 溆浦县| 新邵县| 从江县| 洪泽县| 义马市| 宜春市| 雅江县| 凤凰县| 峡江县| 尚义县| 金阳县| 德钦县| 开平市| 望城县| 鸡东县| 嵩明县| 南靖县| 灵台县| 烟台市| 镇坪县|