一直没搞懂 &> 和 <& 是表示什么意思。 今天自己总结一下,希望自己能理解它的真正含义。

重定向标准输入输出,切记 “1” 和 “>”之间没有空格

$ echo "hello world" > file
$ cat < file
hello world
$ echo "hello world" > file
hello world
$ cat < file
$

&表示什么意思

重定向可以用i>&j命令,表示把文件标识符i重新定向到j,你可以把"&"理解为"取地址"

$ echo "hello world 1>&2" >& > file
$ cat < file
hello world >&
$

系统为每一个打开的文件指定一个文件标识符以便系统对文件进行跟踪,0对应stdin,1对应stdout, 2对应stderr。用复杂的例子说明一下更高级的用法:


$ echo 123456789 > file        把字符串写到文件filename中

$ cat file
123456789
$ exec 3<>file                 把文件file打开,并指定文件标识符为3

$ read -n 4 <&3                从文件中读4个字符,句柄已经指到第四个字符末尾

$ echo -n . >&3                在第5个字符处写一个点,覆盖第5个字符,-n表示不换行

$ exec 3>&-                    关闭文件标识符3

$ cat file
1234.6789
~$

现在cat filename文件的结果就成了 0123.56789

命令j<>filename表示把文件打开,并指明文件标识符为j 
"&-"表示关闭文件标识符

有关关闭文件标识符的操作请参考下面

n<&-        关闭输入文件标识符n
<&-或<&- 关闭标准输入stdin
n>&- 关闭输出文件标识符n
>&-或>&- 关闭标准输出stdout

Shell 重定向的更多相关文章

  1. shell重定向调试信息

    shell重定向调试信息 fulinux ******************************************************************************* ...

  2. shell重定向介绍及使用

    我们在写脚本或用脚本时,往往会发现 > /dev/null 2>&1 这类的命令.之前都是简单的了解一下,并没有深度消化,直到自己写脚本时,不认真写成了2>&1 &g ...

  3. Shell重定向:2>&1

    Shell重定向:2>&1 0 是一个文件描述符,表示标准输入(stdin) 1 是一个文件描述符,表示标准输出(stdout) 2 是一个文件描述符,表示标准错误(stderr) 重定 ...

  4. shell重定向输出的应用

                         shell重定向输出的应用 案例2:重定向输出的应用 2.1问题 本例要求编写一个脚本/root/out.sh,功能特性如下: 执行此脚本显示I love s ...

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

    1.对重定向的理解 Linux Shell 重定向分为两种,一种输入重定向,一种是输出重定向:从字面上理解,输入输出重定向就是「改变输入与输出的方向」的意思. 输入方向就是数据从哪里流向程序.标准输入 ...

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

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

  7. Linux Shell 重定向与管道【转帖】

    by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...

  8. 遇到shell重定向的一个奇怪问题:'消失'的标准输入!

    需求: 把找到的文件逐行输出,然后用rm在许可的情况下删除   前置准备:  $ls rm.sh test1 test2 test3 test4 test5 test6 $cat rm.sh #! / ...

  9. Shell重定向文件描述符

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

  10. Shell重定向&>file、2>&1、1>&2的区别

    shell上: 0表示标准输入 1表示标准输出 2表示标准错误输出 > 默认为标准输出重定向,与 1> 相同 2>&1 意思是把 标准错误输出 重定向到 标准输出. & ...

随机推荐

  1. delphi XE4 隐藏程序在任务管理器和隐藏任务栏

    最新处理方法,偶然发现delphi下有个ShowMainForm属性,只要在Application.Initialize;后面加上Application.ShowMainForm := false;就 ...

  2. .NET程序员转Java不完全指南

    首先要声明一点,“转”字并不包含那种语言牛B的意思. 然后要声明一点,“转”字仅限于企业应用开发的语言的转. 假设各种数据库切换无代沟, 假设各种WEB客户端技术无障碍. 1.搭建环境,IDE主流是e ...

  3. hdu 1502 Regular Words

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1502 思路:给定一个n,分别由n个a,b,c组成的字符串的所有前缀中a的个数大于等于b的个数大于等于c的个 ...

  4. 【Java EE 学习 47】【Hibernate学习第四天】【sesion】【一级缓存】【懒加载】

    一.Session概述 1.Session 接口是 Hibernate 向应用程序提供的操纵对数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载Java 对象的方法. 2.理解Sessi ...

  5. [LeetCode] Remove Linked List Elements

    Remove all elements from a linked list of integers that have value val. ExampleGiven: 1 --> 2 --& ...

  6. 理解callback function in javascript

    以下内容主要摘自[1,2] (1)In javascript, functions are first-class objects, which means functions can be used ...

  7. 一个列子演示vs2010 c++新特性

    近日托安装雪豹的"福",格了XP装了win7,前段时间看了C++0X标准以及VS2010诱人的新特性,不禁心痒痒在线安装了VS2010,然后手写了这个列子用来测试新增的特性. st ...

  8. Leetcode Valid Palindrome

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  9. ACM: SCU 4440 Rectangle - 暴力

     SCU 4440 Rectangle Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu  Practic ...

  10. JS运算符

    JS运算符: 使用的运算符的时候不需要声明变量,运算符非变量:1.算术运算符 + - * / % (%为取余数运算符) (自增运算符++) (自减运算符 --) + 运算符作用:1.数值相加 2.字符 ...