Shell脚本笔记(六)呈现数据
呈现数据
一、文件描述符
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脚本笔记(六)呈现数据的更多相关文章
- shell脚本获取mysql插入数据自增长id的值
shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...
- Shell脚本笔记(一)一些零碎的基础知识
一些零碎的基础知识 一.认识Shell脚本 一)相关概念 Shell是一种命令解释器,作用是按次序执行(遇到子脚本,先执行子脚本的命令)用户输入的命令和程序. Shell脚本语言是弱类型语言,与其他脚 ...
- Shell脚本笔记(二)Shell变量
Shell变量 一)全局环境变量 全局变量对于定义它的shell和其子shell都是可见的,但如果生成它的shell被终止,全局变量也就消失了.另外全局变量会被子shell的同名变量覆盖. #定义一个 ...
- shell脚本循环处理文件数据
有一个日志文件为: # cat data.log 需要提取出里面的数据,写shell脚本实现这个功能: #!/bin/bash OLD=$IFS IFS=$'\n' for entry in $(ca ...
- shell脚本笔记(原创不断记录)
今天开始自己的shell脚本练习,刚好公司有太服务器,要时间对数据的cp是按月的: 考虑:首先寻找规律,发现都放置在/opt/www/aaa/ 里面有很多的2级和3级目录和文件,但我追踪要备份的是年 ...
- Shell脚本笔记
如何查询文件里的某个字符串? grep “字符串” 文件 例:grep "abc" tmp.txt 如何将查询出来的内容赋给变量? str=$(grep "abc ...
- Shell脚本笔记(七)控制Shell脚本
控制Shell脚本 一.处理信号 1) SIGHUP本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联. ...
- shell脚本学习(六)
shell函数 注:现在是unix编程 实例: #!/bin/shdemon(){ echo "这是一个shell脚本"}demon 注: 调用是只写函数名没有() 函数的返回值 ...
- Shell脚本笔记 1
函数别名 设置别名 alias name="command" alias ll="ls -laS" 取消别名 unalias name 求取数学表达式 valu ...
随机推荐
- logical_backup: expdp/impdp
Table of Contents 1. 注意事项 2. 前期准备 3. 常用参数及示例 4. 常用语句示例 5. 交互式命令 6. 技巧 6.1. 不生成文件直接导入目标数据库 6.2. 通过she ...
- hexo+github page +markdown问题汇总
1.没有权限提交 解决办法:把git版本由2.x改为1.9 未完待续
- fetch请求
get请求 return fetch('https://xxx.xxx.com/xxx.json') .then(response => response.json()) .then(respo ...
- python---hash查找
以前只会用,没了解过原理. # coding = utf-8 class HashTable: def __init__(self): # 哈希表的初始大小已经被选择为 11.尽管这是任意的,但是重要 ...
- VSCode Vue文件格式化
参考文档:https://vuejs.github.io/vetur/formatting.html 自从将VSCode更新之后,vue文件的html格式化就失效了,而且vue文件中的js ,css格 ...
- MVC区域area
1.当项目业务比较庞大,可以通过区域来分拆. 2.添加区域时,默认会生成一下文件. 3.Application_Start()必需含有AreaRegistration.RegisterAllAreas ...
- 期货大赛项目|二,DAL详解
接口层就不重点讲述了,直接DAL层 DAL层 using System; using System.Collections.Generic; using System.Linq; using Syst ...
- C#使用Emit生成构造函数和属性
假设我们需要一个名叫Kitty的类,其在Pets程序集下. 1 // specify a new assembly name 2 var assemblyName = new AssemblyName ...
- 学习之"setjmp和longjmp函数"
Linux学习之"setjmp和longjmp函数" 转贴,原文地址:http://www.cnblogs.com/lq0729/archive/2011/10/23/2222 ...
- 【AtCoder】AGC014
AGC014 链接 A - Cookie Exchanges 发现两个数之间的差会逐渐缩小,所以只要不是三个数都相同,那么log次左右一定会得到答案 #include <bits/stdc++. ...