重定向和管道符:
1、重定向
程序 = 指令 + 数据
命令 变量
在程序中程序如何输入?又如何输出?
数据输入:键盘 -- 标准输入,但并不是唯一输入方式
--stdin
echo “123456” | password --stdin “username”
例如:功能添加用户 useradd.sh user.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
0 -- 标准输出
1 -- 标准输入
2 -- 错误输入输出(标准错误)
常见重定向符号
1、标准输出
> 覆盖重定向、非常危险
set -C 关闭覆盖重定向功能
>| 强制重定向
>> 追加重定向、不覆盖
2、标准输入
< tr 替换文件内容
tr set1 [set2] < file.txt
<< 将多行数据同时输入
cat >>a.txt<<EOF
>1
>2
>3
>EOF
3、错误输出
2> 2>>
扩展:不需要输出内容,只需要输出状态;
ls /etc/ > /dev/null
If [$? -eq 0];then
循环体
fi
&> &>> == 2&>1
ls /etc/ &> /dev/null
2、管道 - tee
command1 | command2 | command3 | ... ...
前一个命令的执行结果交给最后一个命令来执行;
【Linux思想:结合小功能,实现大功能】
find 【范围】 -name abc -type f -perm 600 -mtime +7 | xargs rm -rf
tee 一路输入,两路输出
tee /tmp/tee.out 如果没有文件,会创建,默认如果文件存在有内容,会覆盖;
tail 查看文件尾部多少行(默认10行)
-n tail -n 5 /etc/passwd == 简写tail -5 /etc/passwd
-f 实时查看文件更新内容
tail -f /var/log/message
head 查看文件头部多少行(默认十行)
-n # 前#行,简写 -#
3、文本处理工具 -wc,cut,sort,uniq
wc
word count 统计文本文件中的字符个数
用法:wc filename
行数 字符个数 文件大小(字节) 文件名
-l
-w
-c
cut
用来做文件分隔
-d 指定分隔符(delimiter)
-d[ :] //不行
-f 指定输出的列数据
-f2
-f1-3
-f1,3
--output-delimiter=’xx’
【cut的局限性:1、-d 指定分隔符,不能同时指定多个 2、不能做高级的格式化输出,所以要熟练掌握awk】
sort
-u uniq去重复
uniq
连续且相同的命令,才被视为重复
建议,先排序,后去重
-c 统计某些字符重复的次数
sort FINENAME | uniq -c
tar 归档 -> 对目录
gzip
xz
bzip2
原文:https://www.cnblogs.com/Rubyonly/p/11347346.html