我的后端学习大纲
我的Linux学习大纲
重定向介绍
标准输入介绍
从键盘读取用户输入的数据,然后再把数据拿到Shell程序中使用;
标准输出介绍
Shell程序产生的数据,这些数据一般都是呈现到显示器上供用户浏览查看;
默认输入输出文件
每个 Unix/Linux 命令运行时都会打开三个文件, 文件如下
文件名 | 类型 | 文件描述符(file description, fd) | 功能 |
---|---|---|---|
stdin | (standard input) 标准输入文件 | 0 | 获取键盘的输入数据 |
stdout | (standard output) 标准输出文件 | 1 | 将正确数据输出到显示器上 |
stderr | (standard error) 标准错误输出文件 | 2 | 将错误信息输出到显示器上 |
每个文件都有一个唯一的 文件描述符fd, 后面会通过唯一 文件描述符fd 操作对应的信息
Shell程序操作输入输出时用到这3个文件
- Shell程序默认会从stdin文件中读取输入数据
- Shell程序默认会向stdout文件输出正确数据
- Shell程序默认会项stderr文件中输出错误信息
这3个文件用于临时传输数据使用
重定向输入输出介绍
-
标准输入是数据默认从键盘流向程序,如果改变了它的方向,数据就从其它地方流入,这就是输入重定向。
-
标准输出是数据默认从程序流向显示器,如果改变了它的方向,数据就流向其它地方,这就是输出重定向。
Linux Shell 重定向分为两种,一种输入重定向,一种是输出重定向;
重定向的作用
输出重定向是指命令的结果不再输出到显示器上,而是输出到其它地方,一般是文件中。这样做的最大好处就是把命令的结果保存起来,当我们需要的时候可以随时查询。
重定向语法
命令 | 说明 |
---|---|
命令 > file | 将正确数据重定向输出到 file 文件中, 覆盖方式 |
命令 < file | 将输入重定向从 file 文件中读取数据 |
命令 >> file | 将正确数据重定向输出到 file 文件中, 追加方式 |
命令 < file1 > file2 | 从file文件读取数据, 输出数据到file2文件中 |
命令 fd> file | 根据指定的文件描述符fd 将数据重定向输出到 file 文件中, 覆盖方式 |
命令 fd>> file | 根据指定的文件描述符fd 将数据重定向输出到 file 文件中, 追加方式 |
命令 > file fd1>& fd2 | 将 fd1 和 fd2 文件描述符合并 输出到文件。 |
fd1<& fd2 | 将 fd1 和 fd2 文件描述符合并 从文件读取输入. |
<< tag | 读取终端输入数据, 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 标记名tag可以任意 |
在输出重定向中,
>
代表的是覆盖输出,>>
代表的是追加输出。fd是文件描述符
0 通常是标准输入(STDIN),
1 是标准输出(STDOUT),
2 是标准错误输出(STDERR)。
fd> 或 fd>> 中间不可以有空格
输出示例:正确信息重定向输出
创建文件redirect1.txt
touch redirect1.txt
执行who命令重定向输出到redirect1.txt文件中
echo "itheima" >> redirect1.txt
输出示例:错误信息重定向输出
预览错误消息
ls java
没有java目录所以报错
将错误消息输出到error.log文件中
ls java 2> redirect2.txt
2 是标准错误输出(STDERR), 注意
>
覆盖方式输出
2>
注意fd与>符号之间不能有空格
运行效果
输出示例:正确和错误信息同时输出
将正确信息与错误信息都保存到一个文件中
echo "itcast" > redirect2.txt 2>&1
数字 1 代表正确输出的结果输出到文件中
数字 2 代表错误结果输出到文件中
2>& 1
将正确和错误都输出到文件中.2>&
中间不能有空格, 写法有2种 合并第一种写法:
2>& 1
合并第二种写法:
2>&1
运行效果
输入示例:统计文件数据行数
wc命令介绍
Linux wc 命令可以用来对文本进行统计,包括单词个数、行数、字节数
wc命令语法
wc [options] [文件名]
options有如下:
选项 | 含义 |
---|---|
-c | character, 统计字节数 |
-w | word, 统计单词数 |
-l | line, 统计行数 |
演示
统计文件redirect2.txt中数据行数
wc -l < redirect2.txt
运行效果
输入示例:逐行读取文件数据
循环读取文件每一行数据
while read str; do echo $str; done < redirect2.txt
运行效果
输入示例:读取终端输入数据的行数
小结
-
Shell重定向的含义
改变标准数据流动的方向,
a.可以将数据输出到文件中, 叫重定向输出
b.可以读取文件中的数据作为输入, 叫重定向输入
-
使用重定向输出数据到文件中保存
命令 > file
命令 >> file
命令 2 >> file
命令 > file 2&>1
-
使用重定向从文件中读取输入数据
命令 < file
命令 < file1 > file2