《Shell 脚本学习指南 》 -- 背景知识与入门 [第一、二章]
2013-05-28 10:44
507 查看
《shell 脚本学习指南》 -- 《UNIX in a Nutshell》 UNIX工具集,UNIX的中心思想与软件工具设计的原则。 各章介绍 第1章,背景知识 : 许多软件工具设计上的哲学。 POSIX 可移植的OS接口 将设备视为文件,以及特意不将命令解释器或shell整合到OS中。 软件设计的原则 『 (1) 一次做好一件事 (2) 处理文本行,不要处理二进制数据 (3) 使用正则表达式 (4) 默认使用标准输入输出避免喋喋不休 (5) 输出格式必须与可接受的输入格式一致 (6) 让工具去做困难的部分 (7) 构建特定工具前,先想想 第2章,入门 : 编译语言与脚本语言间的取舍开始讨论。 编译型语言 : 的好处是高效,缺点则是:它们多半运作于底层,所处理的是字节,整数,浮点数或是其他机器层级的对象 C++里,就很难将一个目录里所有的文件复制到另一个目录中。 脚本语言 : 解释器读入代码,并将其转换成内部的形式,再执行。但是 : 解释器本身是一般的编译型程序。 (1) 简单性 : Shell 是高级语言 (2) 可移植性 : POSIX标准! (3) 开发容易 第3章,查找与替换 第4章,文本处理工具 第5章,管道的神奇魔力 第6章,变量,判断,重复动作 第7章,输入/输出,文件与命令执行 第8章,产生脚本 第9章,awk的惊人表现 第10章,文件处理 第11章,扩展实例:合并用户数据库 第12章,拼写检查 第13章,进程 第14章,Shell 可移植性议题与扩展 第15章,安全的shell脚本,起点 第2章,入门----------------------------- : 编译语言与脚本语言间的取舍开始讨论。 编译型语言 : 的好处是高效,缺点则是:它们多半运作于底层,所处理的是字节,整数,浮点数或是其他机器层级的对象 C++里,就很难将一个目录里所有的文件复制到另一个目录中。 脚本语言 : 解释器读入代码,并将其转换成内部的形式,再执行。但是 : 解释器本身是一般的编译型程序。 (1) 简单性 : Shell 是高级语言 (2) 可移植性 : POSIX标准! (3) 开发容易 2.4 自给自足的脚本 : 位于第一行的 #! : 内核会扫描该行其余的部分,看是否存在可用来执行程序的解释器的完整路径 初级陷阱 #!后 -> 1,长度限制。2,是否有完整路径名称... #! /bin/sh - "安全性的考虑 who | wc -l *2.5 Shell 的基本元素 2.5.1 命令与参数 分号 (;) 可以分隔同一行里的多条命令。 (&) Shell 将执行其前面的命令,这意味着Shell不必等到该命令完成,就可以继续执行下一个命令。 Shell识别三种基本命令 : 内建命令、Shell函数以及外部命令。 (1) 内建命令 : 是由shell本身所执行的命令。 必 要 性 : cd、read 为了效率 : test I/O命令 : echo、printf (2) Shell函数: 它们可以引用。 (3) 外部命令 2.5.2 variable 变量 hp@ubuntu:~$ myvar=hehehahahheihei hp@ubuntu:~$ echo $myvar hehehahahheihei hp@ubuntu:~$ fullname="lilei hanmei lucy" hp@ubuntu:~$ echo $fullname lilei hanmei lucy 2.5.3 echo 输出 echo : 参数打印到屏幕,newline结尾。 2.5.4 printf 输出 hp@ubuntu:~$ printf "hello world\n" hello world hp@ubuntu:~$ printf "Hi, prints '%s %s'\n" Hello World Hi, prints 'Hello World' 2.5.5 基本的IO重定向。 2.5.5.1 重定向与管道 以 < 改变标准输入 program < file tr -d '\r' < dos-file.txt ... 以 > 改变标准输出 program > file tr -d '\r' < dos-file.txt > UNIX-file.txt 以 >> 附加到文件 for f in dos-file*.txt do tr -d '\r' < $f >> big-UNIX-file.txt done 以 | 建立管道 program1 | program2 ... tr -d '\r' < dos-file.txt | sort > UNIX-file.txt 总结 : tr 是个重要的命令! -c, -C, -d, -s. UNIX工具处理程序,不妨将数据想象成水管里的水! 2.5.5.2 特殊文件 /dev/null 与 /dev/tty /dev/null - bit bucket. /dev/tty - 当程序打开此文件,unix会自动将它重定向到一个终端。 2.5.6 基本命令查找 如果要编写自己的脚本,最好准备自己的bin目录来存放它们。 $PATH=$PATH:$HOME/bin 要让修改永久生效,在.profile文件中把你的bin目录加入$PATH, 每次登录时Shell都会读取.profile文件。 2.6 访问Shell脚本的参数 Shell脚本的命令行参数,同时也是函数的参数。各参数都由整数来命名,超过9就应该用大括号。 echo first arg is $1 echo tenth arg is {$10} 2.7 简单的执行跟踪 打开执行跟踪功能会使得Shell显示每个被执行到的命令,并在前面加上“+”和一个空格。 也可以在脚本里,用set -x命令打开执行跟踪,然后再用set +x命令关闭。
相关文章推荐
- Shell脚本学习指南 [ 第一、二章 ] 背景知识、入门
- 《Shell 脚本学习指南 》 -- 背景知识与入门 [第一、二章]
- SHELL脚本学习指南——背景知识
- Shell脚本学习指南-入门
- 学习 shell脚本之前的基础知识
- Shell脚本学习指南之查找与替换介绍
- Shell脚本学习笔记(一)--预备知识
- [网摘学习]Shell脚本编程学习入门:Shell编程基础
- Shell 脚本专家指南 学习笔记1
- Shell 脚本专家指南 学习笔记2 数据重定向
- 学习 shell脚本之前的基础知识
- Linux简单入门(十二)shell脚本之前的基础知识
- Shell脚本学习指南
- 学习shell脚本之前的基础知识[图文]
- shell脚本学习指南笔记(第二章)
- Shell脚本编程学习入门 01
- 学习shell脚本遇到的小知识!
- 学习shell脚本之前的基础知识
- Shell脚本学习入门(一)
- Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具