shell常用重定向实例讲解

 更新时间:2014年07月29日 08:47:43   投稿:junjie  
这篇文章主要介绍了shell常用重定向实例讲解,I/O(输入/输出)常用的重定向命令详细介绍,需要的朋友可以参考下

每个打开的文件都会被分配一个文件描述符.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中读取4个字符
[zhangy@localhost ~]$ echo -n . >&4      //在向&4写入一个点
[zhangy@localhost ~]$ exec 4>&-          //关闭输出文件描述符4
[zhangy@localhost ~]$ cat 2.txt
1235.6

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

5,n<&-关闭输入文件描述符n         n>&关闭输出文件描述符n

复制代码 代码如下:

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

6,|管理命令

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

复制代码 代码如下:

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

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

相关文章

  • linux打包某个可执行文件及其依赖文件

    linux打包某个可执行文件及其依赖文件

    这篇文章主要为大家详细介绍了如何通过linux打包某个可执行文件及其依赖文件,文中的示例代码讲解详细,感兴趣的小伙伴可以跟了解一下
    2024-12-12
  • Linux sort命令具体使用详解

    Linux sort命令具体使用详解

    sort命令是Linux系统中用于文本排序的工具,具备多种排序选项,如按数值、字典序、月份等排序,支持升序或降序,语法选项包括-n、-r、-k、-t、-u、-o、-f、-b、-M、-c、-V等,sort命令适合处理日志、数据表等文本文件,可以通过组合不同选项来完成复杂的排序任务
    2024-09-09
  • 一个下载网页图片的shell脚本

    一个下载网页图片的shell脚本

    这篇文章主要介绍了一个下载网页图片的shell脚本,需要的朋友可以参考下
    2014-03-03
  • bash shell的条件语句详解

    bash shell的条件语句详解

    文章主要介绍了bash shell中的条件语句,包括if-then-fi、else、elif等结构的使用规则,以及条件判断符号(如-eq、-lt等)的正确使用方法,感兴趣的朋友一起看看吧
    2024-12-12
  • shell判断变量是否含某个字符串的6种方法

    shell判断变量是否含某个字符串的6种方法

    本文主要介绍了shell判断变量是否含某个字符串的6种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • shell 备份数据库、代码上线的脚本

    shell 备份数据库、代码上线的脚本

    Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。这篇文章主要介绍了shell脚本之备份数据库、代码上线,需要的朋友可以参考下
    2020-02-02
  • shell 编写一个带有进度条的程序安装脚本

    shell 编写一个带有进度条的程序安装脚本

    这篇文章主要介绍了shell 编写一个带有进度条的程序安装脚本,通过使用Shell脚本,我们可以轻松地实现命令行中的进度条功能,从而提高工作效率,感兴趣的可以了解一下
    2023-08-08
  • Shell中的数学运算使用

    Shell中的数学运算使用

    这篇文章主要介绍了Shell中的数学运算使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • shell脚本无密码登录 expect的使用方法详解

    shell脚本无密码登录 expect的使用方法详解

    这篇文章主要介绍了shell脚本无密码登录 expect的使用方法详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • 一篇通俗的Linux Shell体验教程

    一篇通俗的Linux Shell体验教程

    Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。本文将简单介绍Linux shell体验,感兴趣的小伙伴可以参考一下
    2023-05-05

最新评论