TranslateProject/published/20230118.2 ⭐️⭐️ Beyond Bash 9 Lesser-Known Linux Shells and Their Capabilities.md

374 lines
12 KiB
Markdown
Raw Normal View History

[#]: subject: "Beyond Bash: 9 Lesser-Known Linux Shells and Their Capabilities"
[#]: via: "https://itsfoss.com/shells-linux/"
[#]: author: "Sreenath https://itsfoss.com/author/sreenath/"
[#]: collector: "lkxed"
[#]: translator: "ChatGPT"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15870-1.html"
超越 Bash: 9 个不太知名的 Linux Shell 及其功能
======
![][0]
> 你可能已经知道像 Bash 和 Zsh 这样的流行 Shell。让我们来探索一些有趣和独特的 Shell。
Shell 通过解释命令为 Linux 和类 Unix 系统提供了一个接口,充当用户与操作系统的核心工作之间的中介。
毫无疑问,**Bash Shell 是最受欢迎的 Shell** 之一,但有些用户喜欢其他 Shell比如在 macOS 上的默认 Shell——ZSH。但是除了这些流行的 Shell 之外,还存在许多 Shell具有不同的功能和用途。
在本文中,我们将介绍一些被积极维护并提供不同用户体验的不太常见的 Shell。
### 1、Fish Shell
谈到除了 Bash、Zsh 之外的 Shell第一个想到的就是 Fish Shell。
Fish 是一个智能的、用户友好的命令行 Shell主要适用于类 Unix 操作系统。
![Fish Shell][1]
Fish Shell 的特点:
- 根据历史记录提供命令自动建议和补全。
- 支持 24 位真彩。
- 支持语法高亮,所有特性都可以开箱即用。
安装 Fish
Fish 可在几乎所有 Linux 发行版的官方仓库中获得。在 Ubuntu 中,你可以通过以下命令来安装:
```
sudo apt install fish
```
Ubuntu 仓库中的版本有点旧。如果你想安装最新版本,可以使用该团队提供的官方 PPA。
```
sudo apt-add-repository ppa:fish-shell/release-3
sudo apt update
sudo apt install fish
```
> **[Fish Shell][2]**
### 2、Nushell
NushellNu是一种新型的 Shell可以在 Linux、macOS、Windows、BSD 等系统上使用。它的哲学和灵感来自于类似于 [PowerShell][3]、函数式编程语言和现代 [CLI][4] 工具等项目。
![Nushell][5]
Nushell 的特点:
- 一切皆数据Nu 管道使用结构化数据,因此你每次都可以使用同样的方式安全地选择、过滤和排序。
- 强大的插件:可以使用强大的插件系统轻松扩展 Nu。
- 易读的错误消息Nu 操作的是类型化的数据,因此它能够检测其他 Shell 无法检测到的错误。当出现问题时Nu 会准确指出问题所在和原因。
- 干净的 IDE 支持。
安装 Nushell
如果你使用的是 Ubuntu是无法找到一个 Apt 存储库来安装 Nushell 的。但是,根据其在 [GitHub 上的说明][6],你可以通过安装所需的依赖项来构建它。
幸运的是,还有一种方法可以使用 Homebrew 在任何发行版上安装它。你可以参考我们的教程 [在 Linux 上安装并使用 Homebrew 软件包管理器][7],成功在 Linux 上安装后,你需要输入以下命令来安装 Nushell
```
brew install nushell
```
请访问其官方网站以查看更多安装方式。
> **[Nushell][8]**
### 3、Dune
该项目的创建者将 **Dune** 描述为海滩上的一个 “贝壳”。Dune 是一个快速、实用且美观的 Shell提供了一些特殊的元编程功能比如引用。
![Dune Shell][9]
Dune Shell 的特点:
- 在进入交互模式之前Dune 执行存储在主目录中的“预载”启动文件。
- Dune 的 REPL 是完全可定制的。
- 可以通过将变量分配给程序名称来定义别名。
- 使用宏来编写修改 Shell 环境的函数,就像命令或程序一样。
- Dune 提供了丰富的标准库,并提供漂亮的界面来查看每个模块中可用的所有函数。
安装 Dune Shell
Dune shell 可在 Arch Linux 存储库中以 `dunesh` 的名字获得。
对于其他用户Dune shell 可以通过 `cargo` 安装。所以,首先需要 [安装最新版本的 Rust][2]。如果已经安装了 Rust请确保你有最新的版本然后继续安装 Dune。
```
cargo install -f dune
```
安装完成后,可以通过输入以下命令访问 Shell
```
dunesh
```
> **[Dune Shell][11]**
### 4、Xonsh
Xonsh 是一个用 Python 编写的,跨平台 Shell 和命令提示符。它结合了 Python 和 Bash Shell用户可以直接在 Shell 中运行 Python 命令。甚至可以结合使用 Python 和 Shell 命令。
![Xonsh shell][12]
如果你想了解更多,请阅读我们的 Xonsh 文章:
> **[Xonsh Shell结合 Bash Shell 和 Python 最佳特点的 Shell][12a]**
Xonsh Shell 的特点:
- Xonsh 语言具有 Bash 中常用的 Shell 原语。
- 在 Python 中准备环境变量和参数,然后在 Shell 命令中使用它们。
- 第三方扩展系统 Xontribs。
- 可自定义的标签补全、键绑定、颜色样式。
- 丰富的界面,方便查看历史记录。
安装 Xonsh Shell
Xonsh 可在许多 Linux 发行版的仓库中获得,如 Ubuntu、Fedora 等。因此,要在 Ubuntu 上安装它,请运行:
```
sudo apt install xonsh
```
Xonsh 还提供了一个 AppImage 包,可以从它们的下载页面下载。如果你不熟悉这种文件格式,请参考我们的 [AppImage 指南][13]。
> **[Xonsh][14]**
### 5、Hilbish
Hilbish 是一个可扩展 Shell可通过 Lua 编程语言进行定制。该 Shell 面向普通用户和高级用户。
![Hilbish shell][15]
Hilbish 的特点:
- 简单易用的脚本编写。
- 历史和补全菜单:为用户提供正确的补全和历史搜索菜单。
- 通过 Lua API 可以进行语法高亮和提示。
- 它可以在 Unix 系统和 Windows 上运行,但在 Windows 上可能会遇到问题。
安装 Hilbish
Hilbish 在 Ubuntu 的包仓库中不可用。因此,需要从源代码构建安装。
要安装它,需要安装 **Go****task**
```
sudo apt install golang-go
sudo snap install task --classic
```
安装完依赖项后,运行以下命令来安装 Hilbish shell
```
git clone --recursive https://github.com/Rosettea/Hilbish
cd Hilbish
go get -d ./...
```
如果要使用稳定版,请运行以下命令:
```
git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
task build
sudo task install
```
> **[Hilbish][16]**
### 6、Elvish
Elvish 是一种丰富的编程语言和多功能交互式 Shell。它可以在 Linux、Mac 和 Windows 上运行。即使版本 v1.0 尚未发布,它已经适合大多数日常交互使用。
![Elvish shell][17]
Elvish 的特点:
- 强大的管道Elvish 中的管道可以携带结构化数据,而不仅仅是文本。你可以通过管道传输列表、映射甚至函数。
- 直观的控制结构。
- 目录历史Elvish 记住了你访问过的所有目录。你可以通过按 `CTRL+L` 访问它。
- 命令历史。
- 内置文件管理器:通过按 `CTRL + N` 访问。
安装 Elvish
Elvish Shell 可在 Ubuntu 和 Arch Linux 的包管理器中获得。因此,要安装它,请打开终端并键入:
```
sudo apt install elvish
```
或者
```
sudo pacman -S elvish
```
要了解有关 Elvish 的更多信息,请访问 Elvish 的官方网站。
> **[Elvish][18]**
### 7、Oh
据其开发者称Oh 是 Unix shell 的重新设计。
它旨在成为现代 Shell 的更强大、更稳健的替代品,同时尊重 Unix shell 在过去半个世纪中建立的惯例。
![][19]
Oh Shell 的特点:
- 一流的频道、管道、环境和函数。
- 适用于标准 Shell 构造的丰富返回值。
- 支持模块化。
- 简化的评估和引用规则。
- 语法尽可能少地偏离已有的惯例。
安装 Oh
Oh 提供了一个预编译的二进制文件。你需要从它们的 [官方 GitHub 页面][20] 下载它。
你需要使用以下命令为文件授予执行权限:
```
chmod +x oh
```
运行以下命令以在你的系统上安装它:
```
sudo mv oh /usr/local/bin/
```
现在,你可以通过以下命令启动 Oh
```
oh
```
要了解有关 Oh 的详细信息,请查阅其文档。
> **[Oh][21]**
### 8、Solidity
Solidity 是一个带有轻量级会话记录和远程编译器支持的交互式 Shell。当你更改指示/语言时,它会自动获取匹配的远程编译器。
![][22]
Solidity 的特点:
- `pragma solidity <version>` 会尝试动态加载所选的编译器版本。
- 可以使用 `.session` 命令保存和恢复会话。
- 设置在退出时保存(在运行并发 shell 时不安全)。
- `$_` 是上一个已知结果的占位符。
- 特殊命令是具有点前缀。其他所有都将被视为 Solidity 代码进行评估。
安装 Solidity
你可以通过 `npm` 安装 Solidity shell。
[确保你安装了最新版本的 nodejs][23] 和 `npm`,然后输入以下命令:
```
npm install -g solidity-shell
```
安装完成后,运行 `solidity-shell` 来开始会话。
> **[Solidity Shell][24]**
### 9、Yash
YashYet another shell是一个遵循 POSIX 标准的命令行 Shell使用 C99ISO/IEC 9899:1999编写。它具有适用于日常交互和脚本使用的功能。
![][25]
Yash Shell 的特点:
- 全局别名。
- 套接字重定向、管道重定向和进程重定向。
- 提示符命令和未找到命令的处理程序。
- 带有预定义补全脚本的命令行补全,覆盖了 100 多个命令。
- 基于命令历史记录的命令行预测。
安装 Yash Shell
要安装该 Shell你需要转到它们的 [GitHub 发布][26] 页面下载 tar 文件。解压 tar 文件;在其中,你将找到一个包含安装说明的 `INSTALL` 文件。
通常,你应该在提取的文件夹中执行以下命令:
```
./configure
make
sudo make install
```
要了解有关 Yash Shell 的详细信息,请查看其手册页面。
> **[Yash][27]**
### 顺便提及
- Ion[Ion Shell][28] 是用 Rust 编写的一种现代系统 Shell主要用于 RedoxOS。它仍然是一个正在开发中的工作用户应该对语法会变化有所预料。
- Closh[Closh][29] 是一种类似 Bash 的 Shell将传统的 UNIX Shell 与 [Clojure][30] 的强大功能相结合。它旨在成为 Bash 的现代替代品。它也是在开发的早期阶段。
- Dash[Dash][31] 是来自 Debian 的符合 POSIX 标准、快速轻量级的 Shell。
💬 你对这些列出的 Shell 有何看法?你是否会尝试将默认 Shell 更改为这里的某些选项?你最喜欢的是哪一个?在下面的评论框中分享你的想法。
*题图MJ/a84a1625-4dd1-4589-aabb-ce3f37090f32*
--------------------------------------------------------------------------------
via: https://itsfoss.com/shells-linux/
作者:[Sreenath][a]
选题:[lkxed][b]
译者ChatGPT
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/sreenath/
[b]: https://github.com/lkxed
[1]: https://itsfoss.com/content/images/2023/01/fish-shell.png
[2]: https://fishshell.com/
[3]: https://itsfoss.com/microsoft-open-sources-powershell/
[4]: https://itsfoss.com/gui-cli-tui/
[5]: https://itsfoss.com/content/images/2023/01/nushell.png
[6]: https://github.com/nushell/nushell
[7]: https://itsfoss.com/homebrew-linux/
[8]: https://www.nushell.sh/
[9]: https://itsfoss.com/content/images/2023/01/dunesh.png
[10]: https://itsfoss.com/install-rust-cargo-ubuntu-linux/
[11]: https://github.com/adam-mcdaniel/dune
[12]: https://itsfoss.com/content/images/2023/01/xonsh.png
[12a]: https://itsfoss.com/xonsh-shell/
[13]: https://itsfoss.com/use-appimage-linux/
[14]: https://xon.sh/
[15]: https://itsfoss.com/content/images/2023/01/hilbish.png
[16]: https://rosettea.github.io/Hilbish/
[17]: https://itsfoss.com/content/images/2023/01/elvish.png
[18]: https://elv.sh/
[19]: https://itsfoss.com/content/images/2023/01/oh_Shell.png
[20]: https://github.com/michaelmacinnis/oh#linux
[21]: https://github.com/michaelmacinnis/oh
[22]: https://itsfoss.com/content/images/2023/01/solidity-shell.png
[23]: https://itsfoss.com/install-nodejs-ubuntu/
[24]: https://github.com/tintinweb/solidity-shell
[25]: https://itsfoss.com/content/images/2023/01/yash.png
[26]: https://github.com/magicant/yash/releases/tag/2.53
[27]: https://yash.osdn.jp/index.html.en
[28]: https://gitlab.redox-os.org/redox-os/ion
[29]: https://github.com/dundalek/closh
[30]: https://clojure.org/
[31]: https://linuxhandbook.com/dash-shell/
[0]: https://img.linux.net.cn/data/attachment/album/202306/02/175710r3c8shssf5qss2tf.jpg