首页 > 系统相关 >Linux Shell脚本入门教程系列之(十六) Shell输入输出重定向

Linux Shell脚本入门教程系列之(十六) Shell输入输出重定向

时间:2023-03-29 15:01:50浏览次数:47  
标签:输出 Shell 重定向 文件 入门教程 Linux date txt


本文是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输入输出重定向的相关介绍,大家需要多多练习,争取熟练掌握。


 

标签:输出,Shell,重定向,文件,入门教程,Linux,date,txt
From: https://blog.51cto.com/u_8895844/6157035

相关文章

  • Linux Shell脚本入门教程系列之(二)第一个shell脚本
    本文是LinuxShell脚本系列教程的第(二)篇,更多shell教程请看:LinuxShell脚本系列教程通过上一篇教程的学习,相信大家已经能够对shell建立起一个大体的印象了,接下来,我们通过一个......
  • 0基础shell脚本ping主机网络连通性实战讲解
    本节通过一个简单脚本,使朋友们了解脚本的基本用法,及编写方法。1、先简化版,实现本机ping主机是否连通,将结果存在一个文件#!/bin/bashifping-c3${i}>/dev/null2>&1th......
  • linux和windows下换行符引起的报错——dos2unix转换
    有时候由于有的代码太长,显示的时候看着很不舒服,所以在编写的时候会加上\再换行,这个是转义字符(转义字符还是编译字符??我对这个不是很了解。。。),到时候会把换行符给变成空格(我......
  • 字符串函数_Linux_python_R_SQL
    字符串处理grep查找命令筛选信息awkcut按照指定要求分割-awk截取列信息cut截取字符串信息awkFS对第一行没作用要用大写的BEGIN方法01.利用exp......
  • 第6章 Linux的档案权限与目录管理
    一、使用者与群组1、档案拥有者由于Linux是个多人多任务的系统,常常可能有多人同时使用这部主机来进行工作,为了考虑每个人的隐私以及每个人喜好的工作环境而建立档案......
  • Linux前置
    一、虚拟机下载VMware软件二、选择Linux内核当前热门的Linux内核有CentOS,Ubuntu三、快速实现文件上传FinalShell四、LinuxLinux是一种操作系统,电脑是由操作系统和硬......
  • linux在多个文件中查找指定字符串
    Linux使用grep命令检索多个文件点击查看代码grep<searchingstring><patternsearchingfile>如果我要检索当前所有md文件中的Hello关键字,可以这么用点击查看代......
  • linux中关于内存、缓冲区、缓存
     ......
  • 初次使用Linux注意事项
    1.启动网络服务systemctlstartnetworksystemctlenablenetwork2.无法使用yum错误如下解决办法cd/etc/sysconfig/network-scriptsviifcfg-ens33将ENBOOT改......
  • Linux软件安装——lrzsz
    从windows系统上传文件1、搜索lrzsz安装包,命令为:yumlistlrzsz2、使用yum命令在线安装,yuminstalllrzsz.x86_64注:Yum(YellowdogUpdater,Modified)是一个在Fedora和Red......