Unix shell

shell 顾名思义为“壳”,主要是相对于系统内核来说的,可以理解为内核的“壳”,shell 负责将用户的指令解释并传给内核执行,直接接触内核是不被允许并危险的,所以 shell 就是一种命令解释器,常见的 shell有很多,分为图形界面 shell 和命令行 shell,命令行中最常用的就是 bash shell。

系统中,通过修改.bashrc文件来配置使用环境,输入source ~/.bashrc立刻使配置文件生效,如要配置全局生效,可修改/etc/bashrc 文件。

通过 cat /etc/shells 查看当前启用的 shell;通过 echo $SHELL查看用户的默认登录 shell。

Bash shell

在 Bash 中,通过 <Tab> 自动补全,使用 ctrl-r 搜索命令行历史记录(按下按键之后,输入关键字便可以搜索,重复按下 ctrl-r 会向后查找匹配项,按下 Enter 键会执行当前匹配的命令,而按下右方向键会将匹配项放入当前行中,不会直接执行,以便做出修改)。

输入 history 查看 1000 条命令行历史记录,再用 !nn 是命令编号)就可以再次执行该命令。

对文本的操作,有两个小技巧值得记忆:ctrl-a 可以将光标移至行首;ctrl-e 可以将光标移至行尾。

使用cd命令可以切换工作路径,~ 表示用户家目录,要访问家目录中的文件,可以使用前缀 ~,例如 vi ~/.bashrc。在脚本里则用环境变量 $HOME 指代家目录。

在两个工作目录之前来回切换是件很恼人的事情,可以使用cd -命令来快速在二者之前切换。

Vim 编辑器

当程序步骤复杂时,bash 有其局限性,所以要求用户熟悉至少一种基于文本的编辑器,编辑器可以将你的命令按顺序执行,称为脚本。通常 Vim 会是最好的选择(除了 vim 还有 Emacs 等编辑器)。

Vim 是从 vi 发展出来的一个文本编辑器。代码补全、错误跳转等功能特别丰富,在程序员中被广泛使用。vi/vim 分为三种模式,分别是命令模式(Command mode)输入/插入模式(Insert mode)底线命令/命令行模式(Last line mode)。 这三种模式的作用分别是:

命令模式:

用户启动vi/vim,就进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。命令模式只有一些最基本的命令(复制粘贴等等),因此通常需要底线命令模式扩展其功能。

输入模式/插入模式:

在命令模式下按i键,进入输入模式。

按下键盘ESC键,退出输入模式,切换到命令模式。完成文件的编辑后,在命令行模式中输入wq存盘退出,也可使用ZZ来达到同样的效果。

底线命令模式: