1.输入/输入控制
cmd < file/dev 将文件或设备作为命令的输入。
cmd > file/dev 将命令执行的结果输入到文件或设备。
cmd >! file/dev 将命令执行的结果送到指定的文件,若文件已经存在则覆盖,或者设备。
cmd > & file/dev 将命令执行时屏幕所产生的任何信息写入指定的文件中或设备。
cmd >> file/dev 将命令执行的结果附加到文件中或设备。
cmd >> & file/dev 将命令执行时的所产生的任何信息附加到指定的文件中或设备。
2.标准错误重定向符号
0是标准输入,1是标准输出,2是标出错误输出
2 > file/dev 将一个标准错误输出重定向到一个文件或设备
2 >>file/dev 将一个标准错误输出重定向到一个文件或设备 追加到原来的文件
2 > &1 将一个标准错误输出重定向到标准输出
2 >& 将一个标准错误输出重定向到一个文件或设备
2 |& 将一个标准错误 管道 输送 到另一个命令作为输入
3.重定向命令
1. cmd1 | cmd2 将命令1的执行结果作为输入送到命令2,作为命令2的输入。(利用匿名管道,一般用于过滤程序)
2. echo 内容 > file/dev 将内容作为file/dev的输入。
3. cut 文件内容查看
作用:显示文中的指定部分,删除文中的指定字段。显示文件内容,类似于type命令。
- 该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。
- 当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断键可以终止该命令的执行,并且返回Shell提示符状态。
语法: cut <选项><参数>
-
-b:仅显示行中指定直接范围的内容; -c:仅显示行中指定范围的字符; -d:指定字段的分隔符,默认的字段分隔符为“TAB”; -f:显示指定字段的内容; -n:与“-b”选项连用,不分割多字节字符; --complement:补足被选择的字节、字符或字段; --out-delimiter=<字段分隔符>:指定输出内容是的字段分割符; --help:显示指令的帮助信息; --version:显示指令的版本信息。
参数:filename
示例:
数据:数据是以空格为分割。
打印以空格为空格符的第一字段,第三字段。
cmd:cut -d ' ' -f 1,3 file_name
打印文件中第一行到第四行的内容:
cmd: cut -c 1-4 file_name
打印前4个之后的内容,包括第四个:
cmd: cut -c 4- file_name
4.grep 文本内容查找工具
使用的是正则表达式查找,将查到的结果也通过重定向打印出来。
可以和匿名管道 | 一起配合使用。
5.wc命令
功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
命令格式:wc [选项] file_name。如果没有给出文件名,则从标准输入读取。
参数:
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息
--version 显示版本信息
6.sort命令
原理: sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
格式: sort [参数] file_name
-u :去除重复行 。
-r :默认是升序,-r改为降序。
-o:将排序后的内容重新存入到源文件。
-n :按照数值进行排序。类似情况 20 和3比较,不按照数值比较可能会发生2比3小的情况。
-t,-k:-t 指定间隔符,如果在文件中有多个条件可以排序,用-t选择分隔符,用-k表示第几个为排序判断条件。
-f:小写转大写,忽略大小写。
-b:忽略每一行前面的空格,从第一个字符开始判断。
-c:检查是否排好序。如果乱序,输出第一个乱序的行的相关信息,最后返回1。
-C:检查是否乱序,如果乱序,不输出内容,仅返回1。
4.重定向函数。
dup,dup2函数。
头文件:#include<unistd.h>
定义函数: int dup(int oldfd);
函数说明:
函数dup 允许你复制一个oldfd文件描述符。存入一个已存在的文件描述符,它就会返回一个与该描述符“相同”的新的文件描述符。即这两个描述符共享相同的内部结构,共享所有的锁定,读写位置和各项权限或flags等等。例如:对一个文件描述符进行了lseek操作,另一个文件描述符的读写位置也会随之改变。不过,文件描述符之间并不共享close-on-exec flags.
返回值:如成功则返回新的文件描述符,否则出错返回-1.注意:由dup函数返回的新文件描述符一定是当前可用文件描述符中的最小值。
定义函数:int dup2(int oldfd, int newfd);
函数说明:
dup2用来复制参数oldfd所指的文件描述符,并将oldfd拷贝到参数newfd后一起返回。若参数newfd为一个打开的文件描述符,则newfd所指的文件会先被关闭,若newfd等于oldfd,则返回newfd,而不关闭newfd所指的文件。dup2所复制的文件描述符与原来的文件描述符共享各种文件状态。共享所有的锁定,读写位置和各项权限或flags等等.
返回值:如成功则返回新的文件描述符,否则出错返回-1. 注意:由dup2函数返回的新文件描述符一定是当前可用文件描述符中的最小值。
newfd和oldfd具有的共同点:
(1)相同的打开文件(管道)。
(2)相同的文件指针,即两个文件共享一个文件指针。
(3)相同的访问模式。读取、写入。
(4)相同的文件状态标识。