• 自动秒收录
  • 软件:1973
  • 资讯:57980|
  • 收录网站:233899|

IT精英团

5个鲜为人知的Linux终端技巧和实验

5个鲜为人知的Linux终端技巧和实验

浏览次数:
评论次数:
编辑: 景同
信息来源: ITPUB
更新日期: 2022-08-04 21:19:14
摘要

程序员通常倾向于使用命令行界面而不是图形界面来进行与编程相关的活动。尽管大多数GUI都提供键盘快捷键,但我们在使用GUI时经常需要多次单击鼠标和移动。另一方面,CLI交互激励开发人员通过始终

  • 正文开始
  • 相关阅读
  • 推荐作品

程序员通常更喜欢使用命令行界面而不是图形界面来进行编程相关的活动。虽然大部分GUI都提供了键盘快捷键,但是我们在使用GUI时经常需要多次点击和移动鼠标。另一方面,CLI交互激励开发人员使用命令和脚本语法来做几乎任何事情,只要他们的手始终放在键盘上。此外,我们甚至可以通过组合多个命令来提高开发活动的效率。作为程序员,我们使用Unix或Linux命令来执行各种操作,如文件处理、操作系统配置和网络请求处理。如果您不局限于已知的CLI命令,而是更多地了解终端的内部结构,那么您可以学到更多独特的方法来提高终端界面的效率和可信度。在本文中,我将通过实际实验来解释几个鲜为人知的与终端相关的概念。

将内容发送到另一个终端窗口

程序员在他们的计算机上使用多个物理屏幕来同时进行多个开发活动。一些程序员在这些屏幕上打开多个终端窗口。同时,一些程序员通常在同一个物理屏幕上使用多个终端窗口。如果我们需要将特定命令的输出发送到另一个现有的终端窗口,该怎么办?每个GUI终端程序实例都连接到一个称为伪终端文件的设备文件。这些伪终端文件帮助GUI终端发送和捕获来自子进程的I/O数据。打开终端窗口,输入以下命令查看所有可用的伪终端设备:

Linux mi @ Linux mi/home/Linux mi/www . Linux mi.com ls/dev/pts ptmx

如果你只打开一个终端窗口,你会看到两个设备文件:ptmx和。当前终端使用/dev/pts/0文件处理进程——的I/O数据。可以使用tty查找当前的伪终端。例如,如果当前终端的伪终端是/dev/pts/0,下面的命令将向当前终端本身打印一些文本:

Linux mi @ Linux mi/home/Linux mi/www . Linux mi.com echo ' Hello!Linux粉丝www.linuxmi.com'/dev/pts/hello!Linux粉丝www.linuxmi.com

使用这个实验概念,现在您可以将命令输出直接发送到另一个现有的终端窗口,反之亦然,如下所示。

在两个终端窗口之间发送命令输出

有效地重新加载 .bashrc 定义

如果我们通过终端REPL定义别名和环境变量,当我们退出终端时,这些配置将被删除。因此,Bash解释器提供了一个. bashrc文件来添加所有启动脚本定义。每当用Bash打开一个新的终端窗口时。bashrc脚本将在——执行,这样我们可以在那里添加永久别名、环境变量和全局函数。在开发工具的配置过程中,我们经常需要更新这个启动脚本。你通常如何用新的启动脚本版本更新你的终端?一些程序员经常进入bash来打开Bash解释器的一个新实例,但是它会创建一个资源

源密集型进程链,如下所示: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"
上述命令在sleep命令完成后播放哔声。但是,如果有多个长时间运行的命令,而您的扬声器已静音怎么办?然后,我们可以使用预定义的alert别名,如下所示。
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                   ⚡ sleep 5; alert
上面的命令显示了使用先前输入的命令片段完成的任务。警报 alert 别名alias通知Ubuntu上的命令完成该alert别名在大多数 GNU/Linux 发行版中都可用,但如果它不适合您,您可以将以下代码段添加到您的.bashrc文件中以激活它:
# 为长时间运行的命令添加“alert”别名。使用像这样:#   sleep 10; alertalias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[-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

    子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
    如下图:现在我们可以结合mkdir命令和大括号替换来一次创建多个子目录。
    mkdir linuxmi/{linux,debian,ubuntu,fedora}
    OK。感谢 Linux迷 www.linuxmi.com 的辛勤付出,点个赞吧。
    标签:终端 命令 多个
    AI降维来袭 世界上几乎所有已知的蛋白质结构都是开源的!
    « 上一篇 2022-08-04
    • AI降维来袭 世界上几乎所有已知的蛋白质结构都是开源的!
      1阅读 0条评论 个赞
      转自:机器之心科学界已知的几乎所有蛋白质结构,都在这里了。蛋白质是生命的基础构件,它们由氨基酸链组成,折叠成不同的复杂形状。蛋白质的功能通常由其3D结构决定。如果我们了解蛋白质的折叠方式,就可以开……
    • 解决常见的前端问题:竞争条件
      0阅读 0条评论 个赞
      以下文章来源于公众号-腾讯IMWeb前端团队,作者fly|导语竞态条件一词翻译自英语"raceconditions"。当我们在开发前端web时,最常见的逻辑就是从后台服务器获取并处理数据然后……
    • Python神操作!无序的文件重命名编号!
      0阅读 0条评论 个赞
      最近有位读者朋友遇到了一个小问题,私聊找我答疑。感觉也会有其他同学会遇到,所以干脆分享出来。如下图所示,在本地文件夹中有这样一堆视频文件,在这种情况下并不是乱序的。但是将其上传到网盘中后,就会经常变成……
    • 老司机的指示:请接受这份操作保养故障排除指南
      0阅读 0条评论 个赞
      1.故障处理原则故障处理的原则只有两个:以恢复业务优先及时升级1.1恢复业务优先恢复业务优先是指,不管在任何情况下,也不管任何级别的故障,都要先做到恢复业务,这个和故障定位不同,也有很多人会产生歧义,……
    • 众核/多核处理的软件架构
      0阅读 0条评论 个赞
      以下文章来源于公众号-车端,作者初光摘要:当与分布式微内核操作系统结合使用时,当今的高效众核处理器可以赋予自治系统类似人类的技能。今天的自主机器和先进的工业自动化越来越被期望执行人类特别擅长的功能,例……
    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表
    最近发布资讯
    更多