赞
踩
在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。在操作这些所谓的文件的时候,我们每操作一次就找一次名字,这会耗费大量的时间和效率。所以Linux中规定每一个文件对应一个索引,这样要操作文件的时候,我们直接找到索引就可以对其进行操作了。
Linux内核对所有打开的文件有一个文件描述符表格,里面存储了每个文件描述符作为索引与一个打开文件相对应的关系,简单理解就是一个数组,文件描述符(索引)就是文件描述符表这个数组的下标,数组的内容就是指向一个个打开的文件的指针。
文件描述符也叫文件句柄。进程使用文件描述符来管理打开的文件,用数字代替文件名,用来快速找到。类似于快捷方式,也叫软链接,用来更方便的调用文件。数字的范围是0~255,其中0、1、2是特别的。1号通常代表输出文件、2号是显示错误信息的,比如命令打错了,终端中会显示错误
FD是访问文件的标识,即链接文件。省去了冗长的绝对路径。0:键盘只读、1,2:是终端可以理解为屏幕、3+:是文件,可读可写,每个程序都有FD,用来链接文件的。
标准输入(stdin);代码为 0 ;键盘只读
标准输出(stdout):代码为 1 ;是终端输出可以理解为屏幕显示
错误输出(stderr):代码为 2 ;是终端输出可以理解为屏幕显示
可在proc目录当中查看进程的FD
在proc中存放的是系统进程的相关信息,需要找到进程FD需要先知道进程PID。
看到的0124是FD,程序通过描述符访问文件。
具体可看此文章FD详解
输出重定向分为正确输出,错误输出
正确输出: 1>和1>> 等价于 >和>>
错误输出: 2>和2>> 没有简写
date:显示当前时间的程序
覆盖
追加
重定向到不同的位置
混合输出
空设备,即将产生的输出丢掉,可以进行选择正确、错误、全部。
# ls /home/ /aaaaaaaaa >list.txt 2>/dev/null
空设备,即将产生的输出丢掉
# ls /home/ /aaaaaaaaa &>/dev/null
空设备,即将产生的输出丢掉
mail -s 邮件程序
标准输入: < 等价 0<
例:
# mail alice 没有改变输入的方向,默认键盘,前台被占领输入.退出 Subject: hello 1111 2222 3333 . EOT # su - alice $ mail Heirloom Mail version 12.5 7/5/10. Type ? for help. "/var/spool/mail/alice": 1 message 1 new >N 1 root Mon Jul 31 15:16 20/617 "hello" # mail -s "test01" alice < /etc/hosts 输入重定向,来自于文件,将该文件的内容,输入到mai程序中
语法:command1 | command2 |command3 |…
管道命令可以将多条命令组合起来,一次性完成复杂的处理任务。
使用重定向字符控制输出到文件,使用管道控制输出到其他程序。
命令1执行完后会有一些标准的输出信息会经过管道收集起来作为下一个程序的标准输入,直到完成最后一个指令进行输出到屏幕当中(管道左侧的输出,就是右侧的输入)
三通管道,即交给另一个程序处理,又保存一份副本
tee命令主要被用来向standout(标准输出流,通常是命令执行窗口)输出的同时也将内容输出到文件
tee管道把cat /etc/passwd前七行输出的同时也将内容输出到文件bbb
bbb文件中包含了 cat /etc/passwd 的前七行
xargs是给命令 传递参数 的一个过滤器,也是组合多个命令的一个工具。它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理。xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
比如cp命令 管道左侧输出的是文本内容,但是cp复制的是文件,cp处理不了,这个时候就需要 Xargs,类似强制执行命令
例:
# touch /home/file{1..5}
# vim files3.txt
/home/file1
/home/file2
/home/file4
# cat file3.txt |xargsls -l
-rw-r--r--. 1 root root 0 Mar 11 10:35 /home/file1
-rw-r--r--. 1 root root 0 Mar 11 10:35 /home/file2
-rw-r--r--. 1 root root 0 Mar 11 10:35 /home/file4
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。