码迷,mamicode.com
首页 > 其他好文 > 详细

lesson - 10 课程笔记

时间:2015-04-09 00:36:26      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:

CTRL+C CTRL+D :前者用于结束一个程序,后者用于结束终端输入。
--符号
*:匹配任意长度的任意字符
?:匹配任意一个字符
#: shell 中表注释
\: 脱意符号
[]:任意属于字符组的字符
{}:将大括号中的字符串以及前导字符串和后继字符串作为匹配条件
>>:附加到指定文件的结尾
>:输出重定向
<:输入重定向
|:管道符,用于连接多个命令,前一个命令的输出作为后一个命令的输入
||:逻辑或
&&:逻辑与,前面命令成功后执行后面命令
&:在后台执行,前面命令后执行后面命令,不强调成功与否
 
~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
shell 脚本的优点:
 1.一次性完成目标
 2.不用重复键入一系列命令
 3.简化用户的操作
~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
二、常用的Shell类型
~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
常用Shell:Bourne Shell,Bourne Again Shell ,C Shell, Korn Shell,Perl Shell
Bourne Again Shell: 简称Bash ,提供,命令历史,命令补全,命令编写等功能,只需命令行键入bash并回车
Korn Shell:简称Ksh,较强的作业控制能力,如挂起,后台执行,唤醒,终止以及窗口功能
Perl Shell(Practical Extraction和Report Language):用来编写web应用程序的通用网关接口(GCI)
Bourne Shell:简称bsh,简单,编写能力强,但操作使用不够方便,不支持后台运行,
       总是接管屏幕和键盘的控制,只需命令行键入sh并回车
C Shell:提供方便的用户界面设计,提供命令行编辑,拼写校正,命令历史替换,作业控制等功能。命令行键入csh回车,tcsh回车
~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
三、Shell基本语法
~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
1.注释:#注释内容、  #!:操作系统使用哪一个Shell,绝对路径名。
2.大小写区分:UNIX与Linux都是区分大小写的,Shell脚本同样也区分大小写
3.IO重定向:在Linux系统中,数据流可以分为三种:数据输出,数据输入,错误输出。相应地,每一个进程也都有三个特殊的文件描述    指针:标准输入(standard input,stdin,文件描述指针为0),标准输出(standard output,stdout,文件描述指针为1),标             准错误输出(standard error,stderr,文件描述指针为2)。这三个特殊的文件描述指针使得进程在通常情况下接受标砖输入             设备的输入,由标准输出设备显示输出。
   *标准输入通常是指传给一个命令的键盘输入,例如运行ls -al 其中-al是传给ls命令的标准输入
   *标准输出时一个命令的执行结果,例如运行cat /file1.Doc命令后所看到的文件内容,标准输出通常是被定向到显示器的
   *标准错误通常也被定向到显示器,例如运行cat /file1.Doc:没有此文件或目录。
   !有两种基本的方法可以用来重定向标准输入和标准输出和标准错误:可以利用管道把这些数据流之一输送给另一条命令,也可  以利用I/O重定向把这些数据流之一重定向到另一个文件。管道以及I/O重新定向是Linux系统中特有的噶年。所谓管道是指将某个命令的输出结果传送到另一个命令,当成另一个命令的输入,其代表符号是‘|‘.所谓I/O重定向是指将命令执行的结果重新导出到其他设备或文件(以>或>>来表示),或是重新导入到其他的设备或文件(以<或<<来表示)
    ~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
    常用输入输出重定向命令格式说明
    命令1 > 文件1: 将命令1的输出结果重定向到文件1(错误信息显示在屏幕)
    命令1 &>文件1: 将命令1的输出结果和标准错误输出一起重定向到文件1(不会显示在屏幕)
    命令1 >>文件1: 将命令1的输出结果追加到文件1中
    命令1 2>文件1: 将命令1的标准错误输出结果重定向到文件1中(错误信息输入到文件中,不会显示在屏幕)
    命令1 < 文件1: 将文件1作为命令1的标准输入
    命令1 <<字符串1:允许连续输入数据,直到接收到字符串1    
    ~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~~~~***~~~
4.输出重定向和输入重定向: 前者是将命令或程序的执行结果通过屏幕或文件输出,
              后者是将输入设备(如键盘或文件)提供给命令来执行。
       
四、变量
1、系统变量和局部变量
    env: 列出用户的变量()全局变量
    env |grep ‘^a‘:过滤以a开头的变量
    set:列出用户的变量  
    export a=1 :声明变量
    bash  : 
    unset a : 取消变量
    单引号:强引用,解析特殊字符    b=‘echo $a‘ echo $b /echo 1
    双引号:弱引用,脱意           b="echo $a" echo $b /echo $a
    反引号:解析引号中命令的结果    b=`echo $a` echo $b /1
