-
Notifications
You must be signed in to change notification settings - Fork 4
script share

Bourne Shell(即sh)是UNIX最初使用的shell,平且在每种UNIX上都可以使用。Bourne Shell在shell编程方便相当优秀,但在处理与用户的交互方便作得不如其他几种shell。
Linux OS默认的是Bourne Again Shell,它是Bourne Shell的扩展,简称bash,与Bourne Shell完全兼容,并且在Bourne Shell的基础上增加,增强了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多C Shell和Korn Shell中的优点,有灵活和强大的编辑接口,同时又很友好的用户体验
C Shell是一种比Bourne Shell更适合的变种Shell,它的语法与C语言很相似。Linux为喜欢使用C Shell的人提供了Tcsh。
Tcsh是C Shell的一个扩展版本。Tcsh包括命令行编辑,可编程单词补全,拼写校正,历史命令替换,作业控制和类似C语言的语法,他不仅和Bash Shell提示符兼容,而且还提供比Bash Shell更多的提示符参数。

我接触csh是初次使用FreeBSD的时候,root用户默认是csh,一般用户默认是tcsh, 鉴于上边的问题,就没有深入学习过了。
Korn Shell集合了C Shell和Bourne Shell的优点并且和Bourne Shell完全兼容。Linux系统提供了pdksh(ksh的扩展),它支持人物控制,可以在命令行上挂起,后台执行,唤醒或终止程序。
####其他种类的 shell:
- grub shell
- busybox
sed, awk, grep, find 等等的程序都是配合起来使用比较厉害,单独没有多大意义。
这些语言本身已经相当完整,按照google的话来说,使可以算作development language了。所以如果可以,还是推荐使用这些或者未列出的比较完善的语言,毕竟无论是语法还是语义,还有库函数,都是shell无法比拟的。

###管道

- ^A 跳到最前端, 跟 Home 同样效果
- ^B 向左移一字符, 较少使用.
- ^C 重新编辑
- ^D 删除光标所在字符,或退出
- ^E 跳到最末端, 跟 End 同样效果
- ^F 向右移一字符, 较少使用.
- ^H 删除光标前一字符
- ^N 显示下一个历史命令
- ^U 删除光标前的所有字符
- ^K 删除光标后(包括当前光标)的所有字符, 较少使用.
- ^P 显示上一个历史命令
- ^R 查找命令
- ^T 交换当前光标字符和光标前一字符, 较少使用.
- ^W 删除前一字(word)
- ^Y 粘贴最后一次由 ^U 或 ^K 或 ^W 删除的字符
- ^J , ^O, ^M , 相当于回车, 较少使用.
- ^I 跟 Tab 一样效果, 一般使用 Tab . 自动补全命令或文件名
- !cmd 慎用! 一般用 ^R 代替.
- 在单个命令中创建目录树。
- 更改路径;不要移动存档。
- 将命令与控制操作符组合使用。
- 谨慎引用变量。
- 使用转义序列来管理较长的输入。
- 在列表中对命令分组。
- 在 find 之外使用 xargs。
- 了解何时 grep 应该执行计数——何时应该绕过。
- 匹配输出中的某些字段,而不只是对行进行匹配。
- 停止对 cat 使用管道。
- 使用文件名自动完成功能 (file name completion)。
- 使用历史扩展。
- 重用以前的参数。
- 使用 pushd 和 popd 管理目录导航。
- 查找大型文件。
- 不使用编辑器创建临时文件。
- 使用 curl 命令行实用工具。
- 最有效地利用正则表达式。
- 确定当前用户。
- 使用 awk 处理数据。
很多脚本都是起源于一条较长或者较复杂的命令或者几条条命令的组合
脚本也是程序,所以只有当会反复使用的情形下才会保存为脚本,否则直接顺序执行一遍就解决问题了。
#脚本的分类
每种脚本都有自己适用的方面,乱用会引起不必要的麻烦。
Makefile 文件,控制工程编译
autogen.sh 控制自动化工具的调用
configure 测试系统环境信息
shell 脚本只是一部分,并且具有一定的局限性。Google Shell Style Guide 推荐不超过100行,否则使用其他语言来编写,例如 Python 或者 Perl。
- If you're mostly calling other utilities and are doing relatively little data manipulation, shell is an acceptable choice for the task.
- If performance matters, use something other than shell.
- If you find you need to use arrays for anything more than assignment of ${PIPESTATUS}, you should use Python.
- If you are writing a script that is more than 100 lines long, you should probably be writing it in Python instead. Bear in mind that scripts grow. Rewrite your script in another language early to avoid a time-consuming rewrite at a later date.
$ cat hello.sh
#!/bin/sh
# author: oxnz
# print "Hello world!" and exit
echo "Hello world"
$dot-files 是nix系统个人目录下的一些配置文件,也就是以点开头的,比如vimrc,bashrc等。
其中主要推荐的有trash函数,extract函数和histop函数 第一个是取代rm命令的,避免了rm之后的暴走表情,第二个是取代tar xzf系列的,简简单单一个x file就可以完成解压。第三个命令是使得自己趋于更高效的使用shell,避免无限cd 和 ls。
python 脚本,用来查单词