重定向
程序=指令+数据
命令+变量
在程序中,数据如何输入?又如何输出
键盘输入:键盘--标准输入,但是并不是唯一输入方式
--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