1. 输出重定向:

默认条件下,标准输出和错误输出都是终端,可以把标准输出和错误内容进行重定向:

[~]# echo "hello\!"

hello\!

[~]# echo "hello!"

-bash: !": event not found "

把标准输出重定向到文件

[~]# echo "hello" > test.sh

[~]# cat test.sh

hello

'>'输出方式默认等价'1>'

[~]#  echo "hello" 1> test.sh

[~]# cat test.sh

hello

但是错误内容还是会显示在屏幕上:

[~]$cat edit.sql /root/test.sh > temp.sh

cat: /root/test.sh: Permission denied

可以把错误内容也输出到文件中(利用文件描述符):

[~]$cat edit.sql /root/test.sh 1> temp.sh 2> error.sh

[~]$cat temp.sh

select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,

dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,

dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,

dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual

/

[~]$cat error.sh

cat: /root/test.sh: Permission denied

把标准输出和错误信息写入同一个文件:

[~]$cat edit.sql /root/test.sh > temp.sh 2>&1

[~]$cat temp.sh

select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,

dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,

dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,

dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual

/

cat: /root/test.sh: Permission denied

这个看起来比较麻烦,实际应用中可能用的最多的是:

[~]$cat edit.sql /root/test.sh &>temp.sh

[~]$cat temp.sh

select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,

dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,

dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,

dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual

/

cat: /root/test.sh: Permission denied

&>把所有输出都写入同一个文件

如果不想输出到文件,也不想在屏幕上显示,可以利用/dev/null这一特殊设备文件(bit bucket)

[~]$cat edit.sql /root/test.sh &>/dev/null

如果把标准输出写入到文件,就没法利用管道符号'|'把内容传给接下来的命令,可以利用tee命令解决这个问题:

[~]$cat edit.sql /root/test.sh | tee temp.sh | cat -n

cat: /root/test.sh: Permission denied

select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,

dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,

dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,

dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual

/

tee命令相当于把stdout副本写入文件,再把stdout传给下一个命令,但是错误内容是无法用tee传递的,如同使用>>追加内容,tee可以使用-a选项追加:

[~]$cat edit.sql /root/test.sh | tee -a temp.sh | cat -n

cat: /root/test.sh: Permission denied

select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,

dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,

dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,

dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual

/

[~]$cat temp.sh

select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,

dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,

dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,

dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual

/

select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,

dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,

dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,

dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual

/

2.输入重定向:

输入重定向,在一些场合,例如数据库监控中用的比较多,常见的是使用内联重定向

[~]$cat < edit.sql

select           dbms_rowid.rowid_object('AAAZdQAAGAAATxjAAk') data_object_id#,

dbms_rowid.rowid_relative_fno('AAAZdQAAGAAATxjAAk') rfile#,

dbms_rowid.rowid_block_number('AAAZdQAAGAAATxjAAk') block#,

dbms_rowid.rowid_row_number('AAAZdQAAGAAATxjAAk') row# from dual

/

例如,如下操作,把 < temp.sh到最后EOF之间的内容当作stdin,然后把stdout写入文件temp.sh

[~]$cat < temp.s

this is my log

EOF

[~]$cat temp.sh

this is my log

3.自定义文件描述符:

自定义文件描述符的原理是使用基本的三种文件打开模式

