小鸟初学Shell编程(五)输入输出重定向
重定向作用
一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符。
重定向可以让我们的程序的标准输出、错误输出的信息重定向文件里,那么这里还可以将文件的内容代替键盘作为一种标准输入的方式。
重定向符号
输入重定向符号"
<
"输出重定向符号"
>
",">>
","2>
","&>
"
输入重定向功能
01 输入重定向符号"<
"的作用:
会把文件的内容当做参数输入到进程,如下例子:
[root@omp120 home]# cat file.txt
hello
[root@omp120 home]# read a < file.txt
[root@omp120 home]# echo $a
hello
file.txt文件的内容是hello,上述的例子就是把file.txt的内容重定向到a
这个变量,并把a
变量打印出来。
输出重定向功能
01 输出重定向符号">
"的作用:
会把文件内容清空,在把输出内容重定向到指定的文件里,并且如果文件不存在则创建,如下例子:
[root@lincoding tmp]# echo 123 > /tmp/test
[root@lincoding tmp]# cat /tmp/test
123
[root@lincoding tmp]# echo abc > /tmp/test
[root@lincoding tmp]# cat /tmp/test
abc
02 输出重定向符号">>
"的作用:
会把输出的内容追加到指定的文件里,该文件不会被清空,并且如果文件不存在则创建,如下例子:
[root@lincoding tmp]# echo 123 >> /tmp/test
[root@lincoding tmp]# cat /tmp/test
123
[root@lincoding tmp]# echo abc >> /tmp/test
[root@lincoding tmp]# cat /tmp/test
123
abc
03 输出重定向符号"2>
"的作用:
是把进程错误输出的内容重定向到指定的文件里,如下例子:
[root@lincoding home]# abc
-bash: abc: command not found
[root@lincoding home]# abc > error.txt
-bash: abc: command not found
[root@lincoding home]# cat error.txt
[root@lincoding home]#
[root@lincoding home]# abc 2> error.txt
[root@lincoding home]# cat error.txt
-bash: abc: command not found
以上的演示结果可以得知,abc不是Linux的命令,执行了会报错说abd命令未找到的错误信息输出,那么这个错误信息需要用2>
重定向符才能把进程错误输出的内容重定向到指定的文件。
04 输出重定向符号"&>
"的作用:
无论进程输出的信息是正确还是错误的信息,都会重定向到指定的文件里,如下例子:
[root@lincoding home]# abc &> file.txt
[root@lincoding home]# cat file.txt
-bash: abc: command not found
[root@lincoding home]# free -m &> file.txt
[root@lincoding home]# cat file.txt
total used free shared buffers cached
Mem: 980 918 62 0 71 547
-/+ buffers/cache: 299 681
Swap: 1983 0 1983
输入重定向和输出重定向组合使用
输入和输出也是可以组合使用的,那么这个组合主要应用于在Shell脚本当中产生新的配置文件的场景,如下Shell脚本例子:
#!/bin/bash
cat > /home/a.sh << EOF
echo "hello bash"
EOF
把cat
命令的输出重定向到/root/a.sh
脚本文件,并且用输入重定向把EOF为脚本结尾。那么通过执行这个脚本,就会产生一个内容为echo "hello bash"
文件名为a.sh
的脚本文件。
执行结果:
[root@lincoding home]# ./test.sh
[root@lincoding home]# ls -l a.sh
-rw-r--r--. 1 root root 18 Sep 27 16:41 a.sh
[root@lincoding home]# chmod u+x a.sh
[root@lincoding home]# cat a.sh
echo "hello bash"
[root@lincoding home]# ./a.sh
hello bash
小结
以上的内容就是关于输入和输出重定向的用法,那么大家要注意输出重定向包括覆盖和追加模式,无论是覆盖还是追加模式,尽量不要用于我们的系统配置文件,那么在应用之前大家要注意对系统文件进行备份。
输入和输出重定向,还可以组合使用,一般在Shell脚本当中去产生新的配置文件的时候,会用到它们的组合的方式。
小鸟初学Shell编程(五)输入输出重定向的更多相关文章
- shell编程 之 输入输出重定向
1 输入输出重定向 标准输入:从终端得到命令,对于计算机来说,是从终端获得了命令,执行完了以后,结果和执行状态或者错误提示又会发回终端,这叫标准输出. 输入输出重定向就是从终端以外的别的地方得到输入, ...
- 小鸟初学Shell编程(四)管道符
管道作用 管道实际上就是进程之间的一个通信工具,那么用在Linux命令中主要是方便两条命令互相之间可以相互通信. 管道符 管道符(匿名管道)是Shell编程经常用到的通信工具. 管道符是"| ...
- 小鸟初学Shell编程(一)认识Shell
开篇介绍 Linux里非常的有用的一个功能,这个功能就叫Shell脚本. Shell脚本在我日常开发工作里也占了非常重要的角色,项目中一些简单的工作我们都可以使用Shell脚本来完成,比如定时删除日志 ...
- 小鸟初学Shell编程(七)变量引用及作用范围
变量引用 那么定义好变量,如何打印变量的值呢?举例下变量引用的方式. ${变量名}称作为对变量的引用 echo ${变量名}查看变量的值 ${变量名}在部分情况下可以省略成 $变量名 [root@li ...
- 小鸟初学Shell编程(九)环境变量变量配置文件
介绍 在上一篇使用完了环境变量,并且知道PATH环境变量概念,那么我们对命令的执行就有了一定深入的理解.那么PATH环境变量或其他环境变量是保存在哪呢?那么这篇文章主要介绍环境变量配置文件. 配置文件 ...
- 小鸟初学Shell编程(八)环境变量、预定义变量与位置变量
环境变量 环境变量:每个Shell打开都可以获得到的变量. 我们知道通过export的方式打开可以让子进程读取父进程的变量的值,那怎么样才能让每一个进程都能读取到变量的值呢? 在这呢,系统有一些默认的 ...
- 小鸟初学Shell编程(六)变量赋值
变量的意义 我们在使用Linux命令或脚本的时候,会有一些输出,那么这些输出的信息可以用变量临时存储,以备我们下一条命令或脚本使用. 变量的定义 变量的定义建议用一个有意义的英文单词来代表变量,不要使 ...
- 小鸟初学Shell编程(三)脚本不同执行方式的影响
执行命令的方式 执行Shell脚本的方式通常有以下四种 方式一:bash ./test.sh 方式二:./test.sh 方式三:source ./test.sh 方式四:. ./test.sh 执行 ...
- 小鸟初学Shell编程(二)编写简单的Shell脚本
Shell脚本 编写Python.PHP脚本通常需要掌握语言的函数,那么Shell脚本则不需要,只需要掌握Linux命令就可以编写Shell脚本,因为Shell脚本就是由多个Linux命令组成,通过将 ...
随机推荐
- 炫彩字and鼠标爱心
<!DOCTYPE html> <style type="text/css"> body{ background-color: black; } #zx { ...
- Mac遇到挖矿程序的应急方法
Mac遇到挖矿程序应急的方法 工作笔记: 1.起因:监控发现jsonrpc挖矿报警,询问当事人描述当时情况是安装了sketch软件. 网上可以定位到该IOC 运行后该IOC流量依然可以观测 ...
- 编译安装 proxychains-ng proxychains4
下载 [root@localhost html]# git clone https://github.com/rofl0r/proxychains-ng.git 编译安装 [root@localhos ...
- apicloud如何实现优雅的下拉刷新与加载更多
apicloud中提供下拉刷新监听事件api,也提供滚动到底部事件的监听,能够实现下拉刷新和滚动到底部加载更多功能,但是我们真的就满足实现功能了吗?将两个代码拼凑起来运行看看发现了什么?是的,在滚动到 ...
- [PHP] 基于redis的分布式锁防止高并发重复请求
需求:我们先举个某系统验证的列子:(A渠道系统,业务B系统,外部厂商C系统) (1)B业务系统调用A渠道系统,验证传入的手机.身份证.姓名三要素是否一致. (2)A渠道系统再调用外部厂商C系统. (3 ...
- 批量bat脚本复制文件或文件夹
主要用于在本地下,复制文件或文件夹到当前文件夹 @echo off echo 复制文件或文件夹到当前文件夹(复制文件选择[],复制文件夹选择[]) set /p num=输入选择的数字: : set ...
- luoguP3431 [POI2005]AUT-The Bus
安利系列博文 https://www.cnblogs.com/tyner/p/11565348.html https://www.cnblogs.com/tyner/p/11605073.html 做 ...
- pyplot中的一些函数
from matplotlib import pyplot as plt plt.ylabel(‘Grade’) : y轴的名称 plt.xlabel(‘Grade’) : x轴的名称 plt.tit ...
- Pwnable-blukat
ssh blukat@pwnable.kr -p2222 (pw: guest) 连接上去看看c的源码 #include <stdio.h> #include <string.h&g ...
- 【第4题】 什么是https
https是基于http和SSL/TLS实现的一个协议,他可以保证在网络上传输的数据都是加密的,从而保证数据安全. 接下来我们从http协议开始,提出想法并逐步进行分析,最终实现Https. 1. h ...