1.文件描述符是与一个打开的文件或数据流相关联的整数。文件描述符0,1,2是系统预留的。

  • 0 --------stdin(标准输入)
  • 1 --------stdout(标准输出)
  • 2---------stderr(标准错误)

2.输出重定向

常见的有> 、>>、2>&1、&>

>操作符用于截断(w)模式的文件写入(如果文件目标文件包含文件按,就先截断,即清空后再写入

>>操作符用于追加模式(a)的文件按写入(新的数据会被添加到 目标文件的末尾,原有的文件内容保留)

>和>>使用标注输出,所以>等同于1>, >>等同于1>>,如果需要使用特定的文件描述符,就需要将描述符至于操作符之前

1>&2 意思是把标准输出重定向到标准错误.
2>&1 意思是把标准错误输出重定向到标准输出。
&>filename 意思是把标准输出和标准错误输出都重定向到文件filename中

[hupeng@hupeng-vm shell]$touch .txt
[hupeng@hupeng-vm shell]$ls .txt #默认情况下,正常输出信息和错误信息直接在终端上显示
.txt
[hupeng@hupeng-vm shell]$ls .txt .txt
ls: cannot access .txt: No such file or directory
.txt
[hupeng@hupeng-vm shell]$ls .txt .txt > stdout.txt #将正确输出重定向到stdout.txt中,错误信息还是直接在终端输出
ls: cannot access .txt: No such file or directory
[hupeng@hupeng-vm shell]$cat stdout.txt
.txt
[hupeng@hupeng-vm shell]$ls .txt .txt > stdout.txt >stderr.txt #将错误信息输出到stderr.txt
[hupeng@hupeng-vm shell]$cat stdout.txt
.txt
[hupeng@hupeng-vm shell]$cat stderr.txt
ls: cannot access .txt: No such file or directory
[hupeng@hupeng-vm shell]$#使用2>&1标准输出和标注出错输出到同一个文件
[hupeng@hupeng-vm shell]$ls .txt .txt >out.txt >& #注意是&,不是1!!! &1表示文件描述符1,即标准输出 将标准输出重定向到了out.txt,而将标准出错重定向到了标准输出
[hupeng@hupeng-vm shell]$cat out.txt
ls: cannot access .txt: No such file or directory
.txt
[hupeng@hupeng-vm shell]$ls .txt .txt >out.txt > #这里的1是普通文件名
[hupeng@hupeng-vm shell]$cat out.txt
.txt
[hupeng@hupeng-vm shell]$cat #1是普通文件名
ls: cannot access .txt: No such file or directory
[hupeng@hupeng-vm shell]$rm out.txt
[hupeng@hupeng-vm shell]$ls .txt .txt &>out.txt #使用&> 将stout和stderrr都重定向到了指定文件
[hupeng@hupeng-vm shell]$cat out.txt
ls: cannot access .txt: No such file or directory
.txt
[hupeng@hupeng-vm shell]$#关于>和>>
[hupeng@hupeng-vm shell]$echo "test 1" > out.txt
[hupeng@hupeng-vm shell]$cat out.txt
test
[hupeng@hupeng-vm shell]$echo "test 2" > out.txt
[hupeng@hupeng-vm shell]$cat out.txt
test
[hupeng@hupeng-vm shell]$echo "test 3" >> out.txt
[hupeng@hupeng-vm shell]$cat out.txt
test
test
[hupeng@hupeng-vm shell]$echo "test 4" >> out.txt
[hupeng@hupeng-vm shell]$cat out.txt
test
test
test

shell文件描述符和重定向的更多相关文章

  1. 玩转Linux文件描述符和重定向

    本文介绍linux中文件描述符与重定向的相关知识,文件描述符是与文件输入.输出相关联的整数,它们用来跟踪已打开的文件.有需要的朋友参考下. 原文出处:http://www.jbxue.com/arti ...

  2. Linux文件描述符与重定向

    文件描述符可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作. 当Linux启动的时候会默认打开三个文件描述符,分别是: 标 ...

  3. Linux Shell 文件描述符 及 stdin stdout stderr 重定向

    Abstract: 1) Linux Shell 命令的标准输入.标准输出.标准错误,及其重定位: 2)Linux Shell 操作自定义文件描述符: 文件描述符是与文件相关联的一些整数,他们保持与已 ...

  4. linux专题一之文件描述符、重定向、管道符、tee命令

    本节讨论一下几个问题: 1. 文件描述符. 2. 重定向. 3. 管道符 4. tee的用法. 1. 文件描述符. 在linux系统中一切皆文件.文件夹和设备都是文件.如何用来区别不同的文件呢?这里的 ...

  5. shell 文件描述符

    /tmp/test.sh > /tmp/test.log 2>&1 这个命令的意思是 前半部分是将shell的输出重定向到/tmp/test/log.默认是标准输出(stdout文 ...

  6. Linux 文件描述符和重定向

    200 ? "200px" : this.width)!important;} --> 介绍 文件描述符是与文件输入.输出相关联的整数,在编写脚本时会经常使用标准的文件描述符 ...

  7. 【Linux】文件描述符与重定向

    重定向符号 符号 描述 > 输出重定向到一个文件或设备 覆盖原来的文件 >! 输出重定向到一个文件或设备 强制覆盖原来的文件 >> 输出重定向到一个文件或设备 追加原来的文件 ...

  8. Shell重定向文件描述符

    #!/bin/bash      最近在看shell,各种困惑,不过解决困惑的感觉还是很不错的.废话少说,linux中使用文件描述符来标识每个文件对象.文件描述符为一个非负整数,可以唯一标识会话中打开 ...

  9. 18 shell 重定向以及文件描述符

    1.对重定向的理解 2.硬件设备和文件描述符 文件描述符到底是什么 3.Linux Shell 输出重定向 4.Linux Shell 输入重定向 5.结合Linux文件描述符谈重定向 6.Shell ...

