5个为 Linux 高级用户准备的也是最常用的开源 shell

系统 Linux
Linux有许多shell可用,但在本文中,我们只包括前五种Linux shell,并全面讨论它们的特性。

[[413521]]

Linux有许多shell可用,但在本文中,我们只包括前五种Linux shell,并全面讨论它们的特性。

Linux为那些总在寻找新工具包的高级用户提供了一些最好的开源shell。Linux中不同类型的shell提供了不同的功能,但在其核心,它们基本上实现了几十年前开发的思想。

什么是Linux Shell

在 Linux 中,shell 是操作系统中执行其他程序的命令解释器。它为计算机用户提供了 Linux 系统的接口,以便用户可以使用一些输入数据运行不同的命令或实用程序。

简单来说,shell 是一个程序,它从键盘接收命令并将它们交给操作系统来执行。它接受纯文本格式的命令并调用操作系统服务来做某事。

但是 shell 不仅仅是一个命令解释器。它也是一种完整的编程语言,具有自己的结构,例如变量、循环、条件执行、函数等等。

每个 shell 都有自己的语法和脚本功能。那么,让我们来看看 Linux 上最常用的五个开源 shell。

1、Bash Shell

Brian Fox 于 1988 年为 GNU 项目开发了 Bash 作为 Bourne shell 的免费版本。Bash 与原始版本类似,但增加了命令行编辑等功能。

因为 Bash 是标准的 GNU shell,所以它成为了所有 Linux 发行版上的标准 shell。现在大多数现代 Linux 发行版都默认提供 Bash shell。这个开源 Linux shell 在社区中以其强大的功能集和可用性而闻名。该名称是“Bourne-Again SHell”的首字母缩写。

Bash 被认为如此强大的原因之一是因为它是可编写脚本的。shell 脚本是隔离的命令列表,以优化任何任务并具有成本效益,类似于具有明确定义标准的其他编程语言。您可以手动在 Bash 中输入任何内容,也可以在纯文本文件中列出并让 Bash 为您运行。

学习 Bash 对于执行自动化非常有用。它非常强大,并具有许多功能,例如:

  •  目录操作
  •  工作管理(Job Control )
  •  花括号扩展(brace expansion)
  •  波浪号扩展(Tilde expansion)
  •  别名
  •  命令历史
  •  命令行编辑
  •  键绑定
  •  集成编程功能
  •  控制结构
  •  内置插件的动态加载

Linux 内核的创建者 Linus Torvalds 说,他 1991 年在新内核上运行的前两个程序是 Bash 和 gcc,GNU 的编译器。

2、Zsh Shell

Zsh(Z shell 的缩写)是 Bourne Shell 的扩展版本,具有许多新功能并支持插件和主题。它是一个高度可定制的 Linux shell,其中包含一些非常强大的功能,例如选项卡完成、智能历史记录、远程文件扩展等等。Zsh 是一种专为交互使用而设计的 shell,尽管它也是一种强大的脚本语言。Bash、Ksh 和 Tcsh 的许多有用功能都已合并到 Zsh 中并添加到它们之上。

Zsh 由 Paul Fastad 于 1990 年开发,zsh 名称来自耶鲁大学教授宗绍。它已成为 Linux 操作系统最流行的 shell 之一。

一些更重要的 Zsh 函数是:

  •  命令自动完成
  •  改进的变量处理
  •  拼写更正
  •  共享命令历史
  •  环境变量设置简单
  •  定制

当您使用 Linux 时,大部分用户时间都花在终端上。如果您想自定义您的终端并使其看起来专业,您可以使用 Oh My Zsh 来实现此目标。它是一个社区驱动的开源框架,可用于管理 Zsh 配置。Zsh还有其他框架,如Prezto、Zgen、Antigen等。目前Oh My Zsh能够支持150个主题和275个插件。

Zsh 和 Bash 都有相似且令人印象深刻的功能,但也有自己独特的工具。如果您正在寻找 bash 中没有的可扩展性、更大的自定义和高级功能,zsh shell 是一个很好的选择。此外,Zsh 是 macOS Catalina 中的默认登录 shell 和交互式 shell,替代了 Bash。

相关:https://www.linuxmi.com/ubuntu-20-04-zsh.html

3、Fish

Fish shell 是一个现代命令行界面,具有自动建议、选项卡完成和语法突出显示。它是适用于 Linux 和 macOS 的智能且用户友好的命令行 shell。该shell 为用户提供强大的功能和控制,而不会影响速度和效率。它旨在立即使用,无需进行大量配置。

基于历史的Fish内联自动建议开箱即用。使用您的历史记录,Fish 提出了完成命令的下一个可能性。

