超越 Bash: 九個(gè)不太知名的 Linux Shell 及其功能
Shell 通過解釋命令為 Linux 和類 Unix 系統(tǒng)提供了一個(gè)接口,充當(dāng)用戶與操作系統(tǒng)的核心工作之間的中介。
毫無疑問,Bash Shell 是最受歡迎的 Shell 之一,但有些用戶喜歡其他 Shell,比如在 macOS 上的默認(rèn) Shell——ZSH。但是除了這些流行的 Shell 之外,還存在許多 Shell,具有不同的功能和用途。
在本文中,我們將介紹一些被積極維護(hù)并提供不同用戶體驗(yàn)的不太常見的 Shell。
1、Fish Shell
談到除了 Bash、Zsh 之外的 Shell,第一個(gè)想到的就是 Fish Shell。
Fish 是一個(gè)智能的、用戶友好的命令行 Shell,主要適用于類 Unix 操作系統(tǒng)。
Fish Shell
Fish Shell 的特點(diǎn):
- 根據(jù)歷史記錄提供命令自動(dòng)建議和補(bǔ)全。
- 支持 24 位真彩。
- 支持語法高亮,所有特性都可以開箱即用。
安裝 Fish:
Fish 可在幾乎所有 Linux 發(fā)行版的官方倉庫中獲得。在 Ubuntu 中,你可以通過以下命令來安裝:
sudo apt install fish
Ubuntu 倉庫中的版本有點(diǎn)舊。如果你想安裝最新版本,可以使用該團(tuán)隊(duì)提供的官方 PPA。
sudo apt-add-repository ppa:fish-shell/release-3
sudo apt update
sudo apt install fish
2、Nushell
Nushell(Nu)是一種新型的 Shell,可以在 Linux、macOS、Windows、BSD 等系統(tǒng)上使用。它的哲學(xué)和靈感來自于類似于 PowerShell、函數(shù)式編程語言和現(xiàn)代 CLI 工具等項(xiàng)目。
Nushell
Nushell 的特點(diǎn):
- 一切皆數(shù)據(jù):Nu 管道使用結(jié)構(gòu)化數(shù)據(jù),因此你每次都可以使用同樣的方式安全地選擇、過濾和排序。
- 強(qiáng)大的插件:可以使用強(qiáng)大的插件系統(tǒng)輕松擴(kuò)展 Nu。
- 易讀的錯(cuò)誤消息:Nu 操作的是類型化的數(shù)據(jù),因此它能夠檢測(cè)其他 Shell 無法檢測(cè)到的錯(cuò)誤。當(dāng)出現(xiàn)問題時(shí),Nu 會(huì)準(zhǔn)確指出問題所在和原因。
- 干凈的 IDE 支持。
安裝 Nushell:
如果你使用的是 Ubuntu,是無法找到一個(gè) Apt 存儲(chǔ)庫來安裝 Nushell 的。但是,根據(jù)其在 GitHub 上的說明,你可以通過安裝所需的依賴項(xiàng)來構(gòu)建它。
幸運(yùn)的是,還有一種方法可以使用 Homebrew 在任何發(fā)行版上安裝它。你可以參考我們的教程 在 Linux 上安裝并使用 Homebrew 軟件包管理器,成功在 Linux 上安裝后,你需要輸入以下命令來安裝 Nushell:
brew install nushell
請(qǐng)?jiān)L問其官方網(wǎng)站以查看更多安裝方式。
3、Dune
該項(xiàng)目的創(chuàng)建者將 Dune 描述為海灘上的一個(gè) “貝殼”。Dune 是一個(gè)快速、實(shí)用且美觀的 Shell,提供了一些特殊的元編程功能,比如引用。
Dune Shell
Dune Shell 的特點(diǎn):
- 在進(jìn)入交互模式之前,Dune 執(zhí)行存儲(chǔ)在主目錄中的“預(yù)載”啟動(dòng)文件。
- Dune 的 REPL 是完全可定制的。
- 可以通過將變量分配給程序名稱來定義別名。
- 使用宏來編寫修改 Shell 環(huán)境的函數(shù),就像命令或程序一樣。
- Dune 提供了豐富的標(biāo)準(zhǔn)庫,并提供漂亮的界面來查看每個(gè)模塊中可用的所有函數(shù)。
安裝 Dune Shell:
Dune shell 可在 Arch Linux 存儲(chǔ)庫中以 dunesh
的名字獲得。
對(duì)于其他用戶,Dune shell 可以通過 cargo
安裝。所以,首先需要 安裝最新版本的 Rust。如果已經(jīng)安裝了 Rust,請(qǐng)確保你有最新的版本,然后繼續(xù)安裝 Dune。
cargo install -f dune
安裝完成后,可以通過輸入以下命令訪問 Shell:
dunesh
4、Xonsh
Xonsh 是一個(gè)用 Python 編寫的,跨平臺(tái) Shell 和命令提示符。它結(jié)合了 Python 和 Bash Shell,用戶可以直接在 Shell 中運(yùn)行 Python 命令。甚至可以結(jié)合使用 Python 和 Shell 命令。
Xonsh shell
如果你想了解更多,請(qǐng)閱讀我們的 Xonsh 文章:
Xonsh Shell 的特點(diǎn):
- Xonsh 語言具有 Bash 中常用的 Shell 原語。
- 在 Python 中準(zhǔn)備環(huán)境變量和參數(shù),然后在 Shell 命令中使用它們。
- 第三方擴(kuò)展系統(tǒng) Xontribs。
- 可自定義的標(biāo)簽補(bǔ)全、鍵綁定、顏色樣式。
- 豐富的界面,方便查看歷史記錄。
安裝 Xonsh Shell:
Xonsh 可在許多 Linux 發(fā)行版的倉庫中獲得,如 Ubuntu、Fedora 等。因此,要在 Ubuntu 上安裝它,請(qǐng)運(yùn)行:
sudo apt install xonsh
Xonsh 還提供了一個(gè) AppImage 包,可以從它們的下載頁面下載。如果你不熟悉這種文件格式,請(qǐng)參考我們的 AppImage 指南。
5、Hilbish
Hilbish 是一個(gè)可擴(kuò)展 Shell,可通過 Lua 編程語言進(jìn)行定制。該 Shell 面向普通用戶和高級(jí)用戶。
Hilbish shell
Hilbish 的特點(diǎn):
- 簡(jiǎn)單易用的腳本編寫。
- 歷史和補(bǔ)全菜單:為用戶提供正確的補(bǔ)全和歷史搜索菜單。
- 通過 Lua API 可以進(jìn)行語法高亮和提示。
- 它可以在 Unix 系統(tǒng)和 Windows 上運(yùn)行,但在 Windows 上可能會(huì)遇到問題。
安裝 Hilbish:
Hilbish 在 Ubuntu 的包倉庫中不可用。因此,需要從源代碼構(gòu)建安裝。
要安裝它,需要安裝 Go 和 task。
sudo apt install golang-go
sudo snap install task --classic
安裝完依賴項(xiàng)后,運(yùn)行以下命令來安裝 Hilbish shell:
git clone --recursive https://github.com/Rosettea/Hilbish
cd Hilbish
go get -d ./...
如果要使用穩(wěn)定版,請(qǐng)運(yùn)行以下命令:
git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
task build
sudo task install
6、Elvish
Elvish 是一種豐富的編程語言和多功能交互式 Shell。它可以在 Linux、Mac 和 Windows 上運(yùn)行。即使版本 v1.0 尚未發(fā)布,它已經(jīng)適合大多數(shù)日常交互使用。
Elvish shell
Elvish 的特點(diǎn):
- 強(qiáng)大的管道:Elvish 中的管道可以攜帶結(jié)構(gòu)化數(shù)據(jù),而不僅僅是文本。你可以通過管道傳輸列表、映射甚至函數(shù)。
- 直觀的控制結(jié)構(gòu)。
- 目錄歷史:Elvish 記住了你訪問過的所有目錄。你可以通過按
CTRL+L
訪問它。 - 命令歷史。
- 內(nèi)置文件管理器:通過按
CTRL + N
訪問。
安裝 Elvish:
Elvish Shell 可在 Ubuntu 和 Arch Linux 的包管理器中獲得。因此,要安裝它,請(qǐng)打開終端并鍵入:
sudo apt install elvish
或者
sudo pacman -S elvish
要了解有關(guān) Elvish 的更多信息,請(qǐng)?jiān)L問 Elvish 的官方網(wǎng)站。
7、Oh
據(jù)其開發(fā)者稱,Oh 是 Unix shell 的重新設(shè)計(jì)。
它旨在成為現(xiàn)代 Shell 的更強(qiáng)大、更穩(wěn)健的替代品,同時(shí)尊重 Unix shell 在過去半個(gè)世紀(jì)中建立的慣例。
Oh Shell 的特點(diǎn):
- 一流的頻道、管道、環(huán)境和函數(shù)。
- 適用于標(biāo)準(zhǔn) Shell 構(gòu)造的豐富返回值。
- 支持模塊化。
- 簡(jiǎn)化的評(píng)估和引用規(guī)則。
- 語法盡可能少地偏離已有的慣例。
安裝 Oh:
Oh 提供了一個(gè)預(yù)編譯的二進(jìn)制文件。你需要從它們的 官方 GitHub 頁面 下載它。
你需要使用以下命令為文件授予執(zhí)行權(quán)限:
chmod +x oh
運(yùn)行以下命令以在你的系統(tǒng)上安裝它:
sudo mv oh /usr/local/bin/
現(xiàn)在,你可以通過以下命令啟動(dòng) Oh:
oh
要了解有關(guān) Oh 的詳細(xì)信息,請(qǐng)查閱其文檔。
8、Solidity
Solidity 是一個(gè)帶有輕量級(jí)會(huì)話記錄和遠(yuǎn)程編譯器支持的交互式 Shell。當(dāng)你更改指示/語言時(shí),它會(huì)自動(dòng)獲取匹配的遠(yuǎn)程編譯器。
Solidity 的特點(diǎn):
pragma solidity <version>
會(huì)嘗試動(dòng)態(tài)加載所選的編譯器版本。- 可以使用
.session
命令保存和恢復(fù)會(huì)話。 - 設(shè)置在退出時(shí)保存(在運(yùn)行并發(fā) shell 時(shí)不安全)。
$_
是上一個(gè)已知結(jié)果的占位符。- 特殊命令是具有點(diǎn)前綴。其他所有都將被視為 Solidity 代碼進(jìn)行評(píng)估。
安裝 Solidity:
你可以通過 npm
安裝 Solidity shell。
確保你安裝了最新版本的 nodejs 和 npm
,然后輸入以下命令:
npm install -g solidity-shell
安裝完成后,運(yùn)行 solidity-shell
來開始會(huì)話。
9、Yash
Yash(Yet another shell)是一個(gè)遵循 POSIX 標(biāo)準(zhǔn)的命令行 Shell,使用 C99(ISO/IEC 9899:1999)編寫。它具有適用于日常交互和腳本使用的功能。
Yash Shell 的特點(diǎn):
- 全局別名。
- 套接字重定向、管道重定向和進(jìn)程重定向。
- 提示符命令和未找到命令的處理程序。
- 帶有預(yù)定義補(bǔ)全腳本的命令行補(bǔ)全,覆蓋了 100 多個(gè)命令。
- 基于命令歷史記錄的命令行預(yù)測(cè)。
安裝 Yash Shell:
要安裝該 Shell,你需要轉(zhuǎn)到它們的 GitHub 發(fā)布 頁面下載 tar 文件。解壓 tar 文件;在其中,你將找到一個(gè)包含安裝說明的 INSTALL
文件。
通常,你應(yīng)該在提取的文件夾中執(zhí)行以下命令:
./configure
make
sudo make install
要了解有關(guān) Yash Shell 的詳細(xì)信息,請(qǐng)查看其手冊(cè)頁面。
順便提及
- Ion:Ion Shell 是用 Rust 編寫的一種現(xiàn)代系統(tǒng) Shell,主要用于 RedoxOS。它仍然是一個(gè)正在開發(fā)中的工作,用戶應(yīng)該對(duì)語法會(huì)變化有所預(yù)料。
- Closh:Closh 是一種類似 Bash 的 Shell,將傳統(tǒng)的 UNIX Shell 與 Clojure 的強(qiáng)大功能相結(jié)合。它旨在成為 Bash 的現(xiàn)代替代品。它也是在開發(fā)的早期階段。
- Dash:Dash 是來自 Debian 的符合 POSIX 標(biāo)準(zhǔn)、快速輕量級(jí)的 Shell。
?? 你對(duì)這些列出的 Shell 有何看法?你是否會(huì)嘗試將默認(rèn) Shell 更改為這里的某些選項(xiàng)?你最喜歡的是哪一個(gè)?