你应该知道的五大Linux外壳
您是否正在尝试找到一个理想的Linux外壳,以完全符合您的计算需求?好吧,你很幸运!今天,我们将深入了解Linux shell的迷人世界。我们将探索前五名竞争者的独特功能、怪癖和能力:Bash、Zsh、Fish、Ksh和Tcsh。
但在我们深入研究之前,让我们花点时间来了解什么是Linux外壳,特别是对于那些刚接触Linux的人来说。
什么是Linux Shell?
首先,你可能想知道为什么它被称为“外壳”。这个术语来自于有一个外层包裹着操作系统,就像外壳包裹着螺母一样。这个外壳提供了一种与计算机操作系统和各种功能交互的方式。
将Linux Shell想象成一个翻译器。你的计算机只懂一种特定的计算机语言,但我们人类更喜欢使用我们的日常语言。Linux Shell充当了一个中间人,用你能理解的语言接收你的命令,并将它们翻译成计算机能听懂的语言。
换句话说,这是一个从键盘上获取命令并将其交给操作系统执行的程序。
但是shell不仅仅是一个命令解释器。它也是一种完整的编程语言,包含变量、循环、条件执行、函数等结构。
正因为如此,脚本编写是shell最令人难以置信的事情之一。Shell脚本就像小程序,您可以编写它来自动执行一系列操作。这些脚本可以节省时间和精力,尤其是在您执行重复任务时。
现在,你可能会想,“如果Linux有如此出色的图形和用户友好的应用程序,让你只需点击鼠标即可完成所有操作,那么为什么要用shell呢?”
事实上,Linux中的一些事情只能从shell中完成。但更重要的是,它使您能够访问Linux操作系统的全部功能。
Linux Shell是如何工作的?
当您在shell中键入命令时,它会分几个步骤处理您的请求:
- 解释命令:
外壳首先理解你想说的话。 - 正在搜索命令:
然后它在系统中查找该命令。 - 执行命令:
一旦找到,shell就会运行该命令。 - 输出结果:
最后,它将结果显示给您。
既然我们已经完成了基础知识,让我们深入到主题的核心:五个最好的Linux shell。让我们开始吧!
1.重击外壳
Bash是Bourne Again SHell的首字母缩写,这是一部关于Stephen Bourne的戏剧,他是当前Unix SHell的直接祖先的作者(
sh
).
起源于原始伯恩炮弹的增强型替代品(
/bin/sh
)Bash由Brian Fox于1989年创建,现已发展成为一种用于管理Linux系统的强大命令行界面和脚本语言。
作为一个GNU项目,它可用于各种类似UNIX的操作系统,并已成为Linux的默认外壳。由于其强大的功能集和可用性,大多数现代发行版默认提供Bash shell。
Bash被认为如此强大的一个主要原因是其可编写脚本的功能。脚本的范围从简单的自动化任务到复杂的程序。Bash脚本使用变量和控制结构(如if-else语句和循环),并可以与用户或其他系统组件交互。
正因为如此,任何你可以手动输入到Bash中的东西,你也可以在纯文本文件中列出,并让Bash运行它。此外,它擅长管道和重定向,允许一个命令的输出用作另一个的输入。
赞成的意见:
- 灵活性和力量
:Bash的脚本功能使其在自动化任务和操作系统设置方面功能强大得令人难以置信。 - 广泛的可用性
:作为许多类UNIX系统上的默认shell,大多数开发人员和系统管理员都可以使用它。 - 丰富的脚本功能
:Bash为脚本编写提供了一组丰富的内置命令和实用程序,使复杂的任务更易于自动化。 - 强大的社区支持
:强大的社区和丰富的在线资源可用于学习和故障排除。 - 可定制性
:Bash是高度可定制的,允许用户根据自己的需求和偏好定制环境。 - 交互式功能
:命令历史记录、自动完成和命令编辑等功能提高了用户的工作效率。
欺骗:
- 初学者的复杂性
:Bash由于其语法和功能的广度,对初学者来说可能是压倒性的。 - 脚本限制
:对于更复杂的编程任务,与高级语言相比,Bash脚本可能效率更低,也更麻烦。 - 绩效管理费用
:在某些速度至关重要的情况下,Bash脚本可能比用编译语言编写的程序慢。 - 缺乏现代编程结构:
Bash缺少高级编程语言中的一些特性,例如对象和一流的函数。
最后,一个奇怪的事实。Linux内核的创建者Linus Torvalds说,1991年他在内核上运行的前两个程序是Bash和GNU的编译器GCC。
2.Zsh外壳
Zsh最初由保罗·法尔斯塔德于1990年创建,当时他还是普林斯顿大学的学生。“Zsh”这个名字来源于法尔斯塔德师从的耶鲁大学教授钟绍。
目标是开发一个包含Bash、Tcsh和Ksh等流行shell功能的shell。多年来,由于其强大的功能和自定义功能,它在开发人员和系统管理员中广受欢迎。如今,它是macOS的默认外壳。
Zsh最显著的特点之一是它是为交互式使用而设计的,尽管它也是一种强大的脚本语言。Bash、Ksh和Tcsh的许多有价值的特性已经合并到Zsh及其扩展中。此外,Zsh还具有以下特点:
命令行编辑
Zsh提供了强大的命令行编辑功能。它支持Vi、Emacs和自己的编辑模式,为用户提供了各种导航和编辑命令行的方式。
增强的选项卡完成
Zsh的制表符完成系统非常复杂。它可以完成命令、参数和文件名,甚至可以更正常见的拼写错误。此功能可高度自定义,并支持可编程完成。
主题和提示自定义
用户可以通过多种方式自定义提示,包括添加颜色、信息(如当前目录和git状态)和自定义主题。为实现这一目标提供最佳资源的一些地方包括:
- Oh My Zsh:一个流行的框架,提供主题、插件和一组社区驱动的配置。
- Prezto:Zsh的配置框架,专注于速度、功能和提示主题。
- Antigen:Zsh的插件管理器,灵感来自Vim中的Vundle。
其他Zsh亮点
Zsh具有强大的脚本功能。它包括关联数组、字符串操作功能和扩展的globbing。虽然它提供了许多增强功能,但它保持了与传统Bourne Shell的兼容性,主要是与Bash的兼容性,使用户更容易进行转换。
此外,Zsh还包括各种可加载模块,增加了数学计算、拼写检查和TCP/IP功能等功能。最后但同样重要的是,Zsh的globbing允许在文件搜索中进行更复杂的模式匹配。扩展的文件重命名和操作功能也是值得注意的功能。
赞成的意见:
- 高度可定制
:允许用户广泛定制他们的体验。 - 强大的脚本选项
:提供高级脚本功能。 - 用户友好界面
:增强了选项卡完成和拼写检查功能。 - 活跃的社区
:定期更新和庞大的用户群。 - 与Bash的兼容性
:Bash用户易于转换。
欺骗:
- 陡峭的学习曲线
:这对新用户来说可能是压倒性的。 - 启动时间较慢
:特别是在配置或主题复杂的情况下。 - 资源使用情况
:这可能比简单的shell更耗费资源。 - 兼容性问题
:某些脚本可能需要调整以获得最佳性能。 - 压倒性的自定义选项
:大量的选择可能令人望而生畏。
总之,Zsh和Bash具有相似且令人印象深刻的一系列功能,并且具有不同的工具。然而,如果您正在寻找Bash中没有的可扩展性、更大的自定义性和高级功能,Zsh shell是一个很好的选择。
3.鱼
Fish(Friendly Interactive SHell)是一款用户友好、创新的命令行SHell,适用于macOS、Linux和BSD。它以其易用性、高级功能和注重用户体验而闻名。它于2005年发布,由Axel Liljencrantz创建,此后由一个充满活力的社区开发。
这个外壳为用户提供了强大的功能和控制,而不会影响速度和效率。它的设计是开箱即用,无需设置或配置,这对初学者或喜欢即插即用方法的人来说是一个福音。以下是Fish Shell的主要功能:
自动建议
Fish根据您的命令历史记录提供智能和实时的内联自动建议。此功能使用户能够更快、更高效地工作,减少键入错误。
语法突出显示
这个外壳比经典的Bash更丰富多彩。您很快就会注意到Fish在键入时执行语法高亮显示。命令、参数和文件路径是用颜色编码的。这使得命令行在视觉上更具吸引力,并有助于识别错误,如拼写错误。
例如,如果您键入
/usr/bin/linuxiac
,它将以红色显示该行,表示它不是一个有效的命令,但如果您键入
/usr/bin/ping
,看起来会很正常。
基于Web的配置
Fish提供了一个基于web的配置用户界面,让那些不愿意手动编辑配置文件的用户更容易。用户可以通过运行
fish_配置
命令
这将打开一个基于web的GUI,您可以在其中选择颜色主题并配置外壳的外观。
广泛的文档
提供了全面且用户友好的文档,新用户可以轻松掌握最新信息,经验丰富的用户可以轻松查找详细信息。
脚本语言
Fish使用自己的脚本语言,它比传统的shell脚本更简单、更一致。然而,这也可能是一个缺点,因为它与POSIX标准shell脚本不同。
选项卡完成
Fish支持为各种程序完成强大的选项卡,使命令行操作更快,并减少了记住特定命令选项的需要。
赞成的意见:
- 用户友好型
:由于其简单的语法和自动建议和语法高亮显示等有用功能,非常适合初学者。 - 有效率的
:通过自动建议和选项卡完成等功能提高工作效率。 - 可定制的
:虽然它开箱即用,但高级用户仍然可以自定义和扩展其功能。 - 现代界面
:基于网络的配置和现代设计使其与传统外壳不同。
欺骗:
- 脚本语言
:不符合POSIX意味着为Fish编写的脚本可能无法在其他shell中工作,反之亦然。 - 资源使用情况
:鱼类可能比Dash(Debian Almquist SHell)甚至Bash等斯巴达贝壳更资源密集。 - 兼容性问题
:如果不进行修改,某些复杂的bash脚本可能无法在Fish中正常工作。 - 学习曲线
:虽然用户友好,但来自其他shell的用户可能需要时间来调整其语法和功能。
Fish专注于用户友好的体验,是重视效率和现代界面的初学者和经验丰富的用户的绝佳选择。
虽然其不符合POSIX的脚本语言和(有时)更高的资源使用率是缺点,但其高级功能的好处使其成为传统Unix shell的一个引人注目的替代品。
4.Ksh壳牌
KornShell,通常被称为Ksh,是一个Unix shell,由贝尔实验室的David G.Korn在20世纪80年代初开发。目标是在引入新功能的同时,融合伯恩壳牌和C壳牌的最佳功能。
这是一个命令解释器,既可用于交互式,也可用于脚本,并因其高效和强大的功能而广受欢迎。
Ksh的主要特点
- 编程结构
:Ksh提供了高级编程结构,如循环、条件和函数,使其成为一个强大的脚本工具。 - 命令行编辑
:它允许用户在键入命令行时使用Emacs或Vi编辑模式进行编辑。此功能增强了用户体验和效率。 - 速度
Ksh以其性能而闻名,尤其是在脚本执行方面,它的性能通常优于其他shell。 - 作业控制
:与其他高级shell一样,Ksh支持作业控制,允许用户启动、停止和管理多个作业或进程。 - 别名和函数
:用户可以为长命令创建别名,也可以为复杂的命令序列定义函数,从而简化频繁的任务。 - 阵列处理
:Ksh支持一维数组,为处理脚本中的列表和数据集合提供了一个强大的工具。 - 与Bourne Shell的兼容性
:Ksh在很大程度上与Bourne Shell兼容,这意味着为编写脚本
sh
通常可以在Ksh中运行而无需修改。
使用场景
Ksh用途广泛,可用于各种场景,例如:
- 脚本和自动化
:它的高级脚本功能使它非常适合编写复杂的脚本来自动化系统管理任务。 - 交互式使用
:作为一个交互式shell,Ksh对于日常命令行活动来说是用户友好且高效的。 - 编程环境
:Ksh的编程特性使其适合开发复杂的shell程序和实用程序。
赞成的意见
- 高级脚本功能
:Ksh的编程功能使其在脚本编写方面优于传统的shell。 - 用户友好的命令编辑
:使用Emacs或Vi模式交互式编辑命令的能力增强了可用性。 - 与Bourne Shell的兼容性
:这确保了用户易于转换以及与现有脚本的兼容性。 - 作业控制和阵列支持
:这些功能提供了处理过程和数据的灵活性。
欺骗
- 复杂性
:那些习惯于其他shell的人可能会发现Ksh的语法和功能很难学习。 - 不太受欢迎:
随着Bash、Zsh和Fish的兴起,Ksh的受欢迎程度有所下降,这可能会影响社区支持和资源。 - 缺乏现代特色:
虽然强大,但Ksh在新的外壳中可能缺乏一些更现代的功能。
同样重要的是,Ksh不提供命令完成,但提供文件名完成。此外,它还允许开发人员在需要时创建新的shell命令。
然而,在为特定环境或用户群选择外壳时,应考虑其复杂性和潜在的可移植性问题。
5.Tcsh外壳
Tcsh是C shell(Csh)的增强版,是一种Unix shell,广泛用于脚本编写和交互使用。20世纪80年代初,卡内基梅隆大学的Ken Greer开发了Tcsh,它对Bill Joy设计的原始C外壳进行了许多改进。
如果你好奇的话,Tcsh中的“t”代表“Tenex”,这是BBN于1969年为PDP-10大型机家族开发的一种操作系统,激发了Tcsh的许多功能。
早期版本的macOS X以Tcsh作为默认外壳,但新版本变成了Bash。如今,Tcsh是FreeBSD的默认命令行shell。
以下是Tcsh-Shell的主要功能:
类C语法
Tcsh使用了一种类似于C编程语言的语法,这是许多程序员所熟悉的。这使得脚本编写对于那些已经习惯了C的人来说是直观的。
命令行编辑
它提供了高级的命令行编辑功能,允许用户使用键盘快捷键导航和编辑命令行。此功能显著提高了用户效率。
别名和自动补全
Tcsh支持自动完成文件名和命令历史记录,这大大提高了生产效率。
作业控制
与其他高级shell一样,Tcsh提供了强大的作业控制,使用户能够轻松管理多个进程。用户可以无缝地启动、停止、恢复或在进程之间切换。
历史机制
提供了一个全面的历史记录机制,用户可以在其中调用、编辑和重新运行以前的命令,这在重复任务中特别有用。
脚本功能
Tcsh不仅是一个交互式shell,而且还是一种强大的脚本语言。它提供了循环、条件和变量等编程构造,使其适合于自动化复杂任务。
赞成的意见
- 交互式使用
:Tcsh经常被用作交互式shell,它的命令行编辑和历史记录功能尤其有价值。 - C程序员熟悉的语法
:对于那些熟悉C编程的人来说,类C语法是很舒服的。 - 丰富的功能集
:提供广泛的功能,如作业控制、别名和通配符匹配。 - 自定义
:允许对用户环境进行广泛的自定义。
欺骗
- 复杂性
:语法可能不如Bash等其他shell直观。 - 脚本兼容性
:用Tcsh编写的脚本并不总是与其他流行的shell兼容。 - 表演
:Tcsh在资源使用和速度方面可能不如其他shell高效,尤其是在脚本编写方面。 - 脚本不太受欢迎
:Tcsh在脚本方面不如Bash流行,这可能会影响资源的可用性和社区支持。
总之,Tcsh是对C shell的增强,它提供了一组丰富的功能,既适合交互式使用,也适合脚本编写。它的类C语法对熟悉C编程的人特别有吸引力。
然而,与Bash或Zsh相比,它的复杂性和在脚本中的受欢迎程度较低,这意味着它并不总是shell脚本的首选。
结论
探索Linux shell的多样化世界就像开始了一次穿越计算领域的启蒙之旅。每一款都有其独特的功能和优势,可根据不同的需求和偏好提供独特的体验。
无论您选择Bash是因为其广泛的兼容性,选择Zsh是因为其可定制的功能,选择Fish是因为用户友好,选择Ksh是因为它的性能,还是选择Tcsh是因为它们像程序员一样的方法,您都拥有了一个专为您的计算需求量身定制的强大工具。
通过理解这些细微差别,您就可以做出明智的选择,提高您的Linux技能,为您提供与操作系统交互的直接方式。
我们鼓励读者尝试其中的一些,并获得第一手经验。最后,请记住,最好的外壳不仅关乎技术优势,还关乎它与您的工作流程和计算风格的共鸣程度。愉快的探索!
延伸阅读:
Windows 记事本终于获得自动更正和拼写检查功能
在首次引入 Windows 大约 41 年后,记事本终于更新了自动更正和拼写检查功能。这家科技巨头于今年 3 月推出了拼...
Ubuntu 的 apt 和 apt-get 命令有什么区别?
在Ubuntu及其他基于Debian的Linux发行版中,软件包管理是系统维护的一个重要方面。apt和apt-get是两...
Ubuntu远程桌面:如何设置和连接
远程桌面是一种允许您远程接管和使用另一台计算机的服务。在Ubuntu中,可以在图形客户端机器上启用它来控制主机。此功能对...
苹果公司在“放开”iPad活动上宣布的4款产品(以及你错过了什么)
利用当天的视频 苹果2024年5月的“放开”活动标志着iPad系列的一个重要里程碑,该公司推出了自成立以来最重大的升级。...
将照片从iPhone传输到iPhone的8种快速方法
已升级到新iPhone,是否要从旧设备中移动所有照片?或者你只是想从别人的iPhone上转移照片?以下是在两部iPhon...