输入/输出和管道及相关的命令

文件描述符与标准输入/输出:

文件描述符是Linux系统内部使用的一个文件代号、它决定从哪里读入命令所需的输入和将命令产生的输出及错误显示送到什么地方。

文件描述符的具体含义如下:

0:标准输入,文件描述的缩写为stdin

1:标准输出,文件描述的缩写为stdout

2:标准错误(信息),文件描述的缩写为stderr

在以上描述中,0、1和2为文件描述符的号码。

搜索文件和目录的命令find:

find ~ 在路径名列表中递归地向下遍历目录树以寻找与搜寻条件相匹配的文件时,系统将把满足条件的每一个文件显示在终端的屏幕上。find pathnames expression actions

find命令中各选项的含义:

    find命令中各选项的含义如下为:

        pathnames:搜寻起始的绝对路径或相对路径

        expressions:一个或多个选型定义的搜寻文件

        actions:当文件被定位之后需要进行的操作

例:

从家目录开始搜寻名为dog.wolf.baby的文件:

find - - name dof.wolf.baby

寻找文件名义dog.开头并以.baby结尾的文件:

find - - name "dog.* .baby"

找到disable_dog.wolf.baby的文件并删除掉:

find - - name disable dog.wolf.baby -exec rm {} 

在删除找到的文件之前先确认:

find - - name dog1.wolf.girl -ok rm {}

将输出重定向到文件中:

在Unix或LInux上输出冲定向的符号是:覆盖原文件的内容,在原文件之后追加内容。将wolf目录中文件列表写入到当前目录的dog.wolf文件中:ls -l wolf/* > dog_wolf。

将当前日期和时间添加到dog_wolf文件中:date >> dog_wolf

从/etc目录开始搜索名为passwd的文件,在屏幕上只显示标准错误信息,而将标准输出重定向输出到一个叫output.std文件中: find /etc -name passwd 1> output.std    

将find命令的错误信息导出到errors.std文件中:find /etc-name passwd 2>errors.std    

标准输出写入output、将标准错误写入errors:find /etc - name passwd 2> errors 1> output

tr命令:

tr ~ 转换、压缩和/或删除来自标输入的字符,并将结果写到标准输出上。tr命令不接受文件名形式的参数、而要求它的输入被重新定向为某个地方。将winsql.sql文件中的所有大写字母转换为小写: tr 'A - Z'  'a - z' < winsql.sql    

删除dept.data文件中每行结束符中的\r符号并将结果存入dept.data.unix文件中: tr ~ -d "\r" < dept.data > dept.data.unix    列出所有ascii码字符所对应的数字:man ascii

cut(剪切)命令:

cut [选项]...[文件名]...  其中常用的选项如下:-f 说明(定义)字段(列)    -c:要剪切的字符    -d:说明字段的分隔符(默认为Tab)提取dept.data 文件第2列、列分隔符为,cut -f2 -d, dept.data

paste(粘贴)命令:

paste ~ 将每一个文件中的每一行用Tab字符分割开,并顺序地写到标准输出上。paste[选项]...[文件名]... 如果命令中没有文件名、或文件名使用了 - ,paste将从标准输入读入,paste可将多个文件合并成一个文件,如在命令中使用了 -d 选项将更改输出的分隔符,默认分隔符是Tab字符。

使用sort命令进行排序:

sort ~ 对正文进行排序并将结果送到标准输出。sort命令不会改变原始文件中的数据,正文数据既可以来自一个文件,也可以来自另一个命令的输出,sort [选项]...[文件名]...

sort命令中常用的选项如下:

-r:进行反向排序(降序)

-f:忽略字符的大小写

-n:以数字的顺序进行排序

-u:去掉输出中的重复行

-t:-t c表示以字符c作为分割符

-k:-k N表示按第N个字段排序

-k: N1,N2表示先按第N1个字段排序,之后再按第N2个字段排序

去掉相邻重复行的命令uniq:

uniq ~ 删除掉一个文件中的相邻重复行。

其中经常使用的一些选项如下:

-c:在显示的行前冠以该行出现的次数

-d:只显示重复行

-i:忽略字符的大小写

-u:只显示唯一的行

管道(|)操作:

| ~ 连接两个(或多个)Linux命令    命令1 | 命令2...    将命令1的标准输出重定向为命令2的标准输入,标准错误信息(stderr)并不通过管道传播,第1个命令的错误信息也不会传给第二个命令,第2个命令的错误信息也不会传给下一个命令等。

例 :

列出系统上工作的用户有多少:  who | wc -l

列出在Linux系统上一共创建了多少用户:  cat /etc/passwd | wc -l

在管道操作中加入xargs命令的例子:  cat delete_disable | xargs rm -f

使用tee命令分流输出:

tee ~ 将标准输入复制给每一个指定的文件和标准输出,tee命令也被称为T型管道。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券