本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程
Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为大家介绍下Shell输入输出重定向的相关知识。
一、Shell输入输出重定向概述
在了解重定向相关知识之前,我们先来看看Linux的文件描述符。
Linux的文件描述符可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。
用户可以自定义文件描述符范围是:3-max,max跟用户的ulimit –n 定义数字有关系,不能超过最大值。
linux启动后,会默认打开3个文件描述符,分别是:
1)标准输入standard input——0
2)正确输出standard output——1
3)错误输出:error output——2
对于所有运行的Shell命令,都会有默认3个文件描述符。
在一个Shell命令执行时,会先有一个输入:可以从键盘输入,也可以从文件得到
在命令执行完成后:成功了,会把成功结果输出到屏幕,正确输出默认是屏幕。
命令执行有错误:会把错误也输出到屏幕上面,错误输出默认也是指的屏幕。
我们今天介绍的Shell输入输出重定向就是将上面讲的默认的输入输出等重定向到别的位置。
二、Shell输出重定向
Shell输出重定向主要用向右的尖括号来作为符号>,主要有“>”和“>>”两种方式。
格式如下:
command-line1 [1-n] > file或文件操作符或设备 command-line1 [1-n] >> file或文件操作符或设备
当使用“>”时,系统会判断右边文件是否存在,如果存在就先删除,并且创建新文件。不存在则直接创建。因此无论左边命令执行是否成功,右边文件都会变为空。
当使用“>>”操作符时,系统会判断右边文件是否存在,如果不存在,先创建。然后以添加方式打开文件,系统会分配一个文件描述符与左边的标准输出【1】或错误输出【2】绑定。
当命令执行完以后,这条命令绑定文件的描述符也自动失效。0,1,2又会空闲。
当一条命令执行时,命令的输入,正确输出,错误输出,默认会分别绑定0,1,2文件描述符。
一条命令在执行前,先会检查输出是否正确,如果输出设备错误,将不会进行命令执行。
输出重定向的详细说明请看下方表格:
命令格式 | 命令说明 |
Command > filename | 把标准输出重定向到一个文件中 |
Command > filename 2>&1 | 把标准输出和错误一起重定向到一个文件中 |
Command 2 > filename | 把标准错误重定向到一个文件中 |
Command 2 >> filename | 把标准输出重定向到一个文件中(追加) |
Command >> filename2>&1 | 把标准输出和错误一起重定向到一个文件(追加) |
三、Shell输出重定向示例
我们还是通过例子来看下Shell下的输出重定向。
示例:
#date > date.txt #cat date.txt Thu Jun 2 15:25:20 CST 2016
这条命令将date这个命令的标准输出结果重定向到date.txt中,并且会将date.txt清空。
示例2:
#whoami > date.txt #cat date.txt root
这个将whoami的命令重定向到date.txt中,可以看到,之前date.txt中的内容已被删除。
示例3:
#echo "Linuxdaxue.com" >> date.txt #cat date.txt root Linuxdaxue.com
这个命令以追加的方式输出了一个字符串输出重定向到了date.txt,可以看到输出的东西被追加到了文件结尾。
四、Shell输入重定向介绍
Shell输入重定向主要用向左的尖括号(小于号)“<”表示,命令格式如下:
command-line [n] < file 或文件描述符&设备
命令默认从键盘获得的输入,重定向后改为从文件,或者其它打开文件以及设备输入。
这样,本来需要从键盘获取输入的命令会转移到文件读取内容。
接下来通过例子来学习下Shell输入重定向。
五、Shell输入重定向示例
示例1:
#cat num.txt 1 2 4 3 5 7 6 8 9 #sort < num.txt 1 2 3 4 5 6 7 8 9
说明:num.txt里有一些数字,然后将num.txt重定向到sort命令的输入端,sort就会对这些数字进行排序,然后输出。
六、Shell其他重定向
上文中已经说到,Linux文件描述符中,2代表标准错误。现在讲下如何将标准错误进行重定向。
使用方法:
command > out.put 2>&1 #将command执行的标准输出和标准错误重定向到out.put(也就是说不管command执行正确还是错误,输出都打印到out.put)。
还可以将错误输出重定向到/dev/null,意思是丢弃这部分输出,如下:
command 2> /dev/null #如果command执行出错,将错误的信息重定向到空设备(忽略掉错误输出)
以上就是Shell输入输出重定向的相关介绍,大家需要多多练习,争取熟练掌握。
更多Linux Shell教程请看:Linux Shell系列教程
原文:Linux Shell系列教程之(十六) Shell输入输出重定向
上一篇:Linux Shell脚本入门教程系列之(十五) Shell函数简介
下一篇:Linux Shell脚本入门教程系列之(十七) Shell文件包含
本文转自:Linux Shell脚本入门教程系列之(十六) Shell输入输出重定向
相关推荐
Linux Shell脚本是Linux系统中用于自动化任务的强大工具,它基于Bash或其他Shell解释器,允许用户编写一系列命令,以实现批处理、任务调度或任何需要自动化的工作流程。本PDF文档"shell-script-entry.pdf"提供了18页...
在Shell脚本中,输入输出重定向和管道是两个重要的特性。输入重定向允许将数据从文件导向命令,而不是从键盘;输出重定向则可以将命令的输出保存到文件,而不是打印到屏幕。管道则可以连接多个命令,让前一个命令的...
在Shell脚本中可以执行各种系统命令,并可以使用特殊字符和符号来扩展命令的功能,例如使用管道符`|`进行命令链式处理,使用重定向符`>`、`来控制命令的输入输出。 3. 流程控制是脚本决策和循环处理的关键。if语句...
在IT领域,Linux Shell脚本是系统管理员和开发者日常工作中不可或缺的工具,它允许用户通过命令行接口自动化执行一系列任务。《Linux shell 脚本攻略-第二版》是一本深受赞誉的书籍,旨在帮助读者深入理解并掌握...
Linux Shell脚本是Linux操作系统中一种强大的自动化工具,它允许用户通过编写脚本来执行一系列命令,实现系统管理和任务自动化。本书《Linux Shell脚本攻略》(第2版)深入浅出地介绍了Shell脚本的编写技巧和实战...
通过这些教程,学习者可以全面了解Shell脚本编程的基础知识,掌握编写高效、可靠的Shell脚本的技巧,从而更好地管理和自动化Linux系统。每个HTML文件都包含了丰富的实例和实践指导,是提升Shell脚本技能的理想资源。
内容概要:本文详细介绍了Linux shell脚本编程中的几个核心知识点,包括输入输出重定向、Shell变量操作、基本的Shell编程技巧以及简单的算术运算方法。每个知识点都有详细的命令演示和具体的应用实例,帮助读者更好...
《Linux命令行与Shell脚本编程大全》是一本专为Linux初学者编写的经典教材,旨在帮助读者深入理解和掌握Linux操作系统中的基本命令行操作以及Shell脚本编程技术。这本书全面覆盖了从基础到进阶的各种主题,对于想要...
这本书将引导读者了解如何定义变量、控制流程(如条件语句和循环)、读取和处理输入输出、以及编写函数等基本概念。 书中会详细介绍以下关键知识点: 1. **Shell变量**:包括环境变量、位置参数、特殊变量和用户...
Linux Shell脚本是一种在Linux操作系统环境下执行的命令行脚本,它允许用户通过编写一系列的命令来自动化系统任务。Shell脚本是Linux环境中的强大工具,尤其对于系统管理员和开发者而言,能有效提高工作效率。本资源...
Linux Shell脚本是一种强大的自动化工具,它允许用户通过命令行接口执行一系列操作,极大地提高了工作效率。在Linux系统中,Shell脚本是用Bash(Bourne-Again SHell)或其他兼容的Shell编写的,例如KornShell (ksh) ...
Shell脚本是Linux/Unix操作系统中的一个强大工具,它允许用户编写自动化任务的程序,极大地提高了工作效率。在本文中,我们将深入探讨Shell脚本的基础知识,帮助初学者快速入门。 一、Shell概述 Shell是操作系统...
"Linux Shell 脚本攻略"的第三版是一部全面且深入的教程,旨在教你如何编写高效、可维护的Shell脚本。此书可能涵盖了以下关键知识点: 1. **基础语法**:包括变量定义、条件语句(if-else)、循环结构(for, while...
本教程将带你快速入门Shell脚本的世界,让你在短时间内掌握其基本概念和常用命令,从而提升你的系统管理效率。 一、Shell的定义与种类 Shell是一个命令解释器,它将用户输入的命令翻译成操作系统可以理解的指令执行...
除此之外,Shell脚本还支持文件描述符、管道、重定向等高级特性,使得我们能更灵活地处理输入输出和数据流。例如,`>`用于重定向输出到文件,`|`用于连接命令,传递输出作为下一个命令的输入。 在学习完这些基础...
Shell脚本允许用户通过编写简单的命令序列来执行一系列复杂的操作,极大地提高了工作效率。本攻略将深入探讨Linux Shell脚本的核心概念、语法结构以及实战应用。 1. **Shell基础** - **什么是Shell?** Shell是...
### Shell脚本语言入门:详解与实践 #### 引言 在IT领域,Shell脚本是一种强大而灵活的工具,广泛应用于系统管理、自动化任务、数据处理等方面。它基于Unix/Linux环境,允许用户通过一系列命令行指令来实现复杂的...
"Linux Shell脚本攻略中文版"可能是对Shell编程的详细介绍,包括基本语法、变量、条件语句、循环结构、函数、输入/输出重定向、错误处理等核心概念。它可能还会涵盖高级主题,如进程控制、信号处理、正则表达式、Awk...
Shell脚本是Linux或类Unix操作系统中的一种程序设计语言,它允许用户通过命令行接口执行一系列命令。在"Linux下清理数据库shell脚本"这个主题中,我们关注的是如何编写一个bash shell脚本来自动化数据库的清理和备份...