当前位置:  操作系统/服务器>linux

shell常用重定向实例讲解

    来源: 互联网  发布时间:2014-10-17

    本文导语:  每个打开的文件都会被分配一个文件描述符.stdin (键盘), stdout (屏幕), 和 stderr (错误消息输出到屏幕上)的文件描述符分别是0, 1, 和 2. 对于正在打开的额外文件, 保留了描述符3到9. 文件描述符是文件系统为了跟踪这个打开的文件...

每个打开的文件都会被分配一个文件描述符.stdin (键盘), stdout (屏幕), 和 stderr (错误消息输出到屏幕上)的文件描述符分别是0, 1, 和 2. 对于正在打开的额外文件, 保留了描述符3到9.

文件描述符是文件系统为了跟踪这个打开的文件而分配给它的一个数字。

下面以实例说明

1,>的用法

代码如下:

[zhangy@localhost ~]$ echo "11111" > 1.txt
[zhangy@localhost ~]$ cat 1.txt
11111
[zhangy@localhost ~]$ echo "11111" 1> 1.txt    //这个用法和上面的用法是一样
[zhangy@localhost ~]$ cat 1.txt
11111
[zhangy@localhost ~]$ echo "22222" >1.txt
[zhangy@localhost ~]$ cat 1.txt
22222

这种用法我想大家都非常的熟悉,因为这是我经常会用到的。echo "11111" > 1.txt 时,>前面是有一个1的,是默认的。>重定向到文件时,会将文件清空,在写入。

代码如下:

[zhangy@localhost ~]$ > 1.txt 
[zhangy@localhost ~]$ :> 1.txt 

上面的这个例子,可以把1.txt文件中的内容清空,其实也很好理解,清空后,不输入内容当然为空了。

2,>>的用法

代码如下:

[zhangy@localhost ~]$ echo "2222" >> 2.txt
[zhangy@localhost ~]$ cat 2.txt
2222
[zhangy@localhost ~]$ echo "2222" >> 2.txt
[zhangy@localhost ~]$ cat 2.txt
2222
2222

从上面的这个例子我们可以看出,>>重定向到文件时,会将输出写到文件的结尾。这一点和>完全不同的。

3,0,1,2 到9,以及&

代码如下:

[zhangy@localhost ~]$ cat 1.txt
 333
 111
 222
 444
 [zhangy@localhost ~]$ grep "22" 0< 1.txt  //把1.txt中的内容读取出来
 222
 [zhangy@localhost ~]$ ls tank 2>> 1.txt   //将错误信息放到文件的结尾
 [zhangy@localhost ~]$ cat 1.txt
 333
 111
 222
 444
 ls: tank: 没有那个文件或目录                 //这个就是 2>> 1.txt产生的内容
 [zhangy@localhost ~]$ (ls tank ;pwd) &>1.txt   //将错误信息,以及输出内容放到1.txt文件中,&(stderr,stdout)
 [zhangy@localhost ~]$ cat 1.txt
 ls: tank: 没有那个文件或目录
 /home/zhangy

i>&j重定向文件描述符i 到 j.指向i文件的所有输出都发送到j中去. i和j呢是0-9这间的数字

代码如下:

[zhangy@localhost ~]$ ls tank 2>&1|egrep * 1> 2.txt  //在这里我把错误信息重定向到了1,在这里1就会输出错误,根赋值差不多
[zhangy@localhost ~]$ cat 2.txt
ls: tank: 没有那个文件或目录

4,的用法
<这个符号是读取,>这个符号是输出,放在一起就打开并且读取,

代码如下:

[zhangy@localhost ~]$ echo 123546 > 2.txt
[zhangy@localhost ~]$ exec 4 2.txt     //打开2.txt并将内容读取到&4中
[zhangy@localhost ~]$ read -n 4 &4      //在向&4写入一个点
[zhangy@localhost ~]$ exec 4>&-          //关闭输出文件描述符4
[zhangy@localhost ~]$ cat 2.txt
1235.6

能过上面的这个例子,就可以很清楚了解他的作用

5,n&关闭输出文件描述符n

代码如下:

[zhangy@localhost ~]$ ls tank          //会提示错误
ls: tank: 没有那个文件或目录
[zhangy@localhost ~]$ ls tank 2>&-     //我把错误关闭后,什么也不输出了

6,|管理命令

这个命令也是我们常用的,是典型的,把一个命令的输出,当作另一个命令的输入

代码如下:

[zhangy@localhost ~]$ echo tank | wc -w
 1

表示tank是一个输出,但它又是wc的输入,不然就不会有统计出现了。


    
 
 

您可能感兴趣的文章:

  • Shell中的循环语句for、while、until实例讲解
  • linux shell流程控制语句实例讲解(if、for、while、case语句实例)
  • 用shell脚本防ssh和vsftpd暴力破解的详解讲解
  • linux bash shell命令:文本搜索工具Grep命令选项及实例
  • C++实现简单的希尔排序Shell Sort实例
  • linux bash shell中case语句的实例
  • 如何使用shell脚本替换不确定文本信息?实例!
  • Linux命令编辑器Shell编程实例大全 下载
  • shell监控脚本实例—监控mysql主从复制
  • 通过实例深入理解linux shell数组
  • shell中的循环语句、判断语句实例
  • 总结的7个shell字符串操作方法和实例分享
  • shell数组常用实例分享
  • Shell中处理包含空格的文件名实例
  • Shell脚本test命令使用总结和实例
  • Shell多线程操作及线程数控制实例
  • Shell脚本处理浮点数的运算和比较实例
  • shell编程实例研讨:有兴趣者请进!
  • shell使用mysqld_multi自动做多实例从库脚本
  • Shell脚本编程中常用的数学运算实例
  • 备份shell脚本实例代码
  • shell脚本连接、读写、操作mysql数据库实例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux shell命令的常用快捷键
  • 25个好用的Shell脚本常用命令分享
  • 自己常用的一些shell脚本分享
  • hbase shell基础和常用命令详解
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 不同类型的shell*(K SHELL , C SHELL) 用命令怎么切换?
  • linux bash shell命令:grep文本搜索工具简介
  • 我在执行shell时,想在shell里直接向mysql数据库插入数据,我该如何写shell。
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 菜鸟问问题:shell是什么呢?普通的ls、cp、pwd这些命令算不算shell呢?如何把自己写的文件变成shell呢?
  • linux bash shell命令:文本搜索工具grep中用于egrep和 grep -E的元字符扩展集
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • linux bash shell命令:文本搜索工具grep正则表达式元字符集(基本集)
  • shell变量和子shell的问题请教
  • 请问“当前shell”和“子shell”的区别?
  • 怎么知道当前是B_SHELL 还是C_SHELL
  • 用户登陆后运行某SHELL退出SHELL就回到LOGIN是怎么作到的?
  • 怎么写shell代码 写好shell怎么运行?
  • Linux命令编辑器Shell编程实例大全 下载 iis7站长之家
  • 非登录shell是什么 意思,和登录shell有什么区别啊
  • Solaris 8中修改root的shell为一个非法的Shell后怎么办?
  • 各位Shell高人,如何取得Shell的第10个入口参数?$10不行啊,急!
  • shell 编程 执行shell新建多个终端 并执行程序
  • 如何在一台机器上的shell中执行另外一台机器上的shell
  • 在shell中的交互问题,现在需要在shell结束时按某键或任意键


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3