重定向和管道符
1.重定向:
程序等于指令加数据
指令就是命令,数据就是变量
在程序中,数据如何输入,如何输出?
数据输入:键盘—标准输入,但是并不是唯一的输入方式
--stdin
--echo “123456” | passwd –stdin “username”---同一行直接输入密码而不进入交互式界面;
--功能添加用户 useradd.sh user.txt文本文档1000个用户
./useradd.sh <user.txt
--while line;do
循环体$lines
done < /etc/passwd
数据输出:显示器---标准输出,但并不是唯一的输出方式
Ls /etc/ > a.txt
Fd 文件标识符 0-9 ---相当于给文件分类;
0 1 2
0----标准输出
1----标准输入
2----错误输入输出(标准错误)
常见重定向符号:
1、 标准输出
> 覆盖重定向、非常危险,
Set -C 去掉覆盖重定向的功能
>| 强制重定向
>> 追加重定向,不覆盖
2、 标准输入
< tr 替换文件内容
--tr set1 [set2] < file.txt
<< cat 将多行数据同时输入
--cat >>a.txt<<EOF
>1
>2
>3
>EOF
3、错误输出
2>.
扩展:不需要输出内容,只需要输出状态;
----------ls /etc. > /dev/null 2> /dev/null
If [$? -eq 0];then
Fi
&> &>> == 2&>1
--ls /etc/ &> /dev/null
2>>
2.管道 – tee
Command1 | commend2 | commend3 | ……
前一个命令的执行结果交给后一个命令来执行;
【Linux思想:结合小功能实现大功能】
管道符:
定位
定位行和列
--free -m | grep “^Mem” | cut -d’ ’ -f19
--free -m | grep “ ^Mem” | awk ‘{print $3}’
--tee 一路输入,俩路输出
--tee /tmp/tee.out
如果没有文件,会创建,默认如果文件存在内容,会覆盖;
在输入的时候,会先打印输出一遍,然后查看再输出一边
练习:
将/etc/passwd文件中的前五行内容转换成大写保存在/tmp/passwd.out文件中
将登录至当前系统上用户信息汇总的后三位信息转换为大写后保存至/tmp/who.out文件中
who | tail -2 | cut -d‘ ’ -f1 | tr [[:lower:]] [[:upper:]] | tee /tmp/who.out
--tail 查看文件尾部多少行(默认10行)
-n 指定多少行
-f 实时查看文件更新内容
--head 查看文件头部多少行(默认10行)
-n 前n行
取10-20行:head – 20 /etc/passwd | tail -10