首頁 > 系統教程 > Linux > 主體

5 個鮮為人知的 Linux 終端機提示和實驗

WBOY
發布: 2024-02-09 23:21:33
轉載
1061 人瀏覽過

作為開發人員,我們往往更願意使用命令列介面(CLI)而不是圖形使用者介面(GUI)來進行程式設計相關的活動。當然,雖然大部分 GUI 提供了鍵盤快捷鍵,但我們在使用 GUI 時卻經常需要透過多次點擊滑鼠和移動滑鼠來完成任務。相反,CLI 互動方式激勵開發人員透過使用只需要手放在鍵盤上的命令和腳本語言來完成幾乎所有任務。此外,我們甚至能透過組合多個命令來提高開發活動的效率。

身為程式設計師,我們通常使用 Unix 或 Linux 指令來執行各種操作,例如檔案處理、系統設定和網路請求處理。

如果你能超越已知的 CLI 命令,了解終端內部結構的更多信息,那麼你就可以學習更多獨特的方法來提高終端界面的生產力和信心。本文將透過實​​際實驗,解釋一些鮮為人知的與終端相關的概念。

將內容傳送到另一個終端機視窗

#程式設計師在他們的電腦上使用多個實體螢幕來同時進行多項開發活動。一些程式設計師在這些螢幕上打開多個終端機視窗。同時,一些程式設計師通常在同一個實體螢幕上使用多個終端機視窗。如果我們需要將特定命令的輸出傳送到另一個現有的終端機視窗怎麼辦?

每個 GUI 終端程式實例都連接到一個稱為偽終端檔案的裝置檔案。這些偽終端檔案可協助 GUI 終端從子程序發送和擷取 I/O 資料。打開終端機視窗並輸入以下命令以查看所有可用的偽終端設備:

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                   
⚡ ls /dev/pts
0  ptmx
登入後複製
5 个鲜为人知的 Linux 终端提示和实验

如果您只打開一個終端機窗口,您將看到兩個設備檔案:ptmx0。目前終端使用/dev/pts/0檔案處理進程的I/O資料-您可以使用tty找到目前的偽終端。例如,如果目前終端的偽終端是/dev/pts/0,下面的指令會列印一些文字到目前終端本身:

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                   
⚡ echo "Hello!Linux迷 www.linuxmi.com " > /dev/pts/0
Hello!Linux迷 www.linuxmi.com
登入後複製
5 个鲜为人知的 Linux 终端提示和实验

使用這個實驗概念,現在您可以將命令輸出直接發送到另一個現有終端窗口,反之亦然,如下所示。

5 个鲜为人知的 Linux 终端提示和实验

在兩個終端機視窗之間發送命令輸出

有效地重新載入 .bashrc 定義

如果我們透過終端REPL定義別名和環境變量,當我們從終端退出時,這些配置將被刪除。因此,Bash 解釋器提供.bashrc檔案以新增所有啟動腳本定義。每當你用 Bash 開啟一個新的終端視窗時,.bashrc腳本就會被執行-所以我們可以在那裡加入永久別名、環境變數和全域函數。

我们经常需要在开发工具配置过程中更新这个启动脚本。您通常如何使用新的启动脚本版本更新您的终端?一些程序员经常进入bash打开一个新的 Bash 解释器实例,但它会创建一个资源密集型进程链,如下所示:

5 个鲜为人知的 Linux 终端提示和实验

GNOME 系统监视器上的 Bash 进程链

有两种主要方法可以.bashrc有效地重新加载文件。第一种方法是使用内置source命令,如下所示。

source ~/.bashrc
登入後複製

上面的命令再次执行.bashrc脚本。第二种方法是用内置exec命令替换当前的 shell 实例。

exec bash
登入後複製

上述两种方式都比bash手动输入或打开新的终端窗口更好、更有效率。

通过铃声和警报了解任务完成情况

程序员在终端窗口中运行各种命令。有时,他们会输入即时命令,例如lspwd。但是,有时,他们必须使用终端命令启动长时间运行的任务。例如,由于深度依赖安装,React 应用程序或 React Native 应用程序创建命令通常需要更多时间。

