學科:Shell

來自維基學院
相關鏈接
軟件開發 Subject:服務器管理

Shell是作業系統(核心)與使用者介面的外層介面。電腦作業系統的核心 (kernel)是整個電腦硬體重要運作程式,不提供和使用者的互動功能且需要被保護的!因此一般電腦使用者若要與核心溝通只能透過shell,來要電腦核心程式管理軟體的資料輸入與輸出等工作。底下提供一些索引。

Linux系統的大致結構,其中包括Shell

Which shell? bash, zsh or fish[編輯 | 編輯原始碼]

  • 首先 bash 沒什麼好說的,多數環境下是默認的 shell。如果你經常要跟終端打交道,應該考慮 zsh 或者 fish,都比 bash 強很多。
  • zsh 歷史其實比較久了,初代誕生於 1990 年[1],但份額一直不大[2]。fish 相對來說更年輕,2005 年發布初代。
  • fish 從設計理念上來說要優於 zsh,手感可能更好,文檔也不錯。但缺點是受眾過小,社區規模遠小於 zsh。另一個問題是腳本語法不兼容 bash,但反過來看也是優點……
  • 國內 zsh 比較主流,2012 後增長勢頭猛烈,被譽為「終極 shell」。

Zsh 專區


配置[編輯 | 編輯原始碼]

inputrc[編輯 | 編輯原始碼]

set completion-ignore-case on # 补全不区分大小写
set show-all-if-ambiguous on # 
TAB: menu-complete   # 如有多个匹配项,默认会显示匹配的列表,按此设置后补全会随着你每按一次Tab键而循环显示匹配列表中的项目

常用命令技巧[編輯 | 編輯原始碼]

ls[編輯 | 編輯原始碼]

通配符的特殊使用

舉例說明,假設有如下目錄:

.
├── ChangeLog.md
├── LICENSE
├── test.h
├── external
│   └── UncaughtExceptionHandler
│       ├── UncaughtExceptionHandler.h
│       └── UncaughtExceptionHandler.m
└── extobjc
    └── metamacros.h

ls *,可以結構化的列印當前目錄的文件及子目錄下的文件和目錄(不含子目錄中子目錄的內容),結果:

# ls *
ChangeLog.md             LICENSE             test.h

external:
UncaughtExceptionHandler

extobjc:
metamacros.h

資源&鏈接[編輯 | 編輯原始碼]

實用工具[編輯 | 編輯原始碼]

參考[編輯 | 編輯原始碼]

  1. "zsh - a ksh/tcsh-like shell (part 1 of 8)", alt.sources, December 14, 1990.
  2. https://www.google.com/trends/explore?cat=0-5&q=bash%2C%20zsh%2C%20"fish%20shell"%2B"fishshell"&cmpt=q —— zsh 波蘭的數據比較異常,不過對大結果影響不大,美區波動不大,日本的結果比較有意思