Shell理论学习(二)

30.tee:读取标准输入,然后由标准输出显示,并把这些数据存储在指定的文件中

执行本命令,test.txt若已经存在,会被清空,若不存在则会建立一个新文件,结束操作ctrl+D

[[email protected] ~]# tee test.txt
hello my world!
hello my world!
[[email protected] ~]# cat test.txt 
hello my world!

-a以文件追加的方式,把输入的数据接在test.txt的文件尾,并不会把test.txt清空

[[email protected] ~]# tee -a test.txt 
This is a zhuijia!
This is a zhuijia!
[[email protected] ~]# cat test.txt 
hello my world!
This is a zhuijia!

31.diff:比较两个文件的差异

[[email protected] 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去比较

[[email protected] ~]# find /root/test/ -name "*.txt"  | xargs -n 2 diff
1,2d0
< haha
< hello myworld

33.可以把多个命令弄成一组,然后整组去执行

方法一:(命令1;命令2;命令3)

()会开启一个子shell环境,来执行此括号中的命令组

[[email protected] ~]# (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中执行

[[email protected] ~]# { 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

[email protected] ~]# script /tmp/test.txt
Script started, file is /tmp/test.txt
[[email protected] ~]# ls /tmp/test.txt 
/tmp/test.txt
[[email protected] ~]# { 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
[[email protected] ~]# find /root/test/ -name "*.txt"  | xargs -n 2 diff
1,2d0
< haha
< hello myworld
[[email protected] ~]# exit
exit
Script done, file is /tmp/test.txt
#查看日志
[email protected] ~]# head /tmp/test.txt 
Script started on 2015年01月09日 星期五 17时53分07秒
[[email protected] ~]# { 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
[[email protected] ~]# find /root/test/ -name "*.txt"  | xargs -n 2 diff

35.unset:

unset -v 变量名称

选项-v表示要取消的是变量

unset -f 函数名称

选项-f表示要取消的是函数

36.常用环境变量

  • PS1:主要提示符

时间: 2024-10-14 06:55:04

Shell理论学习(二)的相关文章

2017年最新企业面试题之shell(二)

2017年最新企业面试题之shell(二) 练习题1:写一个shell脚本,将192.169.5.0/24网段在线的ip列出来.(找出活动ip) 要求如下: 1.将在线ip与不在线ip分别放在两个文件中,方便后期查阅: 2.不影响对当前终端进行操作: 3.脚本运行结束后,给予提示信息,表明脚本已经运行结束. 脚本内容如下: 方法一: #!/bin/bash [ -f /etc/init.d/functions ] && . /etc/init.d/functions||exit1 # 验证

学习理解shell的好办法--编写自己的shell 之二

shell脚本的最简单形式就是一串命令的罗列,shell充当解释器,一条条挨个执行,直到最后一个或遇到退出命令.但这只能做很简单的事情,只是省区了每次都要敲一边命令的时间,要想完成更负责的功能,还要加上这些东西: 1.控制 前面的条件满足了,然后干什么:不满足,干什么. 2.变量 c=a+b, 用一种形式代表另一种形式,就是变量.因为形式不同了,就能用一种不变的表示另一种变化的.比如"编程语言"就可以当一个变量,可以赋值为"C语言","Perl语言&quo

shell基础二十篇

shell基础二十篇 编者按:由 wingger  整理的 shell基础十二篇 以及L_kernel补充的第十三--二十篇,涉及shell 编程及使用的各个方面,又附有大量的例子,极适合初学者系统学习.如果配合網中人的shell 十三問? ,效果更加明显. 这里是其中的第十章 sed.  其他各章可察看相应的 link. shell基础1:文件安全与权限 http://bbs.chinaunix.net/thread-434579-1-1.html 附:Linux的用户和用户组管理 http:

shell基础二十篇 一些笔记

shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read read -p "how old r u? " ageecho $ageread -p "some words? " -a wordsecho ${words[*]}read -p "Password: " -s passwd echo $passwd read -t 5 authecho

Shell编程(二)-if判断及特殊用法,文件目录属性判断,case判断

[toc] Shell编程(二) 一.shell脚本中的逻辑判断 1.1 判断语句if 1.1.1 格式1: if 判断语句:then command fi 示例1 # vim if01.sh //判断数值大小第一种方法用[],注意前后空格 #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi [[email protected] ~]# sh if01.sh ok [ ] -gt:大于, [ ] -lt:小于, [ ] -ge:大于或等于, [ ] -

shell基础二

1.shell脚本 新建文本,后缀名sh,例如:abc.sh 注意: 在脚本第一行需要写      #!/bin/bash #! 规定写法,说明使用何种解释器执行源代码 # 表示注释 注意: php也可以写shell脚本 2.shell脚本执行 一,赋予脚本可执行的权限   chmod +x ./test.sh    #使用脚本执行 ./test.sh                    #执行脚本 必须在脚本第一行指定shell解释器类型 二,使用shell解释器执行(不推荐) 不需要赋予权

shell 模拟二维数组解析配置文件

前几日项目组内出shell OJ题进行练习, 题目大概为: 现有配置文件conf.ini如下,编写shell,输入title和key,输出其值, 如输入FIFO1 a1 ,则输出11 #this is a config file [FIFO1] a1=11 b1=12 c1=13 [FIFO2] a2=21 b2=22 c2=23 [FIFO3] a3=31 b3=32 c3=33 恰因这几日内在学习数组的用法,故使用shell来模拟二维数组,现博客之,以飨同学,共研讨. 注:本解法未考虑性能,

一起来学linux:shell script(二)关于脚本

p { margin-bottom: 0.25cm; line-height: 120% } (一)首先来看shell脚本的执行方式,shell脚本的后缀名都是sh文件. 1 sh test.sh 2 source test.sh 这两种方式有什么区别呢.test.sh 里的脚本很简单, 从键盘输入名字后赋值个name变量 read -p "Please input your name:" name 执行如下 [email protected]:/home/zhf/zhf/shell_

Linux Shell之二 变量与数组

一.什么是变量 Shell编程语言是非类型的解释型语言,不像C++/JAVA语言编程时需要事先声明变量,SHELL给一个变量赋值,实际上就是定义了变量,在Linux支持的所有shell中,都可以用赋值符号(=)为变量赋值. SHELL变量可分为两类:局部变量和环境变量.局部变量只在创建它们的shell脚本中使用.而环境变量则可以在创建它们的shell及其派生出来的任意子进程中使用.有些变量是用户创建的,其他的则是专用shell变量. 例如在脚本里面定义A=123 ,定义这样一个变量,前面变量名,