学科: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 波兰的数据比较异常,不过对大结果影响不大,美区波动不大,日本的结果比较有意思