呈现数据

一、文件描述符

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. Nginx详解一:Nginx基础篇之环境准备

    环境确认: 1.确认系统网络可用 2.确认yum源可用 3.确认关闭iptabkes规则 查看是否有iptabkes规则:iptables -L 如果有的话:iptables -F关闭 保险起见也看看 ...

  2. Python变量的作用域

    局部变量 局部变量是指在函数内部定义并使用的变量,他只在函数内部有效.即函数内部的名字只在函数运行时才会创建,在函数运行之前或者运行完毕之后,所有的名字就都不存在了.所以,如果在函数外部使用函数内部定 ...

  3. centos之mysql安装配置使用

    安装:  这里只安装得时mysql5.1,如果想安装5.6,看这里http://www.cnblogs.com/xuange306/p/8243859.html yum install -y mysq ...

  4. Mom and Dad

    Mom  Poodwaddle Life clock Dad Poodwaddlw Life clock Happiness is the meaning and the purpose of lif ...

  5. Spring4.x 基础

    把以下 jar 包加入到工程的 classpath 下: 搭建Spring开发环境 Spring 的配置文件: 一个典型的 Spring 项目需要创建一个或多个 Bean 配置文件, 这些配置文件用于 ...

  6. 交换机的vlan文章

    https://blog.csdn.net/standmyground/article/details/3933364 大家知道,交换机会把广播报文(目的mac地址全1的报文)和未知单播报文从所有端口 ...

  7. opencv图片坐标和数组坐标

    图片坐标和数组坐标是相反的,坐标原点位于左上角 import numpy as np import cv2 height, width = 150, 200 img = np.zeros((heigh ...

  8. C语言之冒泡排序、选择排序、折半查询、进制查表

    菜单导航 1.冒泡排序 2.选择排序 3.折半查询 4.进制查表(十进制转二进制.八进制.十六进制) 一.冒泡排序 //1.冒泡排序 /** 一组无序数字,进行从小到大排序 冒泡排序的过程:就是每个循 ...

  9. net core体系-web应用程序-2项目简单案例

    阅读目录   NO1 留言板(mysql的使用) NO2 聊天室(WebSocket的使用) NO3 找工作(AngleSharp的使用) 部署多个站点 一些其它的细节 部署阿里云 mysql的客户端 ...

  10. HDU4343Interval query 倍增

    去博客园看该题解 题意 给定n个区间[a,b),都是左闭右开,有m次询问,每次询问你最多可以从n个区间中选出多少[L,R]的子区间,使得他们互不相交. n,m<=10^5. 区间下标<=1 ...