Linux-Shell学习-重定向

Content:

重定向标准输出

重定向标准错误

重定向标准输入

会用到的命令:

cat、sort、uniq、grep、wc、head、tail

可以通过man或者info命令查看更多的使用方法

扫描二维码关注公众号,回复: 6993458 查看本文章

I/O重定向允许我们改变输入的来向和输出的走向。

 

重定向标准输出:

# 把/usr/bin目录下的文件和目录通过ls -l的格式输入到当前目录的ls-output.txt文件中
ls -l /usr/bin > ls-output.txt 
ls -l ls-output.txt 
cat ls-output.txt 
# 如果目录不存在,则会出错,输出‘没有那个文件或者目录’到屏幕
ls -l /bin/usr > ls-output.txt 
# 如果在执行一遍下面的shell,ls-output.txt的内容会被覆盖
ls -l /usr/bin > ls-output.txt
# 所以我么可以这样来清除文件的内容
> ls-output.txt
# 当然有追加的模式
ls -l /usr/bin >> ls-output.txt

重定向标准错误:

# 如果目录不存在,并不会出现错误的提示,而是直接存到文件中
# ‘2>’是连在一起的,标准输入、输出和错误分别为0、1、2 ll /bin/usr 2> ls-error.txt

重定向标准输出和错误到同一个文件

# '2>&1'是连在一起的
# 这个方法有两个重定向,首先重定向到标准输出的文件,然后重定向文件描述符2(标准错误)到描述符1(标准输出).
# 对于顺序敏感,如果重定向错误在重定向标准输出前则失效
ll /bin/usr > ls-output.txt 2>&1
# 下面这个方法也是可以的
ll /bin/usr &> ls-output.txt

处理不需要的输出:

ll -l /bin/usr 2> /dev/null

可以看到/dev/null是一个字符设备文件,叫做位存储捅,对输入不做处理。

重定向标准输入:

cat:

# 从文件获得标准输入
cat ls-output.txt
# cat还可以把多个文件连起来,假如你有LOG.[0-9]10个文件
# touch LOG{1..9}                 ll LOG[1-9]
cat LOG[1-9] > LOG-ALL
# 如果cat后面没有东西就表示输入来自键盘,ctrl + d告诉cat到文末了
cat
cat > Typing
cat Typing
# 把文件作为标准输入源,和cat [file]效果一样
cat < [file]

管道线比较有用,感觉

# command1的输出可以作为command2的输入
command1 | command2

你可以这样,

ll /usr/bin | less
# 下面是过滤器的使用
# 产生一个有序列表 ll /usr/bin | sort | less

# 忽略重复行
ll /usr/bin | sort | uniq | less
# 打印行、字和字节数
ll /usr/bin | wc
# grep pattern [file] 打印匹配行,pattern是正则表达式
ll /usr/bin | sort | uniq | grep zip
# head和tail打印头和尾 -n是行数 -f可以监控这个文件,如果有添加就会显示在屏幕上
ll /usr/bin | tail -n 5

tee-从stdin读取数据,并同时输出到Stdout和文件

ll /usr/bin | tee ls.txt | grep zip

 

参考:

《快乐Linux命令行》

猜你喜欢

转载自www.cnblogs.com/KuroNJQ/p/11308082.html