只读(

截断(>)

追加(>>)

创建一个文件描述符3,用于打开文件

[~]# exec 3< test.sh

下面就可以直接使用文件描述符打开文件了,但是只能使用一次:

[~]# cat

hello

hello

创建文件描述符4,用于写入文件(可以复用):

[~]# exec 4>test.sh

[~]# echo okok >&4

[~]# cat test.sh

okok

这个实际类似前面的:

[~]$cat edit.sql /root/test.sh > temp.sh 2>&1

创建文件描述符5,用于向文件追加内容(也可以复用,不像输入文件描述符那样只能使用1次):

[~]# exec 5>>test.sh

[~]# echo okokok >&5

[~]# cat test.sh

okokok

[~]# echo okokok >&5

[~]# cat test.sh

okokok

okokok

linux标准输出重定向到文件夹,linux输入输出重定向使用详解相关推荐

  1. Linux下zip格式文件的解压缩与压缩操作命令详解

    < Linux下zip格式文件的解压缩与压缩操作命令详解 > * 声明:网上找来比较凌乱,整理了一下,方便自己查看 zip格式文件的解压缩与压缩操作: 1.把/home目录下面的huaza ...

  2. 在linux系统中创建文件夹,Linux系统中创建文件夹命令详解

    Linux系统中创建一个新的文件夹我们可以使用命令来执行,下面由学习啦小编为大家整理了Linux系统中创建文件夹命令详解,希望对大家有帮助! Linux系统中创建文件夹命令详解 一.mkdir命令使用 ...

  3. Linux使用命令移动文件夹,linux虚拟机中如何用命令来移动文件夹

    对于新手来说,经常会碰到如何移动linux系统中的文件夹之类的问题,这些命令都很简单,关键在于熟能生巧,接下来跟着小编一起学习一下如何在装有linux的虚拟机中进行文件夹的移动. linux虚拟机中如 ...

  4. linux ssh怎样删除文件夹,Linux服务器一键删除文件夹SSH命令

    Linux服务器管理不像Windows服务器管理那么方便,当然Linux也可以直观可视化操作,本人习惯使用SSH命令管理操作,常常会碰到网站产生 大量垃圾文件的苦恼,直接登录FTP删除的话,曾经试过删 ...

  5. linux搜索有哪些文件夹,Linux常见几个查找命令

    以下命令是很久以前学习Linux,网上查到的命令自己做了下总结.记录在这里方便以后查看. Linux常见五种查找命令 1.which which命令的作用是,在PATH变量指定的路径中,搜索某个系统命 ...

  6. linux 新建1 10文件夹,linux创建目录和文件的命令

    linux下进行操作难免会遇到创建文件或者目录的情况,那么我们要使用什么目录来创建目录和文件呢?下面由学习啦小编为大家整理了linux创建目录和文件命令的相关知识,希望大家喜欢! 一.linux创建目 ...

  7. linux svn添加新文件夹,linux svn 添加文件夹

    安装doxygen 安装包 doxygen-1.7.4.linux.bin.tar.gz(可在官网下载) 命令: 1) tar xvfz doxygen-1.7.4.linux.bin.tar.gz ...

  8. linux服务器拷贝目录文件夹,linux两台服务器之间文件/文件夹拷贝

    linux两台服务器之间文件/文件夹拷贝 跨服务器拷贝需要用到的命令是scp. ----------------------拷贝文件夹--------------------------------- ...

  9. linux查询所建文件夹,linux中的文件和文件夹的新建、查询、删除

    新建文件夹 使用的mkdir命令可以新建文件夹. mkdir filename 这样就创建了一个叫做filename文件夹. 新建一个文件 新建的文件可以包括任何扩展名,.txt/.cpp/.csv ...

最新文章

  1. 模板引擎-模板引擎渐进进化
  2. 美酒换咖啡用java编写_Java 配 Shell 等于美酒加咖啡
  3. ubuntu16.04 apt-get 报错:E: Unable to locate package update(E: Unable to locate package upgrade)(没解决)
  4. Wireshark(2):应用Wireshark观察基本网络协议
  5. 【《zw版·Halcon与delphi系列原创教程》 zw_halcon人脸识别
  6. fail to build phoneME Feature-转
  7. Java 基础 引用数据类型 和 流程控制
  8. 为什么说吉利博越定义了智能SUV
  9. struts2中常用Result类型(type)的用法
  10. SQL:集成 SQL Server 2008 R2 SP3
  11. R 计算平均值标准误差
  12. python判断空行_python判断空行
  13. 小游戏2048最佳算法怎么实现?思路全解析!
  14. linux查看已安装的软件
  15. 改(微微微微微小说)
  16. 计算机音乐谱子 追光者,岑宁儿《追光者》简谱
  17. 量子计算机用什么传导信息,量子是如何传递信息的?
  18. 3KAL芯片规格书,3KAL电路图
  19. Neuron segmentation using 3D wavelet integratedencoder–decoder network
  20. 靶机16 GROTESQUE: 2

热门文章

  1. SpringBoot的整合(自动生成工具的使用mysql5和mysql8版本的两种版本和两种生成方式)
  2. Idea使用SVN常用操作
  3. Docker超详细学习教程,简单易懂(小白必看)
  4. 案例04:几何图形绘制
  5. 只要“人设”打的好,品牌营销没烦恼
  6. opencv相机标定(1)-畸变校正原理
  7. Fusiello极线校正方法的原理及C++实现
  8. 必须是可修改的左值_信用卡还不上?修改账单日缓解压力?这些注意事项一定要知道~...
  9. docker推送镜像到dockerhub
  10. 如何构建 SOA 系统 --苏振兴