管道和重定向

管道和重定向

标准输入重定向:默认键盘/文件/命令(STDIN:0)
标准输出重定向:屏幕(STDOUT:1)
标准错误重定向:屏幕(STDERR:2)

输入重定向

符号 作用
命令 <  文件 文件作为命令输入
命令 <<  分隔符 读入命令遇到分隔符为止
命令 < 文件1 > 文件2 f1作为命令输入并输出到f2

输出重定向

符号 作用
命令 >  文件 输出重定向到文件(清空原文件)
命令 2> 文件 错误重定向到文件(清空原文件)
命令 >> 文件 输出重定向到文件(追加内容)
命令 >> 文件 2>&1
命令 &>> 文件
将错误与输出同时写入文件(追加内容)
[root@linuxstudy ~]# echo "hello" > a.txt
[root@linuxstudy ~]# cat a.txt
hello
[root@linuxstudy ~]# echo "world" > a.txt
[root@linuxstudy ~]# cat a.txt
world
[root@linuxstudy ~]# echo "hello" > a.txt
[root@linuxstudy ~]# echo "world" >>  a.txt
[root@linuxstudy ~]# cat a.txt

# 搜集错误的信息
[root@linuxstudy ~]# ls -l zaz > stderr.txt 
ls: cannot access zaz: No such file or directory
[root@linuxstudy ~]# ls -l zaz 2> stderr.txt 
[root@linuxstudy ~]# cat stderr.txt 
ls: cannot access zaz: No such file or director

# 标准输入
[root@linuxstudy ~]# wc -l < stderr.txt 
1
统计行数

管道命令符

把A命令的标准输出当成B命令的标准输入
A | B

[root@linuxstudy ~]# grep "/sbin/nologin" /etc/passwd | wc -l

重置密码

ehco "aaa" | passwd --stdin root

发邮件

echo "hello" | mail -s "Hello-email" xxx

mail -s "emial2" xxx@163.com << over

通配符

ls -l /dev/sda*
# ? [0-xxx][abc]...

转译字符

* 转译\后的一个变量位普通字符串
''* 转译所有变量为纯字符串
""保留变量属性不做转译处理
``执行命令返回结果

环境变量

变量 作用
HOME 家目录
SHELL shell解释器名称
HISTSIZE 输出的历史命令记录数
HISFILESIZE 保存的历史命令记录数
MAIL 邮件保存路径
LANG 系统语言
RANDOM 生成随机数
PS1 Bash解释器提示符
PATH 定义解释器搜索用户执行命令的路径
EDITOR 默认文本编辑器
mkdir /home/mydir
MYDIR=/home/mydir
# 一般变量转全局变量
export MYDIR
posted @ 2020-08-16 10:43  Dave-Mo  阅读(46)  评论(0)    收藏  举报