Linux-Shell学习-重定向
Content:
会用到的命令:
cat、sort、uniq、grep、wc、head、tail
可以通过man或者info命令查看更多的使用方法
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