《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为了效率 : testI/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 < filetr -d '\r' < dos-file.txt ...以 > 改变标准输出program > filetr -d '\r' < dos-file.txt > UNIX-file.txt以 >> 附加到文件for f in dos-file*.txtdotr -d '\r' < $f >> big-UNIX-file.txtdone以 | 建立管道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 $1echo tenth arg is {$10}
2.7 简单的执行跟踪  打开执行跟踪功能会使得Shell显示每个被执行到的命令,并在前面加上“+”和一个空格。也可以在脚本里,用set -x命令打开执行跟踪,然后再用set +x命令关闭。

转载于:https://www.cnblogs.com/robbychan/archive/2013/05/28/3786668.html

《Shell 脚本学习指南 》 -- 背景知识与入门 [第一、二章]相关推荐

  1. Shell脚本学习指南 - 第二章入门篇

    shell脚本的第一行#! #! /bin/awk -f 内核会扫描文件开头的#!后面内容,跳过所有空白符号,寻求可以用来执行程序的解释器的full path和option(option后面的空格会识 ...

  2. Shell脚本学习指南(三)——文本处理工具

    文章目录 排序文本 行的排序 以字段的排序 文本块排序 sort的效率 sort的稳定性 sort小结 删除重复 重新格式化段落 计算行数.字数以及字符数 打印 打印技术的演化 其他打印软件 提取开头 ...

  3. 《Shell脚本学习指南》读书笔记

    P30-31 软件工具的原则 1.一次做好一件事 2.处理文本行,不要处理二进制数据 3.使用正则表达式 4.默认使用标准输入/输出 5.避免喋喋不休 6.输出格式必须与可接受的输入格式一致 7.让工 ...

  4. Shell脚本学习指南(七)——产生脚本

    文章目录 前言 路径查找 软件构建自动化 前言 本篇,我们将进一步处理更复杂的工作.我们认为这里举出的例子都是一般用得到的工具,它们每一个都截然不同,且在大多数UNIX工具集里也没有. 在篇中的程序, ...

  5. linux shell脚本学习指南,shell脚本学习指南[二](Arnold Robbins Nelson H.F. Beebe著)

    该进入第四章了,刚才看到一个帖子标题:我空有一身泡妞的好本领,但可惜自己是个妞.汗-这个...音乐无国界嘛,这个不应该也没性别界么? 第四章文本处理工具 书中先说明了以下排序的规则,数值的就不用说了, ...

  6. Shell脚本学习指南-查找与替换篇

    一.查找与替换 编写 Shell脚本时经常用到的两个基本操作: 1.文本查找 (searching) - 寻找含有特定文本的行 2.文本替换(substitution)- 更换找到的文本 可以使用固定 ...

  7. Shell脚本学习指南(六)——输入/输出、文件与命令执行

    文章目录 前言 标准输入.标准输出与标准错误输出 使用read读取行 关于重定向 额外的重定向运算符 文件描述符处理 printf的完整介绍 波浪号展开与通配符 波浪号展开 使用通配符 命令替换 为h ...

  8. Shell脚本学习指南(二)——查找与替换

    文章目录 前言 查找文本 简单的grep 正则表达式 什么是正则表达式 POSIX方括号表达式 基本正则表达式 匹配单个字符 后向引用 单个表达式匹配多字符 文本匹配锚点 BRE运算符优先级 匹配单个 ...

  9. Shell脚本学习指南(五)——变量、判断、重复动作

    文章目录 前言 变量与算术 变量赋值与环境 参数展开 展开运算符 位置参数 特殊变量 算术展开 退出状态 退出状态值 if-else-else-fi语句 逻辑的NOT.AND与OR test命令 ca ...

  10. 《Shell脚本学习指南》第一章 背景知识

    1.1 Unix简史 Unix第一版诞生于1970年,也就是贝尔实验室退出Multics项目不久. 在Unix广受欢迎的功能中,有许多是来自Multics操作系统. 其中最著名的有:将设备视为文件,以 ...

最新文章

  1. vs编译报错C1020: 意外的 #endif
  2. 2019年度CSDN博客之星TOP10榜单揭晓,你上榜了吗?
  3. FPGA之道(78)静态时序分析(四)内部时钟相关时序分析
  4. Routeros双adsl线路基于ip分段策略路由
  5. 如何创建字符串(OC)
  6. webpack环境搭建使用
  7. 傲娇Android二三事之操蛋的开发日记(第一回)
  8. php 正则 回溯,PHP正则匹配绕过
  9. php中忘记的函数1
  10. python html格式编码
  11. Nodejs 新特性 async await 的使用 以及使用 async await 处理异步
  12. 开源软件free download manager在windows defender中报毒
  13. 暴跌300亿,“撤离”中国!乔布斯12年前憋的大招,又把一个巨头逼下神坛
  14. SAP License:SAP顾问如何写运维报告
  15. windows temp用户问题
  16. java操作txt文件目录
  17. 镁光闪存颗粒对照表_海力士、南亚、镁光内存颗粒编码解析,妈妈再也不用担心你买内存条了...
  18. 【UE4 C++】角色拾取、替换武器(下)
  19. RC电路充放电时间的计算
  20. 美团王兴,为什么让骑手注册个体户?详解他的套路,望周知

热门文章

  1. 区块链入门笔记(五) —— 加密货币博弈论
  2. mac开发工具清单java
  3. 如何解决电脑触控板不能使用的问题 (双指上下滑动翻页)
  4. c++代码打印爱心图(适用初学者)
  5. RTI_DDS自定义插件开发 6 监听者
  6. 二、瞰景Smart3D软件安装及授权
  7. 背包九讲——全篇详细理解与代码实现
  8. 学习笔记(01):19年录制Zookeeper、Dubbo视频教程 微服务教程分布式教程 SpringBoot教程整合-技术选型和学后水平...
  9. WIFI状态下SecoClient链接故障
  10. MFC BMP设置Bitmap的分辨率DPI为600点 gdiplus 生成标签