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 ...
随机推荐
- 状态压缩dp小结
最近一段时间算是学了一些状态压缩的题目,在这里做个小结吧 首先是炮兵布阵类题目,这类题目一开始给定一个矩形,要求在上面放置炮兵,如果在一格放了炮兵那么周围的某些格子就不能放炮兵,求最大能放置炮兵的数量 ...
- selenium +python webdriver运行时报错cannot find Chrome binary
今日在公司电脑运行自动化测试脚本,出现cannot find Chrome binary报错 百思不得其解,排错后发现应该是电脑以前有配置driver文件路径,driver所在文件路径已变更,现pyt ...
- rsync注意事项
1.sudo rsync -zavP --exclude=/.git/ --exclude=.env --exclude=web/index.php --password-file=/usr/loc ...
- C程序的内存分配及动态内存
1.程序内存的分配 一个由C/C++编译的程序占用的内存分为以下几个部分:1)栈区(stack) — 由编译器自动分配释放 , 存放为运行函数而分配的局部变量. 函数参数. 返回数据. 返回地址等. ...
- 使用asp.net MVC的 HtmlHelper 时遇到的小问题,报错:Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
异常信息:Templates can be used only with field access, property access, single-dimension array index, or ...
- Java+selenium之WebDriver模拟鼠标键盘操作(六)
org.openqa.selenium.interactions.Actions类,主要定义了一些模拟用户的鼠标mouse,键盘keyboard操作.对于这些操作,使用 perform()方法进行执行 ...
- python——mysql京东数据库设计案例(源码)
# 显示界面信息# 循环界面信息# 根据用户输入数据来做相应的选择from pymysql import connect def jingdong_info(): '''#显示界面信息''' prin ...
- 史上最简单的SpringCloud教程 | 第七篇: 高可用的分布式配置中心(Spring Cloud Config)
上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如 ...
- pycaffe训练的完整组件示例
pycaffe训练的完整组件示例 为什么写这篇博客 1. 需要用到pycaffe 因为用到的开源代码基于Caffe:要维护的项目基于Caffe.基本上是用Caffe的Python接口. 2. 训练中想 ...
- python---使用递归实现谢尔宾斯基三角形及汉诺塔
渐入佳境. # coding: utf-8 import turtle ''' # =================turtle练手== def draw_spiral(my_turtle, lin ...