【转】./a.out 2>&1 > outfile

原文网址:http://www.cnblogs.com/zhaoyl/archive/2012/10/22/2733418.html

APUE 3.5关于重定向有个容易迷惑人的问题:

./a.out > outfile 2>&1

./a.out 2>&1 > outfile

问两者区别。自己试了下,
  

int main(){
       printf("output to stdio\n");
       fprintf(stderr,"output to stderr\n");
       return 1;
}

// 结果如下:
$ ./a.out > outfile 2>&1
$ cat outfile
output to stderr
output to stdin
$ ./a.out 2>&1 > outfile
output to stderr

  
  原因是:
  由于bash从左往右处理,在./a.out > outfile的时候,将a.out的fd 1定向到了outfile文件的fd上,然后才遇到2>&1,这时再将a.out的文件描述符2定向到文件描述符1上,这样stderr和stdout,就都到outfile上了。
  
  而下面一个则不然,先遇到2>&1,这时将a.out的文件描述符2定向到文件描述符1上,1是终端。再遇到 > outfile,这时将a.out的文件描述符1重定向到outfile这个文件。结果是,标准错误输出到了屏幕,而标准输出定向到了outfile!

  也可以写shell脚本测试一下:

  

#!/bin/bash

touch output

test () {
    echo "before error.."
    someerror       #错误,变量或命令未定义
    echo "after error ..."
}

test  2>&1 >output

时间: 2024-10-19 09:27:05

【转】./a.out 2>&1 > outfile的相关文章

MySQL无法使用select into outfile

错误提示: mysql> select * into outfile '/tmp/mysql-slow.csv' from mysql.slow_log; ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement mysql>

select into outfile

语法格式如下: SELECT [列名] FROM table [WHERE 语句] INTO OUTFILE '目标文件' [OPTION]; FIELDS TERMINATED BY '字符串':设置字符串为字段之间的分隔符,可以为单个或多个字符.默认值是"\t". FIELDS ENCLOSED BY '字符':设置字符来括住字段的值,只能为单个字符.默认情况下不使用任何符号. FIELDS OPTIONALLY ENCLOSED BY '字符':设置字符来括住CHAR.VARCH

Sqli-LABS通关笔录-7[文件写入函数Outfile]

该关卡最主要的就是想要我们学习到Outfile函数(文件写入函数)的使用. 通过源代码我们很容易的写出了payload.倘若我们一个个去尝试的话,说实话,不容易. http://127.0.0.1/sql/Less-7/index.php?id=1')) and 1=1--+ Payload: http://127.0.0.1/sql/Less-7/index.php?id=1')) union select 1,'<?php eval($_POST[cmd])?>',3 into outfi

web安全之sqlload_file()和into outfile()

load_file() 条件:要有file_priv权限 知道文件的绝对路径 能使用union 对web目录有读权限 如果过滤啦单引号,则可以将函数中的字符进行hex编码 步骤: 1.读/etc/init.d下的东西,这里有配置文件路径. 2.得到web的安装路径 3.读取密码文件 into outfile 条件: 1.要有file_priv权限 2.知道网站的绝对路径 3.对web有写的权限 4.没有过滤单引号 步骤: 直到网站的绝对路径的时候: ?id=1 union select "<

mysql查询并导出指定数据,select from,where,into outfile导出,fields terminated by分隔导出数据

mysql -uxxx -pyyy use lottery; select count(id) from mop_bet_order_history where created_at < '2015-11-01'; 统计mop_order_history表中2015-11-01之前的数据条数 count(id)统计条数 select * from mop_bet_order_history where created_at < '2015-11-01' into outfile '/data/

【转】linux下a.out &gt;outfile 2&gt;&amp;1重定向问题

原文网址:http://blog.chinaunix.net/uid-25909722-id-2912890.html 转自:http://blog.chinaunix.net/space.php?uid=7589639&do=blog&id=2897930 linux下a.out > outfile 2>&1重定向问题 问题源自在unix高级环境编程中的 a.out > outfile 2>&1 a.out 2> &1 >out

数据库 的outfile 备份与还原 视图 事物 触发器 mysql函数和自定义函数

outfile    将数据库的数据导出 select * into outfile 'e://mysqloutfile//1.txt' from 表格名; 备份与还原 不再mysql目录下进行备份,mysqldump -uroot -p 数据库名 +表格名 > 具体的路径名(你要导入到哪里) 如果你想得到多张表的那么就在表格后面加一个表格 还原: 先删除数据库的所有东西 如果删除不了,那么就是还有没有删除干净 新建一个数据库 ,用数据库 找到文件   source +具体的文件;将数据导入 视

逻辑备份,mysqldump,SELECT…INTO OUTFILE,恢复

逻辑备份 mysqldump mysqldump备份工具最初由Igor Romanenko编写完成,通常用来完成转存(dump)数据库的备份以及不同数据库之间的移植,例如从低版本的MySQL数据库升级到高版本的MySQL数据库,或者从MySQL数据库移植到Oracle和SQL Server等数据库等. mysqldump的语法如下: mysqldump [arguments] > file_name 如果想要备份所有的数据库,可以使用--all-databaes选项: mysqldump --a

Mysql 使用 select into outfile

Mysql支持将查询结果到处 默认语法 select .. from table  into outfile "filepath\filename.txt"; 如果在执行的过程中遇到 Error 1290 则或为 系统变量中预设了此项, 需要进入到 mysql.ini 中 警用到这个变量,并且重启mysql 服务, 才可以支持这个功能. filepath 默认为 服务器上 mysql 数据目录中该数据库的子文件夹下,如: C:\ProgramData\MySQL\MySQL Serve