ホームページ > 記事 > システムチュートリアル > 5 つのあまり知られていない Linux ターミナルのヒントと実験
開発者として、私たちはプログラミング関連のアクティビティを実行するために、グラフィカル ユーザー インターフェイス (GUI) ではなくコマンド ライン インターフェイス (CLI) を使用することを好むことがよくあります。もちろん、ほとんどの GUI にはキーボード ショートカットが用意されていますが、GUI を使用する場合、タスクを完了するためにマウスを複数回クリックして移動する必要があることがよくあります。代わりに、CLI 対話スタイルにより、開発者はキーボードを操作するだけでコマンドとスクリプト言語を使用して、ほぼすべてのタスクを実行することができます。さらに、複数のコマンドを組み合わせることで、開発作業をより効率化することもできます。
プログラマーとして、私たちは通常、Unix または Linux コマンドを使用して、ファイル処理、システム構成、ネットワーク要求処理などのさまざまな操作を実行します。
既知の CLI コマンドを超えて端末の内部についてさらに学ぶことができれば、端末インターフェイスに対する生産性と信頼性を向上させるためのよりユニークな方法を学ぶことができます。この記事では、あまり知られていない端末関連の概念を実践的な実験を通して説明します。
プログラマは、コンピュータ上の複数の物理画面を使用して、複数の開発作業を同時に実行します。プログラマの中には、これらの画面で複数の端末ウィンドウを開く人もいます。また、一部のプログラマは、同じ物理画面上で複数の端末ウィンドウを使用することがよくあります。特定のコマンドの出力を別の既存のターミナル ウィンドウに送信する必要がある場合はどうすればよいでしょうか?
各 GUI 端末プログラム インスタンスは、擬似端末ファイルと呼ばれるデバイス ファイルに接続されます。これらの疑似端末ファイルは、GUI 端末が子プロセスから I/O データを送信およびキャプチャするのに役立ちます。ターミナル ウィンドウを開き、次のコマンドを入力して、使用可能なすべての疑似ターミナル デバイスを表示します:
リーリー ターミナル ウィンドウだけを開くと、ptmx
と 0
という 2 つのデバイス ファイルが表示されます。現在の端末は /dev/pts/0 ファイルを使用してプロセスの I/O データを処理します。tty
を使用して現在の疑似端末を見つけることができます。たとえば、現在の端末の擬似端末が /dev/pts/0
の場合、次のコマンドは現在の端末自体にテキストを出力します。
リーリー
2 つのターミナル ウィンドウ間でコマンド出力を送信する
.bashrc ファイルを提供します。 Bash で新しいターミナル ウィンドウを開くたびに、
.bashrc スクリプトが実行されるため、そこに永続的なエイリアス、環境変数、グローバル関数を追加できます。
我们经常需要在开发工具配置过程中更新这个启动脚本。您通常如何使用新的启动脚本版本更新您的终端?一些程序员经常进入bash
打开一个新的 Bash 解释器实例,但它会创建一个资源密集型进程链,如下所示:
GNOME 系统监视器上的 Bash 进程链
有两种主要方法可以.bashrc
有效地重新加载文件。第一种方法是使用内置source
命令,如下所示。
source ~/.bashrc
上面的命令再次执行.bashrc
脚本。第二种方法是用内置exec
命令替换当前的 shell 实例。
exec bash
上述两种方式都比bash
手动输入或打开新的终端窗口更好、更有效率。
程序员在终端窗口中运行各种命令。有时,他们会输入即时命令,例如ls
和pwd
。但是,有时,他们必须使用终端命令启动长时间运行的任务。例如,由于深度依赖安装,React 应用程序或 React Native 应用程序创建命令通常需要更多时间。
一些程序员通常会输入这些长时间运行的命令并等待完成。同时,一些程序员从事另一项活动,并经常检查长时间运行的命令的状态。让我们找到一种更高效的方式来管理长时间运行的任务。
如果您总是戴耳机或使用扬声器,播放哔声是识别长时间运行命令完成的好方法。看下面的命令
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com ⚡ sleep 5; printf "\a"
上述命令在sleep
命令完成后播放哔声。但是,如果有多个长时间运行的命令,而您的扬声器已静音怎么办?然后,我们可以使用预定义的alert
别名,如下所示。
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com ⚡ sleep 5; alert
警报 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
启用浮点计算)打开一个命令行计算器。看下面的预览:
尽管程序名称是基本计算器basic calculator(也称为bc
),但它支持变量定义、复杂表达式和数学函数。如果您需要使用现代语言语法执行数学运算,您还可以将 Python REPL 用作简单的计算器。例如,以下 Python 表达式计算半径为 7 个单位的圆的周长:
2 * math.pi * 7
“
Bash 是一种命令语言,因此它提供了许多功能来高效地编写命令并制作更好的自动化脚本。Bash 提供了一种创建子 shell 的方法,我们可以使用它来初始化隔离的脚本执行环境。例如,我们可以更改特定命令的当前工作目录,而不会影响终端上的当前工作目录,如下所示
(cd backend; npm i)
Bash 还允许您更改进程的环境变量。看下面的例子:
PORT=5000 ./linuxmi.py
上述命令PORT
只为 Python 脚本执行环境设置环境变量,不更新原始 shell 实例。
有时,我们可以组合几个命令来更快地完成任务。&&
我们可以使用、||
、|
和等 Bash 运算符将多个命令连接成一个命令;
。命令替换功能还可以帮助我们组合多个命令。例如,我们可以使用以下命令仅将当前目录的文本文件作为参数发送到脚本:
./linuxmi.py `find . -name "*.txt"`
大括号扩展功能有助于根据范围定义生成字符串。例如,{1..5}
扩展定义生成一个以空格分隔的整数列表,范围为1
到5
。同样,/path/{bin,src}
返回以下输出:
/path/bin /path/src
如下图:
现在我们可以结合mkdir
命令和大括号替换来一次创建多个子目录。
mkdir linuxmi/{linux,debian,ubuntu,fedora}
以上が5 つのあまり知られていない Linux ターミナルのヒントと実験の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。