呈现数据

一、文件描述符

Linux系统将每个对象当做文件处理,这包括输入和输出进程。Linux用文件描述符来标识每个文件对象。每个进程最多可以有9个

文件描述符,bash shell保留了前三个文件描述符。

文件描述符                                  缩写                                                    描述

0-----------------------------------STDIN--------------------------------------标准输入,对于终端界面来说就是键盘

1-----------------------------------STDOUT-----------------------------------标准输出,对于终端界面来说就是屏幕

2-----------------------------------STDERR-----------------------------------标准错误,对于终端界面来说就是屏幕

1.STDIN

在使用输入重定向符号(<)时, Linux会用重定向指定的文件来替换标准输入文件描述符。
它会读取文件并提取数据,就如同它是键盘上键入的。

2.STDOUT

在使用标准输出将数据导入文件时,如果遇到错误,错误信息是不会被导入到文件中去的。

3.STDERR

STDERR文件描述符代表shell的标准错误输出,脚本出错时错误信息都会发送到该位置。

重定向错误

ls -al badfile > err_log.txt

同时重定向错误和标准输出到不同文件

ls -al file1 file2 badfile > log.txt > err_log.txt

同时重定向错误和标准输出到同一个文件

ls -al file1 file2 badfile &> log.txt
#注意相对于标准输出,bash shell 给与标准错误输出更高优先级

二、在脚本中重定向输出

1.临时重定向

将信息重定向到STDERR

echo "A error msg" >&

2.永久重定向

exec > out.txt

三、在脚本中重定向输入

exec < in.txt

四、创建自己的重定向

1.创建输出文件描述符

#!/bin/bash
exec > textout
echo "My output" >&

当然也可以使用追加

exec >> out

2.重定向文件描述符

#!/bin/bash
exec >&
exec >out.txt
#注意此时3指向屏幕,1指向out.txt文件
echo "Going to 1"
echo "Going to 3" >&

3.创建输入文件描述符

exec <&
exec <myfile

4.创建读写文件描述符

可以打开单个文件同时作为输入和输出

exec <> file

5.关闭文件描述符

一般情况下,如果创建了输入或输入文件描述符,shell会在脚本退出时自动关闭它们。但有时候我们需要手动关闭。

exec >&-

一旦关闭了文件描述符,就不能向它写入任何东西否则会报错。

6.阻止命令输出

ls -al /dev/null

用/dev/null清空文件中的数据

cat /dev/null > file

五、创建临时文件

1.创建本地临时文件

mktemp testfile
#会将读写权限分配给owner,文件创建者为owner
#将文件名保存到变量中
fileName=$(mktemp testfile)

2.在/tmp目录创建临时文件

mktemp -t testfile

3.创建临时目录    -d

六、记录消息

tee命令相当于管道的一个T型接头。它将从STDIN过来的数据同时发往两处。一处是
STDOUT,另一处是tee命令行所指定的文件名

命令格式:tee filename

date | tee test.txt

-a:为追加

Shell脚本笔记(六)呈现数据的更多相关文章

  1. shell脚本获取mysql插入数据自增长id的值

    shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...

  2. Shell脚本笔记(一)一些零碎的基础知识

    一些零碎的基础知识 一.认识Shell脚本 一)相关概念 Shell是一种命令解释器,作用是按次序执行(遇到子脚本,先执行子脚本的命令)用户输入的命令和程序. Shell脚本语言是弱类型语言,与其他脚 ...

  3. Shell脚本笔记(二)Shell变量

    Shell变量 一)全局环境变量 全局变量对于定义它的shell和其子shell都是可见的,但如果生成它的shell被终止,全局变量也就消失了.另外全局变量会被子shell的同名变量覆盖. #定义一个 ...

  4. shell脚本循环处理文件数据

    有一个日志文件为: # cat data.log 需要提取出里面的数据,写shell脚本实现这个功能: #!/bin/bash OLD=$IFS IFS=$'\n' for entry in $(ca ...

  5. shell脚本笔记(原创不断记录)

    今天开始自己的shell脚本练习,刚好公司有太服务器,要时间对数据的cp是按月的: 考虑:首先寻找规律,发现都放置在/opt/www/aaa/  里面有很多的2级和3级目录和文件,但我追踪要备份的是年 ...

  6. Shell脚本笔记

      如何查询文件里的某个字符串? grep “字符串” 文件 例:grep "abc" tmp.txt   如何将查询出来的内容赋给变量? str=$(grep "abc ...

  7. Shell脚本笔记(七)控制Shell脚本

    控制Shell脚本 一.处理信号 1) SIGHUP本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联. ...

  8. shell脚本学习(六)

    shell函数 注:现在是unix编程 实例: #!/bin/shdemon(){ echo "这是一个shell脚本"}demon 注: 调用是只写函数名没有() 函数的返回值 ...

  9. Shell脚本笔记 1

    函数别名 设置别名 alias name="command" alias ll="ls -laS" 取消别名 unalias name 求取数学表达式 valu ...

随机推荐

  1. Spring Boot的Listener机制的用法和实现原理详解

    之前在介绍了在spring-boot启动过程中调用runner的原理,今天我们介绍另外一种可以实现相似功能的机制:spring-boot的Listener机制. 通过注册Listener,可以实现对于 ...

  2. requests禁止重定向

    response = requests.get( 'http://weixin.sogou.com/weixin?query=%E9%A3%8E%E6%99%AF&type=2&pag ...

  3. HDU 4763 Theme Section(KMP灵活应用)

    Theme Section Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  4. 据说是Flord算法

    贵有恒,何必三更起五更眠:最无益,莫过一日曝十日寒. 问题 C: Restoring Road Network 问题 C: Restoring Road Network 时间限制: 1 Sec  内存 ...

  5. C#enum使用Attribute求字段名

    用到了一些反射:(自己看吧) public enum UserState { /// <summary> /// 正常 /// </summary> [Remark(" ...

  6. 437. 路径总和 III

    方法一:48 ms /* sumUp递归子程序求解以root为根节点的子节点之和为sum的路径数目; pathSum递归部分是把根节点逐一考察,如以root->left,以root->ri ...

  7. 在Git.oschina.net中配置TortoiseGit使用sshkey,无需输入账号和密码

    ssh的方式 git@oschina.com:用户名/版本库t.git           此篇文章针对于这种 黄海正在开发的项目位置 https://gitee.com/dslx/BigData.g ...

  8. WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Exception in thread "main" java.io.IOException: No FileSystem for sc F

    1.执行脚本程序报如下所示的错误: [hadoop@slaver1 script_hadoop]$ hadoop jar web_click_mr_hive.jar com.bie.hive.mr.C ...

  9. [转] Node.js中package.json中库的版本号详解(^和~区别)

    当我们查看package.json中已安装的库的时候,会发现他们的版本号之前都会加一个符号,有的是插入符号(^),有的是波浪符号(~).那么他们到底有什么区别呢?先贴一个例子,对照例子来做解释: bl ...

  10. C# 之设计原则

    代码也需要有秩序,就像世界需要秩序,基于SOLID architecture principles. 一.SOLID原则 S.O.L.I.D.是一组面对面向对象设计的最佳实践的设计原则.术语来自Rob ...