当前位置 : 主页 > 网页制作 > HTTP/TCP >

重定向和管道符

来源:互联网 收集:自由互联 发布时间:2021-06-16
重定向 程序 =指令 +数据 命令 +变量 在程序中,数据如何输入?又如何输出 键盘输入:键盘 --标准输入,但是并不是唯一输入方式 --stdin useradd abc; passwd abc echo“123456”|passwd --stdin “

重定向

         程序=指令+数据

                  命令+变量

         在程序中,数据如何输入?又如何输出

         键盘输入:键盘--标准输入,但是并不是唯一输入方式

                       --stdin

         useradd abc;passwd abc

         echo“123456”|passwd --stdin “username” 设置密码

         例如:功能添加用户 txt文本文档1000个用户

                  ./useradd.sh a

                  ./useradd.sh b

                  ...

                  ./useradd.sh<user.txt

while line:do

                          循环体$line

done</etc/passwd

数据输出:显示器--标准输出,但并不是唯一输出方式

                  ls /etc/>a.txt

         fd 文件标识符0-9 --相当于给文件分类:

                  0  1  2  3

                  0--标准输出

                  1--标准输入

                  2--错误输入输出(标准错误)

         常见重定向符号

         1、标准输出

                  >  覆盖重定向、非常危险

                  set-C 关闭覆盖重定向功能 set+C 打开重定向功能

                  >| 强制重定向

                  >>追加重定向

2、标准输入

                  <       tr  替换文件内容

                          tr set1 [set2]<file.txt

                  <<    cat  将多行数据同时输入

                          cat>>a.txt<<EOF

                          >1

                          >2

                          >3

                          >EOF

         3、错误输出

                  2>       2>>      

                  扩展:不需要输出内容,只需要输出状态

                          ls /etc/ >/dev/null

                          #echo$?#

                          if[$? -eq 0];then

                                   循环体

                          fi

                  &>   &>> == 2&>1

                           ls /etc/  &> /dev/null

         2、管道符 -tee

         前一个命令的执行结果交给后一个命令来执行;

         【LINUX思想:结合小功能实现大功能】

         free -m|  grep "^Mem"|cut -d ‘  ‘-f19

         free -m|grep"^Mem"|awk‘{print $3}‘

         find [范围] -name ab* -type f -perm 600 -mtime +7|xarge

         tee 一路输入,两路输出

         tee /tmp/tee.out

         如果没有文件,会创建,默认如果文件存在有内容,会覆盖;

         练习:

         1、将/etc/passwd文件中的前5行内容转化为大写后保存/tmp/passwd.out文件中;

                  head -5 /etc/passwd |tr[a-z][A-Z]>/tmp/passwd.out

         2、将登录至将系统上用户信息汇总的后3位信息转换为答谢后保存至/tmp/who.out文件中;

                  who |tail -3| cut -d‘ ‘ -f1 | tr [[:lower:]][[:upper:]]| tee /tmp/who.out

         3、tail 查看文件尾部多少行(默认10行)

                          -n tail -n 5 /etc/passwd ==简写 tail -5 /etc/passwd

                          -f  实时查看文件更新内容

                          tail -f /var/log/message

                      head  查看文件头部多少行(默认十行)

                          -n #  前#行  简写-#

                      取10行 - 20行 :  head -20 /etc/passwd|tail -10

网友评论