一些程序员通常会输入这些长时间运行的命令并等待完成。同时,一些程序员从事另一项活动,并经常检查长时间运行的命令的状态。让我们找到一种更高效的方式来管理长时间运行的任务。

如果您总是戴耳机或使用扬声器,播放哔声是识别长时间运行命令完成的好方法。看下面的命令

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                   
⚡ sleep 5; printf "\a"
登入後複製
5 个鲜为人知的 Linux 终端提示和实验

上述命令在sleep命令完成后播放哔声。但是,如果有多个长时间运行的命令,而您的扬声器已静音怎么办?然后,我们可以使用预定义的alert别名,如下所示。

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                   
⚡ sleep 5; alert
登入後複製
5 个鲜为人知的 Linux 终端提示和实验

警报 alert 别名alias通知Ubuntu上的命令完成

上面的命令显示了使用先前输入的命令片段完成的任务。

alert别名在大多数 GNU/Linux 发行版中都可用,但如果它不适合您,您可以将以下代码段添加到您的.bashrc文件中以激活它:

# 为长时间运行的命令添加“alert”别名。使用像这样:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
登入後複製
使用终端作为计算器
登入後複製

除了终端、代码编辑器和 Web 浏览器之外,程序员不会经常使用许多 GUI 应用程序。但是,在某些情况下,Web 开发人员倾向于使用像 Postman 这样的 GUI 工具来测试 Web API,而不是像curl这样的命令行工具。

每个 GNU/Linux 操作系统都提供一个 GUI 计算器程序,但大多数程序员并不倾向于将它用于日常计算。如果我们需要进行单位换算或者货币换算,我们可以在搜索引擎中输入它来寻找答案。当我们使用算法解决问题时,我们经常需要进行各种计算。如果你需要计算一个数学表达式——当你处理一个编程任务时怎么办?

bc -l我们可以使用命令(-l启用浮点计算)打开一个命令行计算器。看下面的预览:

5 个鲜为人知的 Linux 终端提示和实验

尽管程序名称是基本计算器basic calculator(也称为bc),但它支持变量定义、复杂表达式和数学函数。如果您需要使用现代语言语法执行数学运算,您还可以将 Python REPL 用作简单的计算器。例如,以下 Python 表达式计算半径为 7 个单位的圆的周长:

2 * math.pi * 7
登入後複製

子shell、命令组合和大括号扩展

Bash 是一种命令语言,因此它提供了许多功能来高效地编写命令并制作更好的自动化脚本。Bash 提供了一种创建子 shell 的方法,我们可以使用它来初始化隔离的脚本执行环境。例如,我们可以更改特定命令的当前工作目录,而不会影响终端上的当前工作目录,如下所示

(cd backend; npm i)
登入後複製

Bash 还允许您更改进程的环境变量。看下面的例子:

PORT=5000 ./linuxmi.py
登入後複製

上述命令PORT只为 Python 脚本执行环境设置环境变量,不更新原始 shell 实例。

有时,我们可以组合几个命令来更快地完成任务。&&我们可以使用、|||和等 Bash 运算符将多个命令连接成一个命令;。命令替换功能还可以帮助我们组合多个命令。例如,我们可以使用以下命令仅将当前目录的文本文件作为参数发送到脚本:

./linuxmi.py `find . -name "*.txt"`
登入後複製

大括号扩展功能有助于根据范围定义生成字符串。例如,{1..5}扩展定义生成一个以空格分隔的整数列表,范围为15。同样,/path/{bin,src}返回以下输出:

/path/bin /path/src
登入後複製

如下图:

5 个鲜为人知的 Linux 终端提示和实验

现在我们可以结合mkdir命令和大括号替换来一次创建多个子目录。

mkdir linuxmi/{linux,debian,ubuntu,fedora}
登入後複製

以上是5 個鮮為人知的 Linux 終端機提示和實驗的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:lxlinux.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板