小鸟初学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命令组成,通过将 ...
随机推荐
- Java垃圾收集器——Parallel、G1收集器日志分析及性能调优示范
开发过程中,经常需要对GC的垃圾收集器参数不断的进行动态调整,从而更充分的压榨机器性能,提升应用效率.本文将从常见的Parallel/G1垃圾收集器的GC日志着手,分析GC日志的具体含义,以及示范如何 ...
- [20190530]ORACLE 18c - ALTER SEQUENCE RESTART.txt
[20190530]ORACLE 18c - ALTER SEQUENCE RESTART.txt --//以前遇到要重置或者调整seq比较麻烦,我有时候采用比较粗暴的方式就是删除重建.--//18c ...
- 如何优雅地停止Spark Streaming Job
由于streaming流程序一旦运行起来,基本上是无休止的状态,除非是特殊情况,否则是不会停的.因为每时每刻都有可能在处理数据,如果要停止也需要确认当前正在处理的数据执行完毕,并且不能再接受新的数据, ...
- emacs 矩形操作
emacs 矩形操作 如果使用图形化(GUI)的eamcs,使用M-x cua-mode,很好用,但是如果不是图形化的emacs(emacs -nw)的话,矩形操作就不能使用cua-mode. 非图形 ...
- [Go] 分页计算页码的主要逻辑
当使用imap进行读取邮件体的时候,有个函数可以根据传入的开始和结束索引来一次读取多条邮件内容主要逻辑类似这样,从1开始, 1,10 11,20 21,30 或者 1,31 32,63 ...
- [PHP] CentOS下搭建下PHP的运行环境
在公司里面有分配的测试机,所有的开发代码都运行在测试机里面.因为公司的测试机机房退租,所以要在新申请的几台测试机上搭建开发环境.开发环境尽量做到和线上的环境一致,包括代码的目录路径,运行程序的进程用户 ...
- Mysql 连接提示 Client does not support authentication protocol requested by server 客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端
由于查阅了很多百度文档发现很多方法比较复杂,所以写个备忘: 首先,进入MySQL 8.0Command Line Client -Unicode,输入密码,登录进去. 然后,在命令行输入:ALTER ...
- 01 python的安装
下载3.7.0版本 然后点击 close 关闭 1-==>搜索输入“cmd”输入 “python -V”并回车. 出现版本说明安装成功.2==>>>> 是提示符3=== ...
- 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结
<面向对象程序设计Java>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...
- apache配置文件详解(中英文对照版)
# This is the main Apache server configuration file. It contains the # configuration directives that ...
