Linux下重定向命令函数总结

本文介绍了文件输入输出控制的基本命令,如输入重定向、输出重定向及其在文本处理中的应用,包括grep文本搜索、wc统计命令、sort排序命令等,并讲解了dup和dup2函数在文件描述符复制中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)相同的文件状态标识。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值