## 什么是 Shell
Shell 是一种命令行解释器,用于接收用户输入的命令并将其传递给操作系统内核执行,在 Linux 系统中,Shell 是一个基本组件,用于与内核交互。虽然 Linux 内核负责管理硬件资源和系统核心功能,但用户通常通过 Shell 来与系统互动,常见的 Shell 类型如下:
- **Bash(Bourne Again Shell)**:最流行的 Shell,几乎是所有 Linux 发行版的默认 Shell。
- **Zsh(Z Shell)**:功能强大且可定制性高,许多人认为它比 Bash 更好用。
- **Fish(Friendly Interactive Shell)**:强调用户友好和易用性。
- **Csh(C Shell)和 Tcsh**:类似于 C 语言的语法,Tcsh 是 Csh 的增强版本。
- **Ksh(Korn Shell)**:兼具 Bash 和 Csh 的特性。
## Bash
Bash 是大多数 Linux 发行版的默认 Shell,包括 Ubuntu。用户在 Ubuntu 中打开终端时,默认就是进入了 Bash 环境。
### 编写 bash 代码
1. 创建 `myscript.sh` 文件,保存如下内容
```Bash
#!/bin/bash
VAR="world"
echo "Hello $VAR!" # => Hello world!
```
2. 修改为可执行权限
```Shell
$ chmod +x myscript.sh
```
3. 执行脚本
```Shell
$ bash myscript.sh
```
## Zsh
Zsh(Z Shell)是一个类似于 Bash 的命令行解释器,用于 Unix 和类 Unix 操作系统。它提供了许多改进的特性,包括主题和插件支持,使得用户能够高度定制自己的工作环境。Zsh 包含了 Bash 的许多命令和功能,同时引入了新的改进和扩展,比如更强大的命令行补全、拼写检查、历史记录管理和高级脚本编写功能。因其提供的高级功能和易用性,Zsh 被许多高级用户和开发者作为首选的 shell 使用。
### 安装 Zsh
```Shell
$ sudo apt install zsh -y
$ zsh --version
$ chsh -s $(which zsh)
$ exit # 退出并重新登录shell
# 查看默认shell是否已使用zsh
$ echo $SHELL
$ $SHELL --version # 查看zsh版本
```
### 安装 Oh My Zsh
Oh My Zsh 用于管理 Zsh(Z Shell)的配置,提供大量的主题和插件,让用户可以轻松地定制和增强他们的 Zsh 环境。
```Shell
# 设置代理,如果需要的话
# $ export https_proxy=http://127.0.0.1:7890
# $ git config --global https.proxy http://127.0.0.1:7890
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 修改主题
$ vim ~/.zshrc
# >>> ZSH_THEME="afowler"
```
## 安装自动补全插件
```shell
$ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
$ vim ~/.zshrc
# >>>
plugins=(git zsh-autosuggestions)
# <<<
```
## tmux
tmux(Terminal Multiplexer)是一个终端复用器,让一个终端变成多个终端,并且可以保持会话不关闭。
```shell
$ sudo apt install tmux # 安装
$ tmux new -s main # 创建会话,名字为 main
$ tmux ls # 查看会话
$ tmux attach -t main # 连接 main 会话,或者 tmux a -t main
$ tmux detach # 断开 main 会话,或者 Ctrl + b → d
```
## 参考
- https://github.com/ohmyzsh/ohmyzsh