关于bash中的数据流重导向

由来:  当我们执行一个指令时,可能会访问档案和执行一些讯息后将一些信息显示到屏幕上,而重定向就是将如此的的讯息导向到其他文件中,事实上,默认的其实就是数据导向到屏幕文件,只是将其重定向到你指定的文件中

输入输出方式: 

  标准输入 (stdin):代码为0,使用<(覆盖标准输入)或<<(累加标准输入)

  标准输出  (stdout):代码为1,使用>(覆盖式标准输出)或>>(累加式标准输出)

  标准错误输出  (stderr):代码为2,使用2>(覆盖式标准错误输出)或2>>(累加式标准错误输出)

  如以下例子:

16:55:28-root-~# cat 1.c > ./rrr
16:55:59-root-~# cat rrr
#include<stdoio.h>

int main()
{
        printf("hello‘world!");

        return 0;
}

16:56:05-root-~# cat 1.c >> ./rrr
16:56:28-root-~# cat rrr
#include<stdoio.h>

int main()
{
        printf("hello‘world!");

        return 0;
}

#include<stdoio.h>

int main()
{
        printf("hello‘world!");

        return 0;
}

比较常用的情况是,我们不想讯息显示,可以重定向到/dev/null,将数据丢到数据黑洞。而另一种情况就是,我们想将标准输出和标准错误输出都定向到一个文件时,你可能会使用 >file 2>file,然而如此的结果就是会导致两股数据交叉写入到文件中,此时我们应该用>file 2>&file&>file

输入重导向:

17:34:47-root-~# cat > catfile < ./1.c
17:35:44-root-~# cat catfile
#include<stdoio.h>

int main()
{
        printf("hello‘world!");

        return 0;
}

17:35:48-root-~#

用1.c文件取代手动输入到catfile

17:38:44-root-~# cat > catfile << "eof"
> testing
> stop!!!
> eof

若是用<<时会用右侧的字符控制结束的输入,而用<时要用ctrl+d来结束输入!

时间: 12-08

关于bash中的数据流重导向的相关文章

第十一章、认识与学习 BASH 数据流重导向

数据流重导向就是将某个命令运行后应该要出现在屏幕上的数据, 给它导向到其他的地方,例如文件或者是装置 (例如打印机之类的)! 什么是数据流重导向 命令运行过程如下: 图 5.1.1.命令运行过程的数据传输情况 运行一个命令的时候,这个命令可能会由文件读入数据,经过处理之后,再将数据输出到屏幕上. 在上图当中, standard output 与 standard error output 分别代表『标准输出』与『标准错误输出』, 它们默认都是输出到屏幕! standard output 与 st

【Linux】数据流重导向(前篇)

数据流重导向 (redirect) 由字面上的意思来看,好像就是将『数据给他传导到其他地方去』的样子? 没错-数据流重导向就是将某个命令运行后应该要出现在屏幕上的数据, 给他传输到其他的地方,例如文件或者是装置 (例如打印机之类的)!这玩意儿在 Linux 的文本模式底下可重要的! 尤其是如果我们想要将某些数据储存下来时,就更有用了! 1)什么是数据流重导向? 什么是数据流重导向啊?这得要由命令的运行结果谈起!一般来说,如果你要运行一个命令,通常他会是这样的: 我们运行一个命令的时候,这个命令可

Centos6笔记 -- 数据流重导向(Redirection)

1. 数据流重导向的介绍 谈到数据流重定向,这里需要说明流的概念,就比如说我需要运行一个命令,就可能会有以下流的情况发生: 在运行一个命令时,这个命令可能会由文件读入数据,经过处理之后,再将数据输出到屏幕上. 在上图当中, standard output 与 standard error output 分别代表标准输出与标准错误输出,这两个输出流默认都是输出到屏幕上面的.标准输出指的是命令运行所回传的正确的信息,而标准错误输出可理解为命令运行失败后,所回传的错误信息. 如果我们希望这种输出流可以

Linux中bash中的几种基础特性汇总!

首先需要知道什么是shell?如果将Linux内核当作一个地球的核心,那么shell就是地壳.shell本身也是一个应用程序,为我们提供了使用系统的接口.shell程序有很多种,目前主流发行版大多数默认使用bash,其次还有sh,tcsh,csh,fish等,其程序存储在/etc/shells目录下. 由于目前最常用的bash,所以就以bash为例来说一说bash的基础特性,偷偷说一句,其实我也是个新手,其他的shell并未接触,不敢轻易去说,当然本文中难免有错误,还请各位不吝赐教,让大家共同进

bash中 2&gt;&amp;1 &amp; 的解释

1.首先,bash中0,1,2三个数字分别代表STDIN_FILENO.STDOUT_FILENO.STDERR_FILENO,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出). 2.输入输出可以重定向,所谓重定向输入就是在命令中指定具体的输入来源,譬如 cat < test.c 将test.c重定向为cat命令的输入源.输出重定向是指定具体的输出目标以替换默认的标准输出,譬如ls > 1.txt将ls的结果从标准输出重定向为1.txt文本

bash中通过设置PS1变量改变提示符颜色

参考 <Prompt Magic> ubuntu初始时bash提示符的颜色同程序输出的颜色相同,当大量有输出时,找到输出信息开始的地方往往很费劲.如果把提示符的颜色变成更为醒目的颜色,那么就很容易定位输出信息开始处.bash中想要改变提示符颜色可以通过PS1变量的值来设置,如果将其放入用户对应目录下的.bashrc文件中,则用户打开bash时自动更改颜色.这里,我将提示符改成绿色:    PS1="\[\e[32m\]\[email protected]\h:\w\$ \[\e[0m

bash中的变量

1.bash中的变量: #命令set:显示所有变量. (1).本地变量:只对当前shell进程有效,对其子shell以及其它shell都无效. 定义本地变量:[set]变量名="Value",例animal=dog 引用本地变量:${变量名},其中{}通常省略,例echo $animal 撤销本地变量:unset 变量名,例unset animal (2).局部变量:只对局部代码有效 定义局部变量:local 变量名=变量值 (3).环境变量:当前shell进程以及其子shell都有效

Bash中的数学扩展

Bash只支持整数运算,不支持浮点运算.如果需要进行浮点运算,需要使用bc程序.Bash中的数学扩展有两种形式:$[ expression ]或$(( expression )) 例子:$echo $[5+4-2]7 $echo $[ 5*(6-2) ]20 var1=100var2=50var3=45var4=$((var1*(var2-var3))) #注意:圆括号里不需要加$了,和数学运算一样,推荐用这种方式$echo $var4 也可以使用程序/usr/bin/expr来进行整数运算$e

[小技巧] 在bash中生成随机数

译至:http://d.hatena.ne.jp/anmino/20091017/1255705586 bash的SHELL参数RANDOM可以生成0-32767的随机数.想设定从1到N的随机数范围的话,可以使用:$ ( ( (RANDOM % n) + 1 )) #!/bin/sh #random_bash.sh for n in 1 2 3 4 5 6 7 8 9 10; do random=$(( (RANDOM % 10) + 1 )) echo -n "$random " d