2. $PS1=‘[\u@\h \W] \$ ‘ 
    \u:username  ;
    \h:hostname ; 
    \W:相对path,最后一个目录 
    \$:[$,#]如果是root时,提示符为:# ,普通用户则为:$  
    \w: 绝对路径,家目录为~;\v :BASH的版本信息 ;
    \d :代表日期,格式为weekday month date,例如:"Mon Aug1" 
    \t :显示时间为24小时格式,如:HH:MM:SS 
 
五、cut 

 作用:按列提取文件
 参数: 

    -d 指明列分隔符 -f 选择输出的区域 -c 指定字符位置
  -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
  -c :以字符为单位进行分割。
  -d :自定义分隔符,默认为制表符。
  -f :与-d一起使用,指定显示哪个区域。
  -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除
 语法: cut -b 8,3-5
  3-5,8:cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦 
  cut -b -3
  -3表示从第一个字节到第三个字节
  cut -b 3-
  3-表示从第三个字节到行尾
  cut -b -3,3-
  输出整行,不会出现连续两个重叠的
  cut -c 
  -c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码. 当遇到多字节字符时,可以使用-n选项,

    cut -d : -f 1,3-5

  提取按照:分割的第一列,第三列到第五列
  sed -n l file
  空格到底是由若干个空格组成的还是由一个制表符组成,-n 后L的小写字母

六、sort 
 作用:将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序
 参数: -b 忽略每行前面开始出的空格字符。
  -c 检查文件是否已经按照顺序排序。
  -d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
  -f 排序时,将小写字母视为大写字母。
  -i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
  -k 选择以哪个区间进行排序。
  -m 将几个排序好的文件进行合并。
  -M 将前面3个字母依照月份的缩写进行排序。
  -n 依照数值的大小排序。
  -o<输出文件> 将排序后的结果存入指定的文件。
  -r 以相反的顺序来排序。
  -t<分隔字符> 指定排序时所用的栏位分隔字符。
  -u 去除重复行

  +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
 语法:sort -n -t ‘ch‘ -k num file
  ch 字符的第num 段按照数值排序

七、wc: Word Count
 作用:计算文件的单词数,行数,字符数,并将统计结果显示输出 
 参数:-c 统计字节数。
  -l 统计行数。
  -m 统计字符数。这个标志不能与 -c 标志一起使用。
  -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
  -L 打印最长行的长度。
  -help 显示帮助信息
  --version 显示版本信息
 语法:wc fileNM 
  7 8 70 test.txt
  行数 单词数 字节数 文件名
八、uniq
作用: 报告或忽略文件中的重复行,一般与sort 连用。
选项:-c count 在每列前显示该行重复出现的次数
    -d repeated, 仅显示重复出现的行列
    -f skip field 忽略比较指定的栏位
    -s skip chars 忽略比较指定的字符
    -u unique 仅显示出现一次的行列
    -w 字符位置
实例:
    显示不重复行数据
    uniq file / sort file |uniq  / sort -u file 、uniq -u file 
    统计各行出现的次数
    sort file |uniq -c 
    显示重复行数据
    sort file |uniq -d
九、tee
作用:将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin . 简单的说就是把数据重定向给文件和屏幕上。
注意:存在缓存机制,每1024 字节输出一次, 若从管道接受数据,应该是缓存区满,才将数据转存到指定的文件中。若文件内容不到1024字节, 则接受完从标准输入设备读入的数据后,将刷新一次缓冲区,并转存数据到指定文件。
选项:-a 向文件中重定向时使用追加模式
      -i 忽略终端(interrupt)信号
实例:ls |tee out.txt |cat -n
十、tr 
 作用:标准输入中通过替换或删除操作进行字符转换
 语法:tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
 参数:-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
  -d 删除字符串1中所有输入字符。
  -s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
  input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
 字符范围:指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
  [a-z] a-z内的字符组成的字符串。
  [A-Z] A-Z内的字符组成的字符串。
  [0-9] 数字串。
  \octal 一个三位的八进制数,对应有效的ASCII字符。
  [O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
 tr中特定控制字符的不同表达方式
  速记符含义八进制方式
  \a Ctrl-G 铃声\007
  \b Ctrl-H 退格符\010
  \f Ctrl-L 走行换页\014
  \n Ctrl-J 新行\012
  \r Ctrl-M 回车\015
  \t Ctrl-I tab键\011
  \v Ctrl-X \030
 语法:cat file | tr "abc" "xyz" > new_file
  将文件中的abc 替换为 xyz
  cat file | tr -d "Snail" > new_file
  凡是在file文件中出现的‘S‘,‘n‘,‘a‘,‘i‘,‘l‘字符都会被删除!而不是紧紧删除出现的"Snail”字符串
  cat file | tr -d "\n\t" > new_file
  删除文件file中出现的换行‘\n‘、制表‘\t‘字符
  cat file | tr -d "\n\t" > new_file
  删除文件file中出现的换行‘\n‘、制表‘\t‘字符
  cat file | tr -s [a-zA-Z] > new_file
  删除“连续着的”重复字母,只保留第一个
  cat file | tr -s "\n" > new_file
  删除空行

lesson - 10 课程笔记

标签:

原文地址:http://www.cnblogs.com/LinuxSuDa/p/4404734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!