设为首页 收藏本站
查看: 995|回复: 0

Shell理论学习(二)

[复制链接]

尚未签到

发表于 2018-8-25 10:22:57 | 显示全部楼层 |阅读模式
  30.tee:读取标准输入,然后由标准输出显示,并把这些数据存储在指定的文件中
  执行本命令,test.txt若已经存在,会被清空,若不存在则会建立一个新文件,结束操作ctrl+D
[root@kaibin ~]# tee test.txt  
hello my world!
  
hello my world!
  
[root@kaibin ~]# cat test.txt
  
hello my world!
  -a以文件追加的方式,把输入的数据接在test.txt的文件尾,并不会把test.txt清空
[root@kaibin ~]# tee -a test.txt  
This is a zhuijia!
  
This is a zhuijia!
  
[root@kaibin ~]# cat test.txt
  
hello my world!
  
This is a zhuijia!
  31.diff:比较两个文件的差异
[root@kaibin test]# diff file4.txt ../test.txt  
1,2c1,2
  
< haha
  
< hello myworld
  
---
  
> hello my world!
  
> This is a zhuijia!
  32.xargs:由标准输入,安排要执行的命令和参数
  寻找.txt的文件,然后给xargs处理,-n 2 表示执行命令的参数至多两个,也就是说:把找到的.txt文件,两个一组的方式交给diff去比较
[root@kaibin ~]# find /root/test/ -name "*.txt"  | xargs -n 2 diff  
1,2d0
  
< haha
  
< hello myworld
  33.可以把多个命令弄成一组,然后整组去执行
  方法一:(命令1;命令2;命令3)
  ()会开启一个子shell环境,来执行此括号中的命令组
[root@kaibin ~]# (cat test.txt;find /root/test/ -name "*.txt";date +%F)  
hello my world!
  
This is a zhuijia!
  
/root/test/file5.txt
  
/root/test/file2.txt
  
/root/test/file4.txt
  
/root/test/file3.txt
  
2015-01-09
  方法二:{ 命令1;命令2;命令3; }
  和第一种方法不同的是,此法是吧这些命令组在现行的shell中去执行,而非在子shell中执行
[root@kaibin ~]# { cat test.txt;find /root/test/ -name "*.txt";date +%F; }  
hello my world!
  
This is a zhuijia!
  
/root/test/file5.txt
  
/root/test/file2.txt
  
/root/test/file4.txt
  
/root/test/file3.txt
  
2015-01-09
  34.记录命令的执行过程
  有时候,我们需要把执行命令所产生的信息记录,以作为排错参考,数据保存之用
  script[日志文件]
  如果不提供自定义的日志文件,默认会把数据存储到typescript这个文件
  执行script指令后,就可以开始操作各种命令,script会忠实的记录下所有的输出信息.如果想要结束操作,执行exit,便可以离开script
root@kaibin ~]# script /tmp/test.txt  
Script started, file is /tmp/test.txt
  
[root@kaibin ~]# ls /tmp/test.txt
  
/tmp/test.txt
  
[root@kaibin ~]# { cat test.txt;find /root/test/ -name "*.txt";date +%F; }
  
hello my world!
  
This is a zhuijia!
  
/root/test/file5.txt
  
/root/test/file2.txt
  
/root/test/file4.txt
  
/root/test/file3.txt
  
2015-01-09
  
[root@kaibin ~]# find /root/test/ -name "*.txt"  | xargs -n 2 diff
  
1,2d0
  
< haha
  
< hello myworld
  
[root@kaibin ~]# exit
  
exit
  
Script done, file is /tmp/test.txt
  
#查看日志
  
root@kaibin ~]# head /tmp/test.txt
  
Script started on 2015年01月09日 星期五 17时53分07秒
  
[root@kaibin ~]# { cat test.txt;find /root/test/ -name "*.txt";date +%F; }
  
hello my world!
  
This is a zhuijia!
  
/root/test/file5.txt
  
/root/test/file2.txt
  
/root/test/file4.txt
  
/root/test/file3.txt
  
2015-01-09
  
[root@kaibin ~]# find /root/test/ -name "*.txt"  | xargs -n 2 diff
  35.unset:
  unset -v 变量名称
  选项-v表示要取消的是变量
  unset -f 函数名称
  选项-f表示要取消的是函数
  36.常用环境变量

  •   PS1:主要提示符
DSC0000.jpg


  •   SECONDS
  目前Bash Shell运行的时间(以秒计算)
[root@test ~]# echo $SECONDS  
22

  •   TMOUT
  如果TMOUT大于0,则bash会等待TMOUT秒后,自动结束目前的bash shell
  以下的设定,让bash shell在3秒后自行结束
  TMOUT=3

  •   $1~$n
  位置参数,若位置参数n超过9以上,则要用${n}来表示,例如${10}是第10个参数

  •   $0:执行程序的名称
  •   $*:代表所有的位置参数,并且视为一个字符串
      例如:test.sh abc 123 xyz,则$*的内容为字符串"abc 123 xyz"
  •   $@:代表所有的位置参数.但$@代表各位置参数组成的串行
      例如:test.sh abc 234 xyz,则$@的内容为"abc","234","xyz"这三个字符串
  •   $#:位置参数的个数
  •   $?:上一条命令的执行结果,如果为0为成功,不为0都有问题
  •   $$:当前进程PID
  •   $!:上一个后台程序的进程编号
  •   $_:

    •   script执行时,bash的绝对路径,例如:/bin/bash
    •   上一条命令执行时,最后一个位置参数,如上一条命令是:test.sh abc 123 xyz.则$_的值是"xyz"
    •   检查邮件时,$_的值为邮件文件名




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-556278-1-1.html 上篇帖子: linux shell编程基础 下篇帖子: Shell 参数置换
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表