shell语言 .1

shell 也是操作系统中的一个软件 它包含在linux的内核外面,为用户和内核之间的交互提供了一个接口
系统中的命令用shell去解释 shell接受系统回应的输出并现实到屏幕上

对我们在shell中执行的命令做一个记录 方便下次执行
  103  vim ip_show.sh
   #!/bin/bash   使用/bin/bash进行解释
   ifconfig eth0
  104  chmod +x ip_show.sh
  105  sh ip_show.sh  没有加执行权限可以用sh 来运行
  106  /root/Desktop/ip_show.sh  加了执行权限可以使用绝对路径来运行
  107  vim ip_show.sh
  108  /root/Desktop/ip_show.sh
  109  vim ip_show.sh
  110  sh ip_show.sh
  111  vim ip_show.sh
  112  sh ip_show.sh
  113  user
  114  sh ip_show.sh
  115  hostname
  116  hostnamectl

vim /etc/vimrc
编写如下内容 
map <F4> :call WESTOS();<cr>'s 按f4呼出  或是
autocmd BufNewFile *.sh exec ":call WESTOS()" 每当打开一个新的.sh文件时会自动调用为westos的内容 
func WESTOS()
        call append(0,"######################################")
        call append(1,"# Auther:                WPh".("          #"))
        call append(2,"# Version:               ".("             #"))
        call append(3,"# Mail:                  ".("             #"))
        call append(4,"# Date:                  ".strftime("%Y-%m-%d").("   #"))
        call append(5,"# Description:           ".("             #"))
        call append(6,"#                        ".("             #"))
        call append(7,"# Phone:                 ".("     #"))
        call append(8,"######################################")
        call append(9,"")
        call append(10,"#!/bin/bash")
endfunc

这里写图片描述
diff 命令 用来比较 两个文件或目录的不同

diff aaa bbb 
  966  vim bbb 
  967  diff aaa bbb 比较两个文件
  968  mkdir aa bb  
  969  cd aa/ 
  970  touch ww
  971  cd ..
  972  diff aa bb 比较两个目录
  974  diff -u aaa bbb 
  975  yum install patchutils.x86_64 -y 下载patch
  976  ls
  977  rm -fr aa bb 
  978  ls
  979  diff -u aaa bbb > ccc.path
  980  patch aaa ccc.path 打补丁 使aaa和bbb一样
  981  cat aaa 
  982  vim ccc.path 
  983  vim bbb
  984  diff -u aaa bbb > ccc.path 
  985  patch -b aaa ccc.path 这个可以保留源文件
  986  ls

这里写图片描述
这里写图片描述
cut 用与字符的截取

 1  cp /etc/passwd .
    2  ls
    3  cut -d : -f 1 passwd 以: 为分隔符 截取第一列 
    4  vim passwd 
    5  cut -d : -f 1-3
    6  cut -d : -f 1-3 passwd 一致37  cut -c 1 passwd 第一个字符

这里写图片描述
实验 写一个脚本 用来现实自己的ip
这里写图片描述
这里写图片描述
sort 排序
这里写图片描述
按第一和数字的大小

    4  vim westos
    5  sort westos 
    6  sort -n westos 纯数字排序
    7  sort -r westos 倒叙
    8  sort -u westos 去掉重复的数字
   12  ls
   13  vim westos 
   14  vim aa
   15  vim westos 
   16  sort -t : -k 2 -n westos 以:为分割符 并对第二列进行排序
   17  vim westos 
   18  sort -t : -k 2 -n westos -o aa 将输出结果倒入到aa文件中
   19  vim aa
   20  cat aa
   21  cat westos

这里写图片描述
test 和[ ]等同 指比较

