Linux基本功十三:shell脚本Sed & Awk 及软件的安装

    shell脚本编程Scripting Language【把命令放到一个文本文件里,让其自动执行】 JSP-Java Service Page;perl python shell [bin/sh]--[bin/bash]不同的脚本其语法是不一样的。例如 bash csh tcsh ksh等
1、基础命令用法总结
 wc命令。Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
 -c 统计字节数。
 -l 统计行数。
 -m 统计字符数。这个标志不能与 -c 标志一起使用。
 -w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
 -L 打印最长行的长度。
(1)看文件的个数
  ls | wc -l
(2)看看有几个文件详细信息
  ls -l |grep ^d
(3)看有多少个文件夹
  ls -l | grep ^d |wc -l
(4)查看命令的位置:startx,service
   which startx;
   vi `which startx`
(5)[bin/sh]与[bin/bash]的区别
  “sh”并不是一个程序,而是一种标准(POSIX),这种标准,在一定程度上(具体区别见下面的“Things bash has that sh does not”)保证了脚本的跨系统性(跨UNIX系统)
  bash的POSIX标准
  在一般的linux系统当中(如redhat),使用sh调用执行脚本相当于打开了bash的POSIX标准模式(等效于bash的 --posix 参数) 一般的,sh是bash的“子集”(不是子集的部分,具体区别见下的“Things sh has that bash does not”)
(6)脚本的分类
  第一个字符非#,表示bash脚本;
  第一个字符为#,第二个字符非!,表示为csh脚本;
  第一个字符是#,第二个字符是!
(7)shell三种执行方式(前面有总结):
   直接执行路径相当于打开一个新的shell,bash aa也是打开一个新的bash;
   注意export的作用这是在该shell和子shell里可见;
   第一:要求可执行权限,且在新shell执行。a+x,输入脚本的绝对路径和相对路径;
  ./root/backup
  ./backup
  第二:bash脚本 或 tcsh脚本,是在新的shell里执行。表示以bash或tcsh来执行脚本
  -bash  /root/backup
  第三:在脚本的前面加“.”,在当前的shell里执行;
实例:关闭系统中的apache的shell脚本:
 #here ,the " " in AAA is very important!
 #httpd is a Apache program,the next program is going to kill them.
 AAA="`pgrep httpd`"
 [ -z "$AAA" ] && echo 'httpd is not running!' && exit
 for i in $AAA
	do 
	  kill -9 $i
	done
 echo httpd is kill
2、sed流编辑器(Stream Editor)shell文本里修改的时候可以用sed。适合行的处理。 
(1)sed替换单词 打印 删除 
  sed的修改没有对源文件进行修改,而只是输出到屏幕;
 sed -e 's/root/shrek/g' /etc/passwd > /tmp/a
  cp /tmp/a /etc/passwd
   打开包含shrek开头的行
   sed -n -e '/shrek/p' /etc/passwd
   只显示以shrek单词的行
   sed -n -e '/\<shrek\>/p' etc/passwd 
   删除包含bash的行
   sed -e '/bash/d' /etc/passwd
   打印并替换
   sed -n -e '/\<shrek\>/s/shrek/nologin/p' etc/passwd 
   删除#开头和空格
   sed -e '/^#/d' -e '/^$/d' /etc/squid/squid.conf
   s/old/new 替换
   删除1至10行,替换yellow为black;
   sed -e '1,10d' -e 's/yellow/black/g' yel.dat
   执行多个命令的的3种方式:多次替换
   (1)用-e 参数直接执行多个命令:
  sed -e 's/root/shrek/g' -e 's/bash/nologin' /etc/passwd
   (2)sed -f script_file。当然我们也可以将两个命令写入某个文件
   cat operation
   在operation文件里:
  #!/bin/bash
   s/root/shrek/g
   s/bash/nologin/g
   执行命令:
  sed -f operation /etc/passwd
    (3)进一步简洁,可以写成一个脚本来执行:
    cat operation
   在operation文件里:
   #!/bin/sed -f
   s/root/shrek/g
   s/bash/nologin/g
   执行命令:
   ./operation /etc/passwd
   -e 执行命令
   -n 默认不打印 只有和p同时使用的时候才会输出; 
   -f 执行相应的文本
   p打印

类似实例如下:
   a、 sed -e 's/shrek/root' -e 's/root/shrek' /ect/passwd
   b、sss是一个文件:
  vi sss
      s/root/shrek
      s/shrek/root
      执行以下命令:
sed -f sss /etc/passwd
   c、脚本文件
      vi sss
      #!/bin/sed -f
      s/root/shrek
      s/shrek/root
      执行以下命令:
<pre name="code" class="objc">chmod a+x sss
./sss /etc/passwd
 
  
3、awk是一种处理文本的编程语言工具,不仅处理行,还能处理列,功能更强;    chkconfig --list | awk '$1=="httpd" {print $5}'(1) 查看apache服务的开关问题,httpd时apache超文本传输协议服务器的主程序;处理列;$1,$2,$3表示第1,2,3列;$0表示第一行;    统计打开的服务有多少个?    awk处理列的问题:
 chkconfig --list |awk '{printf $4}'  //单引号是避免脚本的影响;
    chkconfig --list |awk '$1=="httpd" {print $4}'
    chkconfig --list |awk 'BEGIN {iii=0} {if($5=="3:on") iii=iii+1} END{print iii}'
    if[ `chkconfig --list | awk '$1=="httpd" {print $5}'` = "3:on" ];then echo ok;fi
    awk处理行文本;
(2)a、在/etc/passwd下是用bash的用户有多少个?
    awk -F: 'BEGIN {iii=0} {if($7=="/bin/bash") iii+=1} END{print iii}' < /etc/passwd
     以:作为分隔符;统计第七列中有/bin/bash的用户的个数;
     awk -F: '{print $1 "UID is " $3}' /etc/passwd
     b、利用脚本文件来处理:awk -f excute_file;
 vi aa
     BEGIN {iii=0}
     {if ($5=="3:on") iii+=1}
     END {print iii}
     执行命令:
chkconfig --list | awk -f aa
通过info可以查看帮助文档,有*的可是点击打开,是小例子,按U返回:
 info awk
 info sed
     -F;  //表示以冒号作为分隔符;
     函数与操纵的东西需要用{ }括起来;
   实例应用:  用awk来分析日志文件:
     cd /var/log/httpd
     这里我们可以用sed和awk来分析这些数据,统计里面的次数;

4、软件的安装
(1)源码软件的安装
    tar -xvfj http...bz2 //解压
    cd httpd  
    ./configure  //配置环境
    make         //编译
    make install //安装
    uninstall    //卸载
    (2)*1386.rpm安装包和windows里的软件包一样的,打包的二进制安装文件;
     RPM包安装:
     rpm -ivh somesoft.rpm //安装 
     rpm -e somefost.rpm  //反安装 
     rpm -q somefost 或 rpm -qpi somefost.rpm//查询 
    (3)或者直接打开软件商店,直接点击安装。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值