unix和linux的核心结构,每个开发人员都应该知道的

人气:392 ℃/2024-04-06 22:52:58

大多数使用unix或类Unix操作系统的开发人员喜欢通过终端来指示计算机。它们通常使用标准(POSIX) Unix/Linux命令和其他系统命令来处理文件操作、系统配置和进程控制。程序员努力遵循各种命令行提示来节省时间,例如使用终端键盘快捷方式、设置别名和使用命令组合。当您使用终端和shell脚本时,将多个Unix/Linux命令与逻辑、连接或管道操作符组合在一起是提高生产力的好方法。

在这个故事中,我将解释在您的日常编程活动和shell脚本开发中可以使用的命令组合技术和几种命令组合。

命令组合技术

大多数情况下,我们使用Bash作为终端命令解释器,输入一个命令并按回车键来执行它。例如,我们经常使用mkdir并按回车键,然后输入cd以更改目录。Bash(以及其他命令行解释器,例如Z shell)支持将命令与各种操作符组合在一起,因此我们可以使用它们来合并多个命令并生成一个命令,以提高编程效率。

看看下面的命令拼接技术:

让我们看看如何在日常的Unix/Linux命令中使用这些命令连接操作符!

浏览命令行历史并重新运行历史项

程序员通常不会频繁地改变或放弃开发环境,因此他们经常不得不重新运行之前输入的命令。如果您需要再次运行最近执行的命令,该怎么办?您可以首先尝试按向上箭头键并搜索特定的命令。如果你以前输入过这个命令,可能会使用著名的反向搜索功能,按下Ctrl R。

反向搜索特性快速且高效,但有时您需要在执行之前查看所有相关的过去命令。如果您需要从命令行历史中搜索、比较和执行命令,那么有一种更好的、内置的反向搜索方法。可以结合history和grep命令来查询命令行历史:

history | grep "npm install"

上面的命令列出了包含npm install的所有命令以及唯一的命令号:

现在,您可以使用!<history_index>语法立即执行首选的历史项。例如,看看下面的例子:

!1575 # Installs typescript立即进入新创建的目录

在进行软件项目时,我们经常需要创建新的目录。例如,如果要进行重构,可能需要创建几个目录来存储重构后的源代码。我们通常使用mkdir命令来创建新目录。然后,我们通常使用cd命令进入新创建的目录。我们可以将这两个操作组合成一个命令,如下所示:

mkdir app_settings && cd $_

上面的命令首先创建app_settings目录。接下来,仅当目录创建成功时,才将当前工作目录更改为app_settings。在Bash中,$_参数扩展为上一个命令的最后一个参数,即上面示例中的app_settings。您甚至可以将此命令放入Bash函数并定义mkdircd命令!

检测长时间运行的命令状态

我们经常在终端程序中输入相对较快的命令。例如,当我们输入cd以更改当前工作目录时,它会立即执行其工作。在某些场景中,我们还需要处理长时间运行的命令,这些命令会因为网络操作、文件操作和各种cpu密集型处理活动而延迟命令的执行。从包存储库中安装大型软件工具是长时间运行命令的一个很好的例子。

我们通常在输入一个长时间运行的命令后切换到另一个任务,而不是查找和等待。您如何知道命令完成(或失败)状态?

大多数GNU/Linux发行版都预先安装了zenity和通知发送版本,因此我们可以在长时间运行的命令结束时使用它们来创建通知。请看下面的例子:

npm install; notify-send Doneapt update; notify-send Done

你也可以只在特定命令失败时显示通知,如下所示:

make || notify-send Error

在macOS中,可以使用AppleScript创建通知。你可以创建一个别名(例如,sleep 5;notif)。作为Ubuntu的alert别名(.bashrc中的alert别名)。

下面的故事解释了如何从shell脚本中为一个长期运行的命令添加ASCII微调框:

运行顺序和并行的后台作业

我经常使用下面的命令在后台打开我最喜欢的Lite-XL代码编辑器程序,获取当前目录:

lite . &

类似地,我们都知道可以使用&符号将任何命令作为后台任务执行。你也可以将多个命令与&组合起来,产生多个后台任务,如下所示:

npm install & lite . &

上面的命令使用并行命令执行的方法生成两个后台任务。如果您只需要为多个命令创建一个后台任务怎么办?

使用&&操作符,如下所示:

npm install && lite . &

上述示例命令会在npm install命令执行完毕时打开代码编辑器,而不会阻塞终端交互。

使用带有管道的标准Unix命令

DevOps工程师和系统管理员经常使用没有GUI的远程服务器计算机。同时,一些工程师使用面向gui的Unix和类Unix系统。但是他们中的大多数人通常更喜欢CLI而不是GUI。在某些开发场景中,他们必须使用各种辅助命令来转换或分析其他命令的输出。基于unix和类unix的系统内置了传统的、标准的辅助命令,如wc、head、tail、sort、uniq、awk、sed等。

我们可以将这些命令与管道操作符一起使用,以转换或分析命令输出。例如,可以使用下面的组合命令对列表进行排序和重复数据删除:

cat list.txt | sort -u

我们可以结合head和tail来提取段,如下所示:

cat list.txt | sort -u | tail -5 | head -3

上面的命令输出排序后的行,从2到4。除此之外(优先考虑性能),你也可以使用sed:

cat list.txt | sort -u | sed -n "2,4p"

使用下面的命令来提高你在Ubuntu上编程的效率:

感谢您的阅读。

百科

More+
首页/电脑版/网名
© 2026 NiBaKu.Com All Rights Reserved.