zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux重定向符、管道符讲解

Linux重定向 讲解 管道
2023-09-14 09:15:39 时间

目录

重定向 将命令与文件进行互动

输出重定向

输入重定向

管道符 将命令与命令互动起来


重定向 将命令与文件进行互动

重定向分类

一般情况下,Linux命令运行时都会打开以下三个文件

标准输入文件:stdin文件,文件描述符为0,Linux默认从stdin读取数据

标准输出文件:stdout文件,文件描述符为1,Linux默认向stdout写入标准信息

错误输出文件:stderr文件,文件描述符为2,Linux默认向stderr中写入错误信息

输出重定向

输出重定向   将命令的输出结果写入到文件中(屏幕上就不显示输出结果了)

标准输出重定向:将本来要写入到标准文件stdout的数据转到我们指定的文件中

错误输出重定向:将本来要写入到错误文件stderr的数据转到我们指定的文件中 

  >     清空写入    将命令的标准输出结果写入到某个文件中(此文件的原始数据清空)

  >>    追加写入    将命令的标准输出结果写入到某个文件中(保留此文件的原始数据)

  2>    错误清空写入 将命令的报错结果写入到文件中(原始文件清空)

  2>>   错误追加写入 将命令的报错结果写入到文件中(保留原始文件数据)

  &>    不区分输出结果时错误的还是标准的,全部清空写入

  &>>   全部追加写入

错误重定向输出的作用

当我们在跑脚本时,这个脚本要安装多个安装包,通过将错误信息写入到文件中,就可以了解到哪些安装包在安装时出现了错误

输入重定向

输入重定向  将文件里面的内容作为命令的输入执行命令(用到的概率较小)

本来的命令需要从标准输入文件stdin中获取,现在转化为从文件中获取

命令 <  文件          将文件作为命令的标准输入

命令 << 分界符        从键盘中读入数据作为命令的标准输入,直到遇到分界符才停止

命令 < 文件1 > 文件2 将文件1作为命令的输入,然后将命令的执行结果写入到文件2

例子

wc -l < 文件名  直接将文件中的内容导入到命令

与wc -l 文件名相比,wc -l读取了文件名,wc -l < 没有读取文件名,直接读取了文件内容

<表示是文件直接把文件内容交给命令

cat << EOF >> 文件名   可以持续的往文件中写入内容,直到输入了EOF

注意:如果命令没有输入,则输入重定向对此命令是没有意义的


管道符 将命令与命令互动起来

管道符(|)可以将前面命令的输入结果传递给后面的命令进行二次处理

命令A | 命令B            将命令A的输出结果给到命令B执行

命令A | 命令B | 命令C   将命令A的输出结果给到命令B执行,执行结果再给到命令C执行

例子

grep /bin/bash /etc/passwd | wc -l        查看多少用户能够正常登录服务器

grep /bin/bash /etc/passwd | cut -d : -f 1  能够正常登录服务器的用户有哪些

 如果用户的登录终端是 /bin/bash,则说明这个用户能够正常使用这个账户登录服务器

 如果用户的登录终端是/sbin/nologin ,则说明这个用户不能够正常登录登录到服务器(只能管理某些服务)

echo redhat | passwd 用户名 将echo输出的结果作为linuxprobe的用户的密码

   并不是所有的命令都支持接收标输入的(passwd需要结合参数才可以接收标准输入)

   passswd  --stdin  通过接收标准输入的形式接收密码

echo redhat | passwd --stdin 用户名

管道符和重定向结合

cat abc.txt | tr [a-z] [A-Z] > 123.txt 

将abc文件中的小写字母替换为大写字母,并将修改后的内容写入到123文件中