目录
重定向 将命令与文件进行互动
输出重定向
输入重定向
管道符 将命令与命令互动起来
重定向 将命令与文件进行互动
重定向分类
一般情况下,Linux命令运行时都会打开一下三个文件
标准输入文件:stdin文件,文件描述符为0,Linux默认从stdin读取数据
标准输出文件:stdout文件,文件描述符为1,Linux默认向stdout写入标准信息
错误输出文件:stderr文件,文件描述符为2,Linux默认向stder中写入错误信息
输出重定向
输出重定向 将命令的输出结果写入到文件中(屏幕上就不显示输出结果了)
标准输出重定向:将本来要写入到标准文件stdout的数据转到我们指定的文件中
错误输出重定向:将本来要写入到错误文件stdout的数据转到我们指定的文件中
> 清空写入 将命令的标准输出结果写入到某个文件中(此文件的原始数据清空)
>> 追加写入 将命令的标准输出结果写入到某个文件中(保留此文件的原始数据)
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文件中