Linux学习之系统默认打开的文件描述符、重定向

系统默认打开的文件描述符

一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符。可以在/proc/PID/fd里边可以看到打开文件的描述符,PID需要改成具体的pid,比如可以使用A终端输入vim proctest之后按下回车键。
在这里插入图片描述
打开一个vim编辑窗口。
Linux学习之系统默认打开的文件描述符、重定向_第1张图片

再打开一个B终端,输入ps -aux | grep 'vim'查找一下vim的pid,发现是22730
在这里插入图片描述
还是在B终端上输入ls -l /proc/22730/fd,可以看到22730进程的文件描述符
Linux学习之系统默认打开的文件描述符、重定向_第2张图片

0 – stdin (standard input) 标准输入
1 – stdout (standard output) 标准输出
2 – stderr (standard error) 标准错误输出

这三个文件描述符是系统默认打开的。

B终端上执行kill -9 22730,把vim proctest这个进程关闭,再次ls -l /proc/22730/fdls -l /proc/22730都是报ls: cannot access xxxx: No such file or directory,下边的截图,我把执行kill -9 22730也显示出来了。

Linux学习之系统默认打开的文件描述符、重定向_第3张图片

重定向

重定向包括两种:

输入重定向:使用文件里边的内容代替键盘输入
输出重定向:使用文件代替终端输出

输入重定向

可以使用grep root /etc/passwd
在这里插入图片描述
也可以grep root < /etc/passwd/etc/passwd的文件内容重定向给grep命令,处理过之后再输出到标准输出上。
在这里插入图片描述

wc -l可以统计输入字符的行数。wc -l输入到命令行之后按下回车,就可以输入字符串,然后按下回车键,还可以接着输入字符串,然后按回车键,依次类推,而最后一行输入之后需要按下回车键,再按Ctrl+d,就能统计输出字符的行数。
Linux学习之系统默认打开的文件描述符、重定向_第4张图片

最后统计出来的结果显示到最后。
Linux学习之系统默认打开的文件描述符、重定向_第5张图片

使用输入重定向可以统计出来一个文件里边的行数,比如wc -l < /etc/passwd可以统计出来passwd里边的行数。在这里插入图片描述

cat -n /etc/passwd把行号显示出来,同时显示文件所有内容,可以验证上边的行数统计没有错误。
Linux学习之系统默认打开的文件描述符、重定向_第6张图片

还可以使用输入重定向,把一个文件里边的内容赋值给一个变量。vim goodPerson.txtgood person写入到goodPerson.txt,要是不知道怎么操作的话,可以参考《Linux学习之vim在光标所在处写入内容,保存退出》,cat goodPerson.txt可以看一下里边的内容。

在这里插入图片描述

read expection < goodPerson.txt把文件里边的内容赋值给一个变量,echo ${expection}看一下变量expection里边的值。
在这里插入图片描述

输出重定向

输出重定向有以下几种格式:

>,覆盖输出重定向。
>>,追加输出重定向
2>,标准错误输出重定向,会覆盖原来的内容
2>>,标准错误输出重定向,在原来的内容后边追加
&>,标准输出和标准错误输出都重定向一个文件,会覆盖原来的内容
&>>,标准输出和标准错误输出都重定向一个文件,在原来的内容后边追加

cd /shelllearn/进入到/shelllearn里边。
在这里插入图片描述

echo本来是往标准输出写入内容的,可以使用输出重定向往文件里边写入内容。
在这里插入图片描述

覆盖输出重定向

echo "123" > good.txt可以将字符串写到good.txt文件里边,使用cat -A可以看到echo会默认添加换行符。
在这里插入图片描述

echo "456" > good.txt,把文件里边的123清空之后,把456写到good.txt文件里边。
在这里插入图片描述

> good.txt可以把文件里边的内容清空。
在这里插入图片描述

追加输出重定向

echo "good" >> good.txtecho "study" >> good.txt,可以看到是追加输出重定向,字符串都写到了good.txt里边。

Linux学习之系统默认打开的文件描述符、重定向_第7张图片

标准错误输出重定向

依次执行的命令如下:

ls -l
ls -l 2> error.txt
cat error.txt
ls -l test
ls -l test 2> error.txt
cat error.txt

Linux学习之系统默认打开的文件描述符、重定向_第8张图片
依次执行的命令如下:

nocmd
cat error.txt
nocmd 2> error.txt
cat error.txt

在这里插入图片描述

标准输出和标准错误输出重定向

执行下边命令:

ls -l
ls -l &> stdouterror.txt
cat stdouterror.txt
ls -l test &> stdouterror.txt
cat stdouterror.txt

Linux学习之系统默认打开的文件描述符、重定向_第9张图片
上边截图里边的命令和输出结果结合起来可以说明&>确实可以把标准输出和标准错误输出都写入指定文件里边,而且是覆盖写入。

此文章为7月Day 11学习笔记,内容来源于极客时间《Linux 实战技能 100 讲》。

你可能感兴趣的:(Linux基础学习,linux,学习,excel)