Linux命令和shell编程学习--14章呈现数据

来源:互联网 发布:《算法》pdf 编辑:程序博客网 时间:2024/05/10 21:55

14章呈现数据

#临时重定向./test.sh 2>err.txt#默认情况下,Linux会将STDERR定向到STDOUT#永久重定向exec 1>out.txtexec 0<test.file#从文件获得输入

exec命令告诉shell 在脚本执行期间重定向某个特定文件描述符

创建自己的重定向
在脚本中重定向,不局限于3个默认的文件描述符,shell中最多可以有9个打开的文件描述符。

exec 3>test3outecho this should be stored in the file >&3#exec 3>&1exec 1>test3out#经过以上两步,文件描述符对应的文件已经交换了。同时要知道重定向没有传递性。3对应于显示器,1对应于文件test3outexec 1&3#恢复1的重定向

创建输入文件描述符

exec 4<&0exec 0< testfile....exec 0<&4

创建读写文件描述符

exec 5<>testfileread line<&5echo "add the line" >&5#这个代码实质对testfile进行了替换(如果文件不止一行内容)

使用这种方法要特别小心,因为在向同一个文件进行读取和写入,shell会维护一个内部指针,指明现在在文件中的位置。任何读写都会从文件指针保存到位置开始

关闭文件描述符

exec 3>&-
当关闭了文件描述符之后,如果再使用它,就会报错。
如果之后在脚本中打开了同一个输出文件,文件原有内容会被覆盖。

列出打开的文件描述符
lsof命令可出整个Linux系统打开的所有文件 描述符。
-a:对其他两个选项结果执行布尔AND运算
-p:指定进程($$指当前进程)
-d:指定文件描述符几个
相应的列含义为:
列 描述
COMMAND 正在运行的命令名的前9个字符
PID 进程的PID
USER 进程属主的登录名
FD 文件描述符数目以及访问类型(r=读,w=写,u=读写)
TYPE 文件的类型(CHR=字符型,BLK=块型,DIR=目录,REG=常规文件)
DEVICE 设备的设备号(主设备号和从设备号)
SIZE 文件大小(如果有的话)
NODE 本地文件的节点数
NAME 文件名

创建临时文件

Linux使用/tmp目录作为临时目录,当系统启动时,Linux会自动删除目录下所有文件系统上任何账户都有权限在/tmp中读写。
mktemp命令可以在/tmp中创建一个唯一的临时文件,不使用默认的umask值。文件的读写权限将会分配给文件的属主,并将你设置为文件的属主,其他人无法访问,root除外。

创建本地临时文件
默认情况下,mktemp会在本地目录中创建临时文件
mktemp tmp.XXXXXXXXXX

在temp目录下创建临时文件
mktemp -t test.XXXXX,命令返回全路径名
创建临时目录
mktemp -d dir.XXXXX

记录消息
tee命令,默认情况下,tee命令会在每次使用时覆盖输出文件内容
-a 将数据追加到文件中(append)
who | tee testfile
既显示在屏幕中,又输出到文件中

0 0
原创粉丝点击