重定向详解

1. 输入输出重定向

其中计算机的结构中一个重要的环节就是I/O设备,而I/O设备就是输入输出设备,通俗的说键盘,显示器,终端等。而I/O设备中有三种不同的运行状态,就是标准输入,标准输出以及错误输出。 "<"为输入重定向,是把后面的内容输出给前面的命令执行,比如:ls < /etc 把/etc下的内容输出给ls命令执行;">" 为输出重定向,把前面的内容输出作为后面选项的输入:cat file > mail -s "e-mail" username   。其中标准输入的为STDIN -0为默认接受键盘的输入, 标准输出的为STDOUT -1 为默认输出到终端,标准错误为STDERR -2 ,默认把错误信息输出到终端。其中 -0  -1 -2 可以在输入和输出符号前面进行, “比如 XXX(错误信息) > filename 这样会直接把错误信息直接在终端上输出出来,但是 2> 这样,在输出重定向符号的前面加上标准错误的符号就可以把错误的信息提示重定向到指定的文件夹里。”还有一种就是把正确的信息和错误的信息一起输出到指定的文件夹里:“比如使用ls /boot /ddd(不存在的目录) > /testdir/a.可以使用 &>成功的把两个信息重定向到一个文件或目录里,也可以使用1>2&这样的格式,但是这个需要注意的是这个格式是相对来说比较老的,其必须在命令的最后,并且1 2 和前面的文件正确还是错误文件的位置必须一一对应”。 (2),在使用输入和输出重定向的时候如果输入的信息时,如果重定向的文件是存在的并且里面是有内容的,这样的话将会导致文件内容会被后来的重定向输出覆盖,为了防止输入的内容被覆盖,可以使用 set -C ,这样的话可以防止文件的内容被覆盖,set +C是允许文件被覆盖,这个命令最大的作用就是以后在编写脚本的时候防止被覆盖,这个命令是一次性的,并且是只对当前用户有效。

">>" 这个符号位追加重定向,使用输出重定向时会覆盖file的内容,但是使用追加重定向仅仅是向文件里注入信息,并不会覆盖或清空文件里面原本的信息内容。对于多条命令重定向是把多条命令使用括号括起来,中间用分号隔开:(pwd;ls)>/testdir/test.log 类似于这样可以在/testdir/test.log文本中查看当前目录的路径还有目录信息。

下面是一些额外的小知识:

2.硬链接的本质就是对同一个文件进行赋予多个文件名字,其链接数就等于文件名字的数量,每个目录引用相同的inode号,硬链接不能跨越分区或者驱动;软链接 ln -s 原始文件的绝对路径或相对路径(是相当于软链接文件的文件相对路径),也就相当与快捷方式,可以跨分区。硬链接是一个文件,软链接是两个文件。

rm删的是名字,不是文件的内容

Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。

时间: 2024-12-13 23:24:09

重定向详解的相关文章

Linux I/O 重定向详解及应用实例

简解 > 输出 < 输入 >> 追加 & [> | < | >>]之前:输入输出; ls /dev &>filename #"&"在这里代表标准输出和标准错误,这里无论是正常输出还是错误信息都写到filename中了. [> | < | >>]之后:重定义文件标志符 echo 123 1>&tmp #相当于 echo 123 : echo 123 > tmp. &q

10_Shell语言———I/O重定向详解

一.什么是I/O I/O设备是计算机核心部件和外围设备进行交互的通道,因此I/O是一个统称.但这里所说的I/O与计算机的硬件设备没有太大关系,它是用来实现应用程序的I/O重定向.通常应用程序需要从外部用户获取数据,也需要将运行结果反馈给外部用户,因此程序本身要有输入输出功能,也就是和用户进行交互的功能,那么在Linux中,用户需要在命令行里为程序指定输入输出设备以便程序获取和反馈数据. Linux的基本哲学思想是:1)一切皆文件:2)尽可能避免捕获用户接口:3)由众多目的单一应用程序组成:一个程

新浪sae url rewrite(伪静态、重定向)详解

新浪sae url rewrite(伪静态.重定向)详解 http://www.veryhuo.com phpclubs 2011-11-14 投递稿件 sae全程Sina App Engine,真是一个好东西,他有很多优秀的特性,简单来说SAE就是一个简单高效的分布式Web服务开发.运行平台. 支持现在常用的 php+mysql环境,在开发中难免会碰到项目需要做url rewrite(伪静态),然而sae不支持 apache 下的.htaccess .不过不要难过,sae提供了自己的rewri

请求转发与重定向详解(模拟系统维护中提示的实现)

简介 转发和包含 Servlet对象由Servlet容器创建,并且Servlet对象的service()方法也由容器调用.一个Servlet对象可否直接调用另一个Servlet对象的service()方法呢?答案是否定的,因为一个Servlet对象无法获得另一个Servlet对象的引用. 在旧版的Servlet API中,ServletContext接口中的getServlet(Stringname)方法能根据参数给定的名字返回相应的Servlet对象的引用.从Servlet API2.1开始,

docker的端口重定向详解

docker的端口重定向,一般程序同服务进行连接的时候都是通过端口进行的,当一个服务运行在容器内部,你可以通过绑定在该容器上的IP地址和端口连接该服务.但是容器的这个IP地址是一个本地的IP地址,并且容器内部运行的服务的端口在外面是不可达的.docker容器关于IP地址的这个问题刚好提供一个简单的方法来访问容器内部的服务. 允许非本地的客户端来访问容器内部的服务,docker提供了绑定容器的服务端口到本地系统IP的方法,这样就可以简单的在多个容器间进行通讯,docker提供了连接机制. 1   

shell脚本中常见的标准输入、标准输出、标准错误重定向详解

  1.可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用. 用处: 禁止标准输出.    1 cat $filename >/dev/null   # 文件内容丢失,而不会输出到标准输出. 禁止标准错误.    2>/dev/null 这样错误信息[标准错误]就被丢到太平洋去了. 2.1>/dev/null 2>&

103:重定向详解

重定向 重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面.比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面. 永久性重定向:http的状态码是301,多用于旧网址被废弃了要转到一个新的网址确保用户的访问,最经典的就是京东网站,你输入www.jingdong.com的时候,会被重定向到www.jd.com,因为jingdong.com这个网址已经被废弃了,被改成jd.com,所以这种情况下应该用永久重定

重定向,管道以及tr命令详解

一.三种I/O设备 标准输入(STDIN)接受键盘的输入 用<来重定向单行标准输入 用<< "终止词"来重定向多行标准输入,自定义结束符号 2.标准输出(STDOUT)默认输出到终端 1> file 重定向到file中 1>>file 追加到file中 3.标准错误输出(STDERR)默认输出到终端 2>file重定向到file中 2>>file追加到file中 4.错误输出和正确输出输出到同一个文件 &> 重定向 &

LAMP架构(nginx安装,默认虚拟主机,用户认证,域名重定向,nginx配置文件详解)

一.安装nginx [[email protected] conf]# wget http://nginx.org/download/nginx-1.8.0.tar.gz [[email protected] conf]# tar zxvf nginx-1.8.0.tar.gz [[email protected] conf]# cd nginx-1.8.0 [[email protected] conf]# ./configure --prefix=/usr/local/nginx [[ema