这个 shell 比经典的 Bash shell 更加丰富多彩。您会很快注意到 Fish 在您键入时执行语法高亮显示。这些颜色以及更多颜色可以通过运行 fish_config 来更改。这将打开一个基于 Web 的 GUI,您可以在其中选择颜色主题并配置外壳的外观。

另一个很棒的功能是命令的可用性。例如,如果你输入/usr/bin/linuxiac,它会以红色显示该行,表明它不是一个有效的命令,但你输入/usr/bin/ping它看起来是正常的。

Fish shell特点:

  •  基于历史的内联自动建议
  •  出色的标签完成
  •  语法高亮
  •  直观的通配符支持
  •  基于网络的配置
  •  健全的脚本

对于使用 zsh、bash 等其他 shell 的用户来说,如果他们想尝试一个新的、有利的 shell,Fish是非常强大和有用的 Linux shell。

相关:FISH:为90后准备的Linux shell    https://www.linuxmi.com/fish-linux-shell.html

4、Ksh shell

Ksh(Korn shell 的缩写)由 AT&T 贝尔实验室的 David Korn 发明,并于 1986 年开始公共生活。它是 Bourne shell 的重新实现。Ksh shell 的命令编辑器界面支持快速、轻松地纠正输入错误,以及轻松调用和重用命令历史记录。它不提供命令补全,但提供文件名补全。Ksh 允许开发人员在需要时创建新的 shell 命令。

Ksh shell 的命令行编辑模式是一开始往往会吸引人们使用它的功能。使用命令行编辑,返回并修复错误要容易得多。另一个主要面向交互式用户的主要 Ksh 功能是作业控制。

一些更重要的 Ksh 函数是:

  •  作业控制
  •  别名
  •  功能
  •  命令历史
  •  命令行编辑
  •  集成编程功能
  •  控制结构
  •  调试原语
  •  常用表达
  •  高级 I/O 功能

Ksh shell 已经发布了不同的版本,如 pdksh、mksh、ksh88 和最新的 ksh93。

5、Tcsh Shell

在最初的 Linux 时代,C 和 C++ 编程语言非常流行,并且 Linux 本身的大部分内容都是用它们编写的。不出所料,出现了一个新的 shell,即使用 vanilla C 语法模型的 C Shell。Tcsh 是 Berkeley UNIX csh (C Shell) 的增强但完全兼容的版本。它是一种命令语言解释器,可用作交互式登录 shell 和 shell 脚本命令处理器。Tcsh 可以被认为是下一代 C shell。

Tcsh 由 Ken Greer 于 1979 年在卡内基梅隆大学开发。tcsh 中的“t”来自 TENEX 中的“T”,TENEX 是 BBN 于 1969 年为 PDP-10 大型计算机家族开发的操作系统。

早期版本的 MacOS X 附带 tcsh 作为默认 shell,但新版本的默认值变成了 Bash。现在 tcsh 是 FreeBSD 的默认 root shell。

Tcsh 的主要功能是可编程命令完成和命令行编辑。它在鲜明的简单性和基本功能之间取得了很好的平衡。使用 tcsh 所需的所有文档都位于 man tcsh 中,而不是散布在各种帮助程序中。

总结

帮助 Linux 发行版确保其当前地位的基本功能之一是 Linux shell。掌握 Linux shell 为您提供了一种与操作系统交互的替代方式。我们鼓励读者根据他们的要求尝试其中的一些 shell,并为自己获得第一手经验。 

 

责任编辑:庞桂玉 来源: Linux公社
相关推荐

2021-12-20 09:29:42

LinuxFreeDOS命令

2016-03-30 11:16:33

2023-11-27 13:57:00

Linux用法

2024-01-29 18:02:46

2012-11-16 13:47:15

ASOiOS 6

2023-11-30 16:25:21

2020-03-31 14:00:29

Python 开发工具

2020-04-21 09:16:47

开源Linux Shell

2020-04-22 15:45:59

Linux shellLinux命令

2024-01-22 13:53:00

Linux环境变量

2017-03-01 12:45:48

Linux网卡操作系统

2018-10-12 09:50:58

2009-06-10 21:58:51

Javascript常

2024-03-18 15:04:02

物联网通信协议IOT

2022-01-06 09:41:45

区块链比特币技术

2024-02-26 00:00:00

stage函数进度

2018-06-21 15:17:15

机器学习

2018-04-02 11:59:04

Linux命令ln

2019-02-18 15:05:16

Python内置函数索引

2024-10-16 15:25:15

点赞
收藏

51CTO技术栈公众号