详解Linux重定向用法
作者:良许 发布时间:2022-04-01 13:20:01
相信大家平时都会有需要复制粘贴数据的时候,如果是打开文件进行复制粘贴,就不可避免的需要较多的鼠标与键盘的操作,就会比较繁琐。那么有没有可以省掉这些繁琐操作的复制粘贴的方法呢?
答案是肯定的,那就是重定向。重定向是一种高效的方法,无需大量的鼠标与键盘操作就可以完成数据的转移。重定向可以分为输入重定向以及输出重定向这两种类型。由于所有程序都有输入或者输出,因此输入和输出的重定向是任何编程语言或脚本语言都自带的功能。
每当你与计算机交互时,重定向就必然会发生。学会使用重定向,不仅可以让你与计算机更好地交互,还可以提高你的工作效率,因此,请让良许为你讲解 Linux 系统中重定向的常见用法:
Linux 中的数据流
谈到 Linux 的重定向,就不得不提以下这3种数据流:
输入信息会从 stdin 中读取(标准输入,通常是键盘或鼠标)。
输出信息会被输出到 stdout (标准输出,一个文本文件或者数据流)。
错误信息会被输出到 stderr。
了解了这些数据流的存在,在你使用 Shell 时,你就可以更好地控制数据的流向了。
在 Linux 系统中,标准输入,标准输出以及标准错误都作为文件存在。你可以在 /dev 目录下看到它们:
$ ls /dev/std*
/dev/stderr /dev/stdin /dev/stdout
重定向输出
在 Linux 系统中,使用 > 字符表示重定向输出。例如,将 ls 命令的输出重定向到一个文件中:
$ ls > list.txt
执行以上命令后,屏幕上并不会显示 ls 命令的输出信息,因为输出信息已经被重定向至 list.txt 文件中了。
除此之外,重定向还有许多用途,它还可以用于复制文件的内容,而且不限于复制文本文件,二进制文件也可以复制:
$ cat image.png > picture.png
如果你想要将一个文件的内容复制到另一个文件的末尾,你只需将 > 字符换成 >> 字符串即可,像这样:
$ cat lxlinux >> alvi
重定向输入
与重定向输出相反,重定向输入使用的是 < 字符。
输入重定向可以将输入信息重定向至命令中作为参数使用。该功能可能比较少用,但是,当命令需要一个参数列表时,而这些参数都存在一个文件中,然后你想快速地将它们从文件中复制粘贴到终端,这时这个功能就能派上用场了。
例如,package.list 里记录了你需要安装的包的列表,而你想要快速地安装所有的包,只需执行以下这一条命令,就能一次性安装 package.list 里的所有包:
$ sudo dnf install $(<package.list)
输入重定向的常见用法是 Here-document (简称 Here-doc) 以及 Here-string 。
Here-doc 将输入的文本块重定向至标准输入流,直至遇到特殊的文件结束标记符为止(文件结束标记符可以是任意的唯一的字符串,但大部分人都默认使用 EOF)。
你可以尝试在终端输入以下命令(直到第二个 EOF 字符串结束):
$ cat << EOF
> alvin
> lxlinux.net
> EOF
预期的输出应该是这样的:
alvin
lxlinux.net
Here-doc 是 Bash 脚本编写者们将多行文本转储到文件或屏幕上的常用技巧。
Here-string 与 Here-doc 相似,但是它只有一个字符串,或者几个被引号括起来的字符串:
$ cat <<< alvin
alvin
$ cat <<< "alvin lxlinux.net"
alvin lxlinux.net
重定向错误信息
错误信息默认会进入叫 stderr 的流,使用 2> 可以对其进行重定向。例如,将错误信息重定向到名为 output.log 的文件中:
$ ls /nope 2> output.log
重定向数据至 /dev/null
就像标准输入、标准输出以及标准错误一样,在 Linux 文件系统中,空,也存在一个文件与之对应,它叫做 null ,放在 /dev 目录下。为了方便读,人们经常省略斜杠,直接把他读作 dev null 。
/dev/null 并不保存数据,被写入 /dev/null 的数据最终都会丢失,就像被丢进虚空中一样。因此,你可以使用重定向将不需要的数据输送到 /dev/null 。例如,find 命令的输出往往很冗长,而且在搜索文件时还经常会报告权限冲突的错误,像这样:
$ find ~ -type f
/home/seth/actual.file
find: `/home/seth/foggy': Permission denied
find: `/home/seth/groggy': Permission denied
find: `/home/seth/soggy': Permission denied
/home/seth/zzz.file
这时,你就可以将错误信息重定向到 /dev/null ,以过滤掉不必要的信息,像这样:
$ find ~ -type f 2> /dev/null
/home/seth/actual.file
/home/seth/zzz.file
善用重定向
在 Bash 中,重定向是转移数据的一种高效方法。你可能并不会总是使用重定向,但是学会如何使用重定向,在你需要的时候可以让你省掉许多不必要的复制粘贴操作,因此也节省了许多操作鼠标与键盘的时间。请不要执着于复制粘贴了,使用重定向可以提高你的工作效率,难道,它不香吗?
来源:104.116.116.112.58.47.47.111.115.46.53.49.99.116.111.46.99.111.109.47.97.114.116.47.50.48.50.48.48.55.47.54.50.50.48.51.50.46.104.116.109.


猜你喜欢
- 1、博大精深的美食文化中国美食自古以来在就在全世界有着重要的地位,拥有6万多种传统菜点、2万多种工业食品、五光十色的筵宴和流光溢彩的风味流派
- 架设sendmail服务器 这次我们来学习Linux系统中的Sendmail服务器的配置。(邮件服务器的IP192.168.1.2 主机域名
- 你知道什么是“红客”、“威客”、“玉米虫
- 大家知道,Microsoft为了更好地预防恶意用户和攻击者的攻击,在默认情况下,没有将 IIS6.0 安装到 Windows Server
- 这是一个吸引人的话题,同时也是最难解决的问题,尤其是在目前这个比较浮躁的大环境下,大量的采集,不停的Site,不断的被K,又大量的采集...
- 网络“黑客”张子伟入侵计算机服务器,以删除数据为要挟,索要钱财5000元人民币。12月11日,上海市静安区法院对这起“‘黑客’敲诈案”作出一
- 在启动tomcat的时候提示8080端口被占用,后来经过查找发现如下结论:将oracle与tomcat、jboss等其它占用8080端口的服
- 北京时间10月12日消息,国外著名科技博客Mashable发文称,日前英国《每日电讯报》曾宣称Twitter正在考虑增加视频消息功能,但Tw
- 以下是我的iptables设置 *filter:INPUT DROP [0:0]:FORWARD ACCEPT [0:0]:OUT
- 一个网站的用户体验高低是由页面各元素的设计决定的,如表单、网页文字、功能等。网页文字是网页中所占分量最大的要素,所以其设计得好坏直接整个页面
- 在备受业界关注的《互联网视听节目服务规定》 * 以来,“信息网络传播视听节目许可证”(下称“视频牌照”)的颁发就受到了业内的广泛关注。近日,广
- 当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,
- 本文将为大家介绍SOFTETHER服务器Linux版的环境要求,安装方法,启动方法,以及运营/管理方法。1)工作环境要求Linux版Soft
- 现在有关Windos server 2008的NAP(Network Access Protection网络访问保护)的文章可以说是多如牛毛
- 2009年5月19日21时起,在中国北京、天津、上海、河北、山西、安徽、湖北、广东、广西等省陆续出现互联网网络故障,使用电信网络服务的网民上
- Discuz!7.0是康盛创想(Comsenz)公司于2008年12月份发布的一款论坛BBS建站产品。在Discuz!7.0版本中完善了论坛
- 相信读者都知道,Google对域名信任度要求越来越高,甚至高到了过分的地步。不过抱怨是没有用的,必须面对现实。从总体上来说,提高域名信任度的
- 系统服务篇三47. 服务名称: SysmonLog显示名称: Performance Logs and Alerts服务描述: 收
- 做为站长学习如何防止SQL注入是非常必须的,因为一旦网站被注入小到挂马,大到破坏系统程序,可以说对网站的破坏是非常大的,对于asp编写的程序
- 网上流传的很多关于windows server 2003系统的安全配置,但是仔细分析下发现很多都不全面,并且很多仍然配置的不够合理,并且有很