随机推荐

  1. JetBrains PyCharm 专业版激活

    激活码获取:http://idea.lanyus.com/ JetbrainsCrack-release-enc.jar下载:提取码为1391

  2. generator插件配置方式使用

    generator插件配置方式使用 <build> <plugins> <plugin> <groupId>org.mybatis.generator& ...

  3. python中进制之间的转换

    参考于:http://www.360doc.com/content/14/0428/11/16044571_372866302.shtml  在此非常感谢! ~~~~~~~~~~~~~~~~~~~~~ ...

  4. Codeforces Round #539&#542&#543&#545 (Div. 1) 简要题解

    Codeforces Round #539 (Div. 1) A. Sasha and a Bit of Relax description 给一个序列\(a_i\),求有多少长度为偶数的区间\([l ...

  5. 【mybatis源码学习】mybtias扩展点

    [1]org.apache.ibatis.reflection.ReflectorFactory 该扩展点,主要是对javaBean对象,进行反射操作. org.apache.ibatis.refle ...

  6. golang pprof 内存分析

    use pprof to get application  memory  useage add code in your main funciton import ( "log" ...

  7. smb文件共享实现

    samba文件共享 首先安装软件 yum install samba -y 编辑配置文件 /etc/samba/smb.conf ,在文章最后添加以下内容 [smbtest] content = do ...

  8. linux实用操作

    静态ip vi /etc/sysconfig/network-scripts/你的网卡名字(使用ifconfig查看,第一个就是)dhcp修改为static,onboot改为yes IPADDR=19 ...

  9. Windows 2008 R2环境下DHCP服务的安装部署使用

    (第一版本) 这个实验好像需要在部署了activity directory服务的基础上的,给个直达链接 http://blog.csdn.net/qq_34829953/article/details ...

  10. buckaroo 试用

    我系统是mac 所以选择的是mac 的版本,官方是支持跨平台的. 安装 mac 版本安装 wget https://github.com/LoopPerfect/buckaroo/releases/d ...