Shell需要依赖其他程序才可以完成任务。Shell脚本语言与编译行语言的差异在于许多中大型的程序都由C ,C++,JAVA,ADa,Pascal,Fortran 来写,然后由源代码转换为目标代码,然后直接通过计算机来执行编译语言虽然高效,但是运行于底层,处理都是字节,整数,浮点数或者其他的机器层的对象。(ADa,Pascal,Fortran语言还从未接触过,需要补充学习了解一下)
而列如:C++面对将一个目录中的文件复制到另外一个目录中,就很难进行。Shell执行方式为由解释器(interpreter)(解释器本身为编译行程序)
Shell的优点:
- 简单性:可以简洁的表达复杂操作
- 可移植性:可已不需要修改就在不同的系统上执行
- 开发容易:可以在短时间内写一个功能强大的脚本
关于解释-----#!
Shell------>unix(要求内核启动一个新的进程,内核知道为编译型程序做,但是shell是非编译型程序)------>unix发现不是编译型时会启动一个新的/bin/sh副本来执行程序。
因为现在每个unix中不只有一个shell,需要一种方式告诉unix来执行那个shell,方法为:脚本文件中的第一行来设置。在第一行用#!这两个字符。
初级注意地方:
- #!这一行的长度为63-1024,但最好不要超过64个字符
- 脚本的迁移取决于是否有完整的路径
- 别再选项(option)之后放置任何空白
- 需要知道解释器的完整路径
- 一些旧的系统不具备#!
Shell的基本元素命令:
1.内建命令2.shell函数3.外部命令
执行流程
Shell的变量:shell的变量可以为空值,开头是一个字母或者下划线符号
Shell的输出:echo(有版本限制)printf延用了C++的方式,但是pringf不会像echo提供换行如下(printf “hellow ,word\n”)
基本的i/o重定向
- 标准输入2.标准输出3.标准错误输出
- 标准输入输出的修改
- < 改变标准输入
- > 改变标准输出
- << 附加到文件
- | 以管道建立
举例:tr -d ‘\r’ <dos-file.txt | sort>UNIX-file.txt << xxxx.txt
补充:tr 转换字符,大小写转换。
Shell中特殊的文件:/dev/null+/del/tty
Shell 打开执行跟踪命令
执行时:Sh -x shellName
脚本中添加方式:1.set -x 2. set+x
查找与替换
- Grep(固定字符串) 列:who | grep -F austen
- 正则表达式:是一种表示方式,让你查找匹配特定准则文本
就先这么多吧!