测试标志代表意义
文件名或类型
-e该文件名是否存在
-f该文件名是否存在且为file
-d该文件名是否存在且为目录
-b该文件名是否存在且为一个block
-c该文件名是否存在且为一个character device设备
-S该文件名是否存在且为一个socket文件
-p该文件名是否存在且为一个FIFO(pipe)文件
-L该文件名是否存在且为一个连接文件
文件权限检测
-r检测文件名是否存在且具有“可读”权限
-w检测文件名是否存在且具有“可写”权限
-x检测文件名是否存在且具有“可执行”权限
-u检测文件名是否存在且具有“SUID”权限
-g检测文件名是否存在且具有“SGID”权限
-k检测文件名是否存在且具有“Sticky bit”权限
-s检测文件名是否存在且为“非空白文件”
两个文件的比较
-nt(newer than)判断file1是否比file2新
-ot(older than)判断file是否比file2旧
-ef判断file1与file2是否为同一个文件,可用在判断hard link上
数字之间的判定
-eqequal
-nenot equal
-gtgreater than
-lt less than
-gegreater than or equal
-leless than or equal
判断字符串的数据
test -z string判断字符串是否为0,若为空返回true
test -n string判断字符串是否为0,若为空返回false
test str1 = str2判断str1是否等于str2,若相等,返回true
test str1 != str2判断str1是否等于str2,若相等,返回false
多重条件的判断
-a两个条件同时成立,eg:test -r file a test -x file,同时成立返回true
-o任何一个条件成立,eg:test -r file o test -x file,同时成立返回true
反向状态,如test!-x file,当file不具有x时,返回true

grep 文本过滤命令

  1  cp /etc/passwd /mnt/
    2  cd /mnt/
    3  ls
    4  cat passwd 
    5  vim passwd 
    6  grep root passwd 
    7  grep ^root passwd   在passwd文件中过滤出以root开头的
    8  grep -i ^root passwd 忽略大小写
    9  grep -i root$ passwd 以root结尾的
   10  egrep "^root|root$" passwd   egrep= grep - E 拓展
grep 中字符的匹配次数设定
    8  grep -E "ro{1,}t" test 在test中找到rt之间o出现1次到任意次的字符 
    9  grep -E "ro{1,2}t" test  一到2次
   10  grep -E "ro+t" test  与第一条一致
   12  grep "r.*t" test 
   13  grep "r*t" test 
   14  grep "r...\>" test 只匹配r后面四个字符
   15  grep "\<...t" test 
   16  grep "r......\>" test 
   17  grep "r....." test 
   18  grep "r.." test 

这里写图片描述
不加E的情况下可以在参数上加入\来识别

以脚本的方式添加用户
首先编辑文件添加的用户名 其次是另外一个文件存放密码

#!/bin/bash
a=`wc -l $1|cut -d " " -f 1 `
for i in `seq 1 $a`
do
    USERNAME=`sed -n "${i}p" $1`
     PASSWORD=`sed -n "${i}p" $2`
        useradd $USERNAME
        echo $PASSWORD | passwd --stdin $USERNAME
done

替换
       sed 's/nologin/westos/g' passwd  将passwd下nologin 替换为westos   /g表示全文替换
       sed '3,5s/nologin/westos/g' passwd  只替换35行
       sed '/adm/,/sync/s/nologin/westos/g' passwd  替换从adm 到 sync 字符之间的 nologin 为westos
       sed -e '/adm/,/sync/s/nologin/westos/g;s/sbin/lee/g' passwd  多次 需要加-e
       vim file  在文件内写入需要编辑的内容
       sed -f file  passwd -f 加写入内容的文件便可以更改
       cat passwd            以上操作是无法更改源文件的 
       sed -f file  -i passwd   加入-i 便更改了原文件
       cat passwd 
       history 

awk 报告生成器

    1  awk -F ":" '{print $1}' passwd #以: 为分割符号 并显示第一列
    8  awk -F ":" 'BEGIN{print "NAME"}{print $1}END{print "WNS"}' passwd #在开始是显示NAME 结束显示WNS
    9  awk -F ":" 'BEGIN{print "NAME"} {print $1} END{print "WNS"}' passwd
   10  awk -F ":" 'BEGIN{print "NAME"} {print NR;print} END{print "WNS"}' passwd #显示行号及内容
   13  awk '/bash$/{print}' passwd  显示以bash结尾的行
   14  awk '/bash$/' passwd 
   15  awk "{print "NR"}"
   16  awk "{print "NR"}" passwd #行号  
   23  awk -F : 'BEGIN{N=0}/bash$/{N++}END{print N}' passwd  #查看有几行 
   25  awk -F : '$1~/^a/{print}' passwd  #第三列开始 显示以a开头的行
   26  awk -F : '$3~/^a/{print}' passwd 
   27  awk -F : '$2~/^a/{print}' passwd 
   28  awk -F : '$1~/^a/{print}' passwd 
   29  awk -F : '{printi NR,$1}' passwd 
   30  awk -F : '{print NR,$1}' passwd 
   31  awk -F : '{print NR;print $1}' passwd 
   36  ifconfig eth0 | awk -F " " '/inet\>/{print $2}' #使用报告生成器显示ip
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值