Unix Shell学习杂记

最近做了一些Unix Shell编程的回顾,其实Unix是个非常优秀的操作系统,也许从易用性和用户体验上它不如Window XP。但底层的许多思想和脚本技术不断演化,包括了很多优秀思想和算法、设计策略,也是非常值得我们借鉴和学习的。虽然在工作中暂时不需要用Shell编程,不想让以前的积累逐渐淡忘,所以还是觉得应该留下一点些心得体会。

摘录了一些关于Shell的定义:文字与操作系统外部最主要的接口就叫做shell。


shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shell script(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。


在回顾Unix Shell编程时有两个印象比较深的key point:1、Unix对cron文件的配置,它对日期格式提供一个匹配表达式可以让操作系统按照格式定义的Schedule来运行一些任务(Task),这让我想起了Spring集成的quartz以及非常精确强大的CronTrigger表达式,可以为程序配置复杂的Schedule通知应用程序执行某个Job。2、tee命令将输出流重定向到标准输出和另外一个文件副本或者管道中,这种对流的重定向思想我觉得借鉴罪明显的地方就是Log4j,本质上就是对Log输出流的一个重定向,并提供了比较强大的匹配过滤规则,可以对流中数据进行format。其它学习笔记——

  • kill命令的作用本质是发送一个信号(Signal)给一个Process,只是由于用途多数情况下是为了终止这个Process才取名kill。
  • 重定向>和>>,前者是覆盖方式,后者是追加填充方式
  • 变量置换和引用的区别,置换是将元字符进行解析的过程,引用是取消对某些元字符的置换处理。
  • 环境变量在对所有子进程起作用之前必须先export。
  • shell对引号的区分标准:单引号表示逐个取一串字符、双引号表示允许其中变量替换、反引号表示允许执行命令并替换引号中命令为为输出结果。
  • 在创建一个新进程之前,本进程会调用fork命令克隆自身
  • 当一个进程被克隆时,原来的进程就叫做父进程,由PDID属性存储父进程的PID
  • 链接并不是文件的一种独特类型,文件系统允许不只一个目录项指向某个特定文件

当初学习Shell的时候有三个概念非常迷惘,这就是grep、awk和sed,查阅了一些资料也只是大概清楚:

1、grep, global search regular expression and print out。它是在一个或者多个文件中搜索字符串模版,如果模版包括空格则必须被引用。模版后所有字符串被看作文件名,搜索结果送到屏幕不影响原文内容。可能是用得罪广泛的一种匹配查找方式了。

2、awk是一种优良的文本处理工具,很强大的数据发动机。名字来源于三位创始人Alfred Aho、Peter Weinberger、Brain Kernihan。它是一种样式扫描和处理语言,允许简单的创建简短程序,读取输入文件,可为数据排序、处理数据执行计算以及生成报表等。它比起只匹配的grep,增加了处理的能力,当然速度会下降,资源消耗会增加。

3、sed是非交互式上下文编辑器,编辑那些很大的文件或者要求对输入的数据在一趟扫描中进行多个全局函数。它编辑文件或者标准输入的一份拷贝,标准输入可能来自于键盘、重定向、变量或者另外的管道。

 

对于操作系统而言,在机器语言之上的层面上看,CPU执行的大多计算都是在处理内存中的一些文本(Text)的过滤、调用运行、管理,比起高级编程语言Java、C++而言,这些脚本语言具有更强大的文本处理能力,语法简洁。不知道以后有没有机会深入学习Unix Shell或者在工作中使用,anyway,Shell确实是很优秀的一种技术,一点都不过时!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值