呈现数据
来源:互联网 发布:彩先知软件 编辑:程序博客网 时间:2024/05/30 02:51
标准文件描述符
Linux系统将每个对象当作文件来处理。Linux用文件描述符来标识每个对象。
最早的三个文件描述符
- STDIN:代表shell的标准输入
- STDOUT:代表shell的标准输出
- STDERR:代表shell的标准错误输出
默认情况下,STDERR文件描述符会和STDOUT文件描述符会指向同样的地方,(that’s to say:错误消息也会输出到显示器输出中)
如何重定向错误?
法一:只重定向错误
将stderr文件描述符(2)放在重定向符号前,则shell会将生成的任何错误发送到指定的重定向文件中。
法二:重定向错误和数据
利用 1> test1 将ls命令本该输出到STDOUT的正常输出重定向到了test1文件。
利用 2> test2 将STDERR的错误消息重定向到了test2文件中。
或者, 也可以将STDERR和STDOUT的输出重定向到同一个输出文件
。此时,我们可以使用 &>
bash shell会自动给错误消息分配较标准输出来说更高的优先级。这样就可以在一处地方查看错误消息了,而不用翻遍整个输出文件。
在脚本中重定向输出
两种方法来在脚本中重定向输出
临时重定向每行输出
永久重定向脚本中的所有命令
可以用exec命令告诉shell在脚本执行期间重定向某个特定文件描述符。$: cat script.sh #!/bin/bash exec 1> testout exec 2 > testout2 echo "this is a test for all output" echo "this is a test for all errors" >&2$: cat testoutthis is a test for all output$: cat testout2this is a test for all errors
在脚本中重定向输入
#!/bin/bash#这个命令会告诉shell它应该从testfile中获得输入,而不是STDIN。exec 0< testfilecount=1while read linedo echo "Line #$count: $line" #输出testfile中每一行的内容 count=$[$count+1]done
创建自己的重定向 ##
在shell中,最多可以有9个打开的文件描述符。其他6个描述符会从3排到8,可以当作输入或输出重定向。
默认情况下,有三个:
[root@cenos fd]# pwd/dev/fd[root@cenos fd]# ls0 1 2 255[root@cenos fd]#
创建输出文件描述符
exec 3>testfile
如何从已定向的文件描述符中恢复
#!/bin/bashexec 3>&1 #将STDOUT保存到文件描述符fd3中exec 1>testoutecho "this output to testout file!"exec 1>&3 #将重定向之后的fd1重新指向标准输出(STDOUT)echo "this output to screen!"
创建输入文件描述符
#!/bin/bash exec 6>&0 #将STDIN文件保存到文件描述符fd6中 exec 0< input count=1 while read line do echo "Line $count: $line" count=$[ $count+1 ] done exec 0<&6 #将STDIN恢复到原来的位置(即键盘输入) read -p "Are you done now?" answer case $answer in y) echo "Goodbye";; n) echo "this is end !";; esac
创建读写描述符
$: cat rwFileDes#!/bin/bash# testing input/output file descriptionexec 3<> testfile #用exec命令将文件描述符3分配给文件testfile以进行文件读写read line <&3echo "Read: $line"echo "This is a test line" >&3$: cat testfile first line this is the second line this is third line$: ./rwFileDes$: cat testfile first line This is a test line ine this is third line
关闭文件描述符
exec 3> test17fileecho "This is a test line of data" >&3exec 3>&- #要关闭文件描述符,将它重定向到特殊符号&-
列出打开的文件描述符 ##
lsof命令会列出整个Linux系统打开的所有文件描述符。包括后台运行的所有进程以及登录到系统的任何用户。
shell
/usr/sbin/lsof -a -p $$ -d 0,1,2
阻止命令输出 ##
如果不想显示脚本的输出,可以将STDERR重定向到一个叫做null文件的特殊文件。null文件里什么都没
有,shell输出到null文件的任何数据都不会保存,全部都被丢掉了。
Linux上null文件的位置在/dev/null
创建临时文件 ##
系统上的任何用户账户都有权限读写/tmp目录中的文件。
mktemp命令可以在/tmp目录中创建一个唯一的临时文件。shell会将文件的读和写权限分配给文件的属主,并将你设成文件的属主。
创建本地临时文件
[root@cenos el]# pwd/home/el[root@cenos el]# mktemp testing.XXXXXX #mktemp会用6个字符码替换这6个X,保证文件名的唯一testing.2jVACp[root@cenos el]# lltotal 4drwxr-xr-x. 2 root root 4096 Sep 21 08:14 scripts1-rw-------. 1 root root 0 Sep 21 08:17 testing.2jVACp
在/tmp目录创建临时文件
-t命令会强制mktemp命令在系统的临时目录来创建该文件。
命令会返回文件的全路径名
[root@cenos el]# mktemp -t elsie.XXXXXX /tmp/elsie.Xa1Of1
创建临时目录
-d: 创建临时目录
[root@cenos elsie]# mktemp -d elsie1.XXXXXXelsie1.MjdGRl[root@cenos elsie]# lltotal 8drwx------. 2 root root 4096 Sep 21 08:27 elsie1.MjdGRldrwxr-xr-x. 2 root root 4096 Sep 21 08:14 scripts1
记录消息
tee命令:
tee filename
一个T型接头。将从STDIN过来的数据同时发往两处。一处是STDOUT,另一处是tee命令所指定的文件名。
[root@cenos scripts1]# date | tee datefileThu Sep 21 08:38:01 CST 2017[root@cenos scripts1]# cat datefileThu Sep 21 08:38:01 CST 2017
tee -a filename: 将数据追加到文件中,用-a选项。
A Example
文件分界符????
[root@cenos scripts2]# cat >output.txt <<EOF> a> b> c> d> EOF[root@cenos scripts2]# cat output.txt abcd[root@cenos scripts2]#
将Hi,first hi,second追加到output.txt中,EOF符号标记了追加到文件中的数据的起止
$: cat catUsage.sh#!/bin/bashcat >> output.txt <<EOFHi,firsthi,secondEOF$: cat output.txtHi,firsthi,second$: cat script#!/bin/bashwhile read linedo echo "this is line: $line"done < $1$: ./script output.txtthis is line: Hi,firstthis is line: hi,second
http://blog.csdn.net/feixiaohuijava/article/details/53129413
- 呈现数据
- ReactJS数据呈现
- React数据呈现
- adapter数据呈现
- 【shell】呈现数据
- python 数据图表呈现
- shell -- ch15呈现数据
- 3 推荐数据的呈现
- DataTable SQL server数据呈现
- 第15章 呈现数据
- jqgrid无数据样式呈现
- 如何实现列转行呈现数据
- WPF学习笔记 - 控制数据的呈现
- 使用Repeate呈现父子表数据
- FormView控件的数据呈现和处理
- 通过CursorAdapter在ListView中的数据呈现
- 通过CursorAdapter在ListView中的数据呈现
- 数据采集仪器-界面呈现1
- 以Android L读取系统所有logcat并写入文件为例分析Android 添加系统服务,通过系统服务申请selinux的权限执行shell脚本,以及avc:dined应该怎么申请权限
- 调用Android系统分享功能(可分享纯文本信息)
- 迭代器(关键词:Python/iterator/iterable/__iter__/next)
- Android编程权威指南(第2版)—第14章挑战练习
- 线程的优先级
- 呈现数据
- 阿里云|Centos7及以上|REDIS 安装教程
- matlab启动时,命令行中出现“java.lang.ClassNotFoundException”错误代码
- 相关sql语句的练习
- 0.0 用代码画画——作者简介
- 第一个程序(python)-HelloWorld
- springmvc的编码问题
- 自由编译配置软件autoconf
- Hbase shell