Linux学习笔记(二):I/O重定向

”I/O”代表输入/输出

程序输出的两种类型:程序要实现的功能的结果、程序的执行状态(错误)

程序的运行结果会被输送到标准输出文件(stdout),程序的执行状态会被输送到标准错误文件(stderr),程序从标准输入(stdin) 设备得到输入。

重定向的作用在于更改程序的输出、输入

一、标准输出(>、>>)

标准输出一般是显示在屏幕上,可以通过>、>>来重定向标准输出在什么地方

ls -l > /home/you/1.txt		//通过>符号将本应该输出到屏幕的结果输出到指定路径下

在这里插入图片描述

ls -l /etc > /home/you/1.txt	//使用>符号时会文件会被从头开始重写

在这里插入图片描述

ls -l /etc >> /home/you/1.txt	//使用>>不会重写文件,而是添加到文件内容之后

使用>>时,若没有该文件则会自动创建

在这里插入图片描述

有些程序的错误信息会输出到标准输出(stdout),但是大部分情况下错误信息会被送到标准错误(stderr),因此我们还需要重定向标准错误。

二、标准错误(2>、&>、2>&1)

shell 内部参考标准输入、输出、错误为文件描述符0,1和2

使用文件描述符来重定向文件,文件描述符”2”来执行重定向标准错误(stderr)

ls /you/home 2> 1.txt	//选择一个不存在的目录正常情况下直接输出错误到屏幕,使用文件描述符“2”放在重定向操作符之前来重定向标准错误

在这里插入图片描述

标准输出(stdout)标准错误(stderr) 可以同时重定向在同一个文件中

ls /you/home > 1.txt 2>&1	//先重定向标准输出,再使用2>&1重定向标准输出和错误到同一个文件
ls /you/home >> 1.txt 2>&1	//使用>>文件不会被从头开始重写

在这里插入图片描述

标准错误的重定向必须在标准输出重定向之后

ls /you/home &> 1.txt	//使用更为精简的&>来重定向标准输出和错误到同一个文件
ls /you/home &>> 1.txt	//使用>>文件不会被从头开始重写

在这里插入图片描述

重定向输出结果到”/dev/null”文件(位存储桶)可以接受输入,不做任何处理。

ls /you/home > /dev/null	//处理不需要的输出	
cat /dev/null > /home/you	//配合cat和重定向可以清空文件

在这里插入图片描述

三、标准输入(cat、<、tee)

使用<重定向操作符来把一个文件作为标准输入

cat

cat > 1.txt		//若该文件存在则从头开始重写,不存在则创建该文件,输入信息之后可以选择ctrl+d、ctrl+z退出并保存

在这里插入图片描述

在Linux(CentOS 7)中ctrl+z为中断操作ctrl+d为终止操作(相当于kill命令)

cat < 1.txt		//使用<从文件中获取标准输入

虽然上述命令没有什么实际效果,但是说明了重定向了标准输入

四、管道符(sort、uniq、grep)

现在对于管道操作符有了更深的理解,一个命令的标准输出为另一个命令的标准输入

管道操作符经常配合一些命令来对数据完成复杂的操作,起到过滤器的作用

tee

tee命令会从标准输入(stdin) 读取数据,将其内容输出到标准输出(stdout) 和保存在文件中。

在管道符的应用中,tee允许输出数据向后传递,并将内容复制到一个或多个文件。

ls /etc | tee 1.txt | grep a	//将结果保存到1.txt中,再进行相应的查找并进行标准输出

在这里插入图片描述

ls /etc | grep a | tee 1.txt	//先进行查找,再将查找的内容通过tee保存到1.txt

在这里插入图片描述

ls /etc | tee -a 1.txt		//tee命令中的-a参数可以在原有内容后添加而不是覆盖

在这里插入图片描述

sort

sort命令用于排序文本文件的内容(以行为单位)

sort命令默认排序方式(文本文件第一列的 ASCII 码次序)

sort 1.txt -k 2		//-k参数的作用是选择指定的列进行排序,该参数在命令最后添加
sort -b 1.txt		//-b参数的作用是忽略开头的空格,空格在ASCII码值为32
sort -d 1.txt		//-d参数的作用是仅处理字母、数字、空格
sort -f 1.txt		//忽略大小写(统一视为大写字母)
sort -n 1.txt		//按照数值大小进行排序
sort -u 1.txt		//排序结果去重输出(唯一)
sort -r -o 2.txt 1.txt		//-r倒序排序,-o排序后结果存入指定文件

sort命令通常配合着其他文本处理命令一起使用

uniq

uniq命令用于查重文本文件,配合sort命令(以行为单位)

uniq 1.txt		//会删除重复的行然后输出
uniq -c 1.txt	//-c参数会在行首统计该行重复出现的次数

当重复的行不相邻,uniq命令并不起作用,需要搭配sort命令使用

sort 1.txt | uniq -d	//先对于文件进行排序,再使用uniq命令仅显示重复的行
uniq -u	1.txt	//-u参数的作用是仅仅显示出现一次的行
uniq 1.txt 2.txt	//1.txt表示指定的标准输入(默认为从标准输入读取),2.txt表示的是指定的标准输出(默认为标准输出终端)

head/tail

查看文件的开头/结尾部分的内容

head -v -n 3 /var/log/secure		//显示的行数(默认为10),-v用于显示文件名
head -q -c 300 /var/log/secure		//显示的字节数,-q用于隐藏文件名(默认为隐藏)

在这里插入图片描述

tail命令的作用与head类似,默认查看的是文件的最后10行

tail -f 1.txt		//-f参数的作用是跟踪文件的更新,循环读取,ctrl+c停止
tail -n 20 1.txt	//显示文件最后20行的内容
tail -n +20 1.txt	//从文件的第20行到最后的内容

wc

wc命令可以计算文件的字数(Byte数、字数、列数)

wc 1.txt 2.txt 3.txt	//统计多个文件
wc -c 1.txt		//仅统计byte数(-c、--bytes、--chars)
wc -l 1.txt		//仅统计列数(-l、--lines)
wc -w 1.txt		//仅统计字数(-w、--words)

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值