呈现数据

一、文件描述符

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. logical_backup: expdp/impdp

    Table of Contents 1. 注意事项 2. 前期准备 3. 常用参数及示例 4. 常用语句示例 5. 交互式命令 6. 技巧 6.1. 不生成文件直接导入目标数据库 6.2. 通过she ...

  2. hexo+github page +markdown问题汇总

    1.没有权限提交 解决办法:把git版本由2.x改为1.9 未完待续

  3. fetch请求

    get请求 return fetch('https://xxx.xxx.com/xxx.json') .then(response => response.json()) .then(respo ...

  4. python---hash查找

    以前只会用,没了解过原理. # coding = utf-8 class HashTable: def __init__(self): # 哈希表的初始大小已经被选择为 11.尽管这是任意的,但是重要 ...

  5. VSCode Vue文件格式化

    参考文档:https://vuejs.github.io/vetur/formatting.html 自从将VSCode更新之后,vue文件的html格式化就失效了,而且vue文件中的js ,css格 ...

  6. MVC区域area

    1.当项目业务比较庞大,可以通过区域来分拆. 2.添加区域时,默认会生成一下文件. 3.Application_Start()必需含有AreaRegistration.RegisterAllAreas ...

  7. 期货大赛项目|二,DAL详解

    接口层就不重点讲述了,直接DAL层 DAL层 using System; using System.Collections.Generic; using System.Linq; using Syst ...

  8. C#使用Emit生成构造函数和属性

    假设我们需要一个名叫Kitty的类,其在Pets程序集下. 1 // specify a new assembly name 2 var assemblyName = new AssemblyName ...

  9. 学习之"setjmp和longjmp函数"

    Linux学习之"setjmp和longjmp函数"   转贴,原文地址:http://www.cnblogs.com/lq0729/archive/2011/10/23/2222 ...

  10. 【AtCoder】AGC014

    AGC014 链接 A - Cookie Exchanges 发现两个数之间的差会逐渐缩小,所以只要不是三个数都相同,那么log次左右一定会得到答案 #include <bits/stdc++. ...