写一个简易的shell脚本(一)

若是常常操做linux 或者配置文件的话以及平时开发和处理文本文件等,会有不少的重复工做,这时若是有一个简易的shell脚本,会大大提高工做的效率,所以我查阅了了一些资料,下载了shell脚本学习指南,大抵了解怎么去写一个简易的脚本,写一个脚本前,有些基本知识仍是须要了解的。在这里与你们分享。html

①shell脚本一般一开始都是#! /bin/sh  注:/bin/sh 是 c shell的命令解释器。详细了解参阅学习指南。linux

② shell 中的特殊符号shell

  1. ~:主目录,至关于$HOME
  2. `:命令替换
  3. #:shell脚本中的注释
  4. $:变量表达式符号
  5. &:后台做业,将此符号置于命令末端,则让命令于后台运行
  6. *:字符串的通配符
  7. (:启动子shell
  8. ):中止子shell
  9. \: 转义一下字符
  10. |:管道
  11. [:开始字符集通配符号
  12. ]:结束字符集通配符号
  13. {:开始命令块
  14. }:结束命令块
  15. ;:shell命令分隔符
  16. ‘:强引用
  17. “:弱引用
  18. <:输入重定向
  19. >:输出重定向
  20. /:路径名目录分割符
  21. ?:单个任意字符
  22. !:管道行逻辑NOT

③ shell识别三种基本命令函数

内建命令,shell函数,以及外部命令;工具

内建命令:shell自己所执行的命令,例如 cd,read,test,echo,printf学习

shell函数:以shell语言写成,能够像命令那样引用。 this

外部命令:由shell的副本(新的进程)所执行的命令。spa

④基本命令符:
1>变量:  name= “my name ”  或name=name 注:有空格需加双引号
2>输出: echo &name 输出变量.net

3>echo name 输出内容htm

经常使用 echo -c 忽略最后一个字符。 -n 换行 -f清屏 等

4>printf: 模仿于c语言的printf()  \n 换行  %s 参数的输出。

5>cat:未指定任何参数,读取标准输入,写入标准输出。

带有最经常使用选项的tr命令格式为:(linux 命令复习)
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
这里:
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中全部输入字符。
-s 删除全部重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
input-file是转换文件名。虽然可使用其余格式输入,但这种格式最经常使用。

6>重定向与管道

例vi file.txt   "a bc"; 

以<改变标准输出

 tr -d 'a' < file.txt  

以>改变标准输入

cat file.txt | tr -d 'a' > new_file.txt  

以>> 附加文件

program >>file.txt 可将program的标准输出附加到File的结尾处

若是目标文件不存在,>>重定向符会从新建一个。若是存在,不会覆盖文件,附加到结尾处。

以 | 创建管道

p1 | p2 可将p1的标准输出修改成p2的标准输入。

例tr -d 'a' <file.txt | sort  >new_file.txt (sort排序 )

sort用法 详见:http://www.cnblogs.com/dong008259/archive/2011/12/08/2281214.html

7> 特殊文件

/dev/null 位桶 传送到此的文件会被丢掉

/dev/tty 

8>简单的执行跟踪

set -x 打开跟踪功能   set+x 关闭跟踪功能

⑤文本处理工具

1> uniq 

-c 在每一个输出行以前加上该行重复的次数

-d 显示重复的行

-u 显示未重复的行

例:JordandeMac-mini:~ jordan$ sort uniq.txt 

chun

fan

ning

ning

sun

JordandeMac-mini:~ jordan$ sort uniq.txt | uniq -c

   1 chun

   1 fan

   2 ning

   1 sun

JordandeMac-mini:~ jordan$ sort uniq.txt | uniq -u

chun

fan

sun

2> fmt 格式化段落

fmt -s 切割较长的行

fmt -w n 设置输出行宽为n个字符(默认75)

例:fmt 能够将字母分割,可是不能出现字符,出现符符号则会以下

JordandeMac-mini:~ jordan$ fmt -w 1 fmt.txt (有符号)

my

name

is

ninghcunsun,I

like

playing

games

in

my

spare

time.I

enjoy

this

life.

JordandeMac-mini:~ jordan$ fmt -w 1 fmt.txt 没有符号

my

name

is

ninghcunsun

I

like

playing

games

in

my

spare

time

I

enjoy

this

life.

3>sed命令大全 (很是重要)

http://man.linuxde.net/sed

相关文章
相关标签/搜索