当前位置: 首页 > news >正文

[20170705]diff比较执行结果的内容.txt

[20170705]diff比较执行结果的内容.txt

--//有时候需要比较2个命令输出的结果进行比较,比较笨的方法如下,例子:

$  lsnrctl status LISTENER_SCAN2 > /tmp/b2.txt
$  lsnrctl status LISTENER_SCAN3 > /tmp/b3.txt
$  diff -Nur /tmp/b2.txt /tmp/b3.txt

--//很明显这样要生成2个文件,然后比较,实际上利用shell可以很简单的实现.

$  lsnrctl status LISTENER_SCAN3 | diff /tmp/2.txt -
--//这样减少1个文件的生成,可以再减少文件生成吗?

$  diff <(lsnrctl status LISTENER_SCAN2) <(lsnrctl status LISTENER_SCAN3)

--//如何理解呢?
$  echo  <(lsnrctl status LISTENER_SCAN2) <(lsnrctl status LISTENER_SCAN3)
/dev/fd/63 /dev/fd/62
--//实际上62,63就是打开的文件句柄.当然执行完马上关闭.

$  ls -l /dev/fd
lrwxrwxrwx 1 root root 13 2014-12-11 02:24:57 /dev/fd -> /proc/self/fd

$  ls -l /dev/fd/
total 0
lrwx------ 1 grid oinstall 64 2017-07-05 16:16:07 0 -> /dev/pts/4
lrwx------ 1 grid oinstall 64 2017-07-05 16:16:07 1 -> /dev/pts/4
lrwx------ 1 grid oinstall 64 2017-07-05 16:16:07 2 -> /dev/pts/4
lr-x------ 1 grid oinstall 64 2017-07-05 16:16:07 3 -> /proc/101318/fd

--//写一个简单的shell脚本就很好理解了(注意这种写法不是很严谨):
--//我直接读取句柄63,62的内容.

$  cat a.sh
#! /bin/bash
echo  <(lsnrctl status LISTENER_SCAN2) <(lsnrctl status LISTENER_SCAN3)
diff /dev/fd/63 /dev/fd/62

$  . a.sh
/dev/fd/63 /dev/fd/62
6c6
< Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2)))
---
> Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN3)))
9c9
< Alias                     LISTENER_SCAN2
---
> Alias                     LISTENER_SCAN3
11,12c11,12
< Start Date                30-JUN-2017 12:00:03
< Uptime                    5 days 4 hr. 18 min. 37 sec
---
> Start Date                30-JUN-2017 12:00:58
> Uptime                    5 days 4 hr. 17 min. 43 sec
17c17
< Listener Log File         /u01/app/11.2.0.4/grid/network/log/listener_scan2.log
---
> Listener Log File         /u01/app/11.2.0.4/grid/network/log/listener_scan3.log
19,20c19,20
<   (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN2)))
<   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.109)(PORT=1521)))
---
>   (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN3)))
>   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.100.107)(PORT=1521)))

--//想到这里,我终于理解exp/imp on the fly.例子:

$ exp scott/book file=>(gzip >t.dmp.gz) tables=emp
$ imp scott/book full=y  file=<(gunzip <t.dmp.gz)

转载于:https://www.cnblogs.com/lfree/p/7124479.html

相关文章:

  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • 2亿让利联合大促 国美在线牵手飞牛网虎牛生“丰”
  • 中国移动光网络未来:SDN为脑与业务网深度融合
  • IDEA创建SpringBoot项目报错artifact contains illegal characters
  • 洛谷P2168 荷马史诗 堆 哈夫曼树
  • 去哪网实习总结:开发定时任务(JavaWeb)
  • 【软件周刊第 36 期】Linux Kernel 4.12 正式发布;Fedora 26 下周二到来
  • go学习--控制语句
  • selenium打开chrome时,出现 您使用的是不受支持的命令行标记:--ignore-certificate-errors...
  • 揭开PaaS的神秘面纱 关注PaaS的实际业务价值
  • Django 数据库ORM 操作 - 字段的类型和参数
  • 2016年8月印度电信市场表现
  • GDI+学习之------ 画线、区域填充、写字
  • 参加51CTO学院软考培训,我通过啦
  • 资金流学习-逐笔交易的分析
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • CentOS从零开始部署Nodejs项目
  • crontab执行失败的多种原因
  • Django 博客开发教程 8 - 博客文章详情页
  • ES6 ...操作符
  • Facebook AccountKit 接入的坑点
  • js操作时间(持续更新)
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • PhantomJS 安装
  • SQLServer插入数据
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 观察者模式实现非直接耦合
  • 一份游戏开发学习路线
  • #在 README.md 中生成项目目录结构
  • ()、[]、{}、(())、[[]]命令替换
  • (14)Hive调优——合并小文件
  • (2)(2.10) LTM telemetry
  • (arch)linux 转换文件编码格式
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (C语言)逆序输出字符串
  • (Python) SOAP Web Service (HTTP POST)
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (九十四)函数和二维数组
  • (转)德国人的记事本
  • (转)一些感悟
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .Net 中Partitioner static与dynamic的性能对比
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件