shell基础

Table of Contents

1 帮助

任何shell书籍或者文档都不可能覆盖命令的所有参数使用,在Linux中,当需要更多命令帮助时,请使用man和info。

man是简短的帮助文档,GNU觉得man比较落后,开发了info,info具备超链接,以及一些开发文档,内容更加丰富,多数时候通过man只能获得大致信息,更详细的可以用info查看,所以info可和man起互补作用。pinfo是具备lynx浏览器风格的info。

1.1 man

通常会看到一些文档上提示使用man参考帮助信息,格式如:ls(1)。

括号里的数字叫“章节编号”,例如stat(1)和stat(2)虽然名字一样,但代表了不同的帮助,具体的章节号信息,通过man man可以找到。

1.1.1 搜索

-k:按关键字搜索帮助,如:

$ man -k search

用whatis命令也搜索手册的概述,可以用通配符、正则。

1.1.2 更新man库

man中的文档是由mandb命令更新。在Crontab下有一个自动更新的脚本,默认系统会每天自动更新:

/etc/cron.daily/man-db.cron

如果库更新失败,我们在用man -k搜索时就会出错:

$ man -k passwd
passwd: nothing appropriate.

这种情况直接手动运行mandb命令更新即可。

1.2 其他命令

help:Bash内置的命令,语法帮助,注意zsh中没有该命令。

2 快捷键

我们会有很大一部分时间是在shell中生活,掌握了快捷键可以大大提高效率,下面我总结了常用的快捷键,掌握全部则大大提高你的工作效率。

移动:

Alt+b 前移一个单词
Alt+f 后移一个单词
Ctrl+e(End) 移动到行尾
Ctrl+b 往左移动一个字符
Ctrl+f 往右移动一个字符
Esc+b 往左移动一个单词
Esc+f 往右移动一个单词

删除字符:

Del或Ctrl+d 删除光标所在位置的字符
Back Space(Ctrl+h) 删除光标所在字符的前一个字符
Esc+d 删除一个单词
Ctrl+退格、Ctrl+w 删除前一个单词
Alt+d 删除后面单词,删除单词后,命令保存到内存中的,使用Ctrl+y粘贴
Alt+y 循环粘贴

删除行:

Ctrl+k 由光标开始,删除右边至行尾的所有字符
Ctrl+u 由光标开始,删除左边至行首的所有字符
Ctrl+a、Ctrl+k 删除整行

复原操作:

Ctrl+y 把之前删除的字符或字符串复制到光标所在位置(Alt+y可以循环粘贴)

重复执行:

Esc+N(重复次数) 重复操作N次
Alt+. 上一条命令的最后参数
Alt+<n> 上一条命令第n个参数,这里的“参数”和命令接受的“参数”不一样,这里的参数是上条命令按空格分割开的。比如要使用上条命令第二个参数:Alt+4、Alt+.

搜索历史:

Ctrl+r 搜索执行过的命令
Ctrl+p 调出前一个命令
Ctrl+n 调出下一条命令
Esc+< 调出第一个历史命令
Esc+> 移到最后个历史命令后面,即等待键入指令的现行命令行

补全:

Tab或Esc+.(或_)  
Esc+@ 补全主机名
Esc+~ 补全用户名
Esc+$ 补全变量名

其他:

Ctrl+l 清屏
Ctrl+s 冻结当前输入,Ctrl+q解冻