[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)

最新文章

  1. linux用户权限相关内容查看
  2. quick-cocos2d-x :加入精灵背景
  3. C#中的?和??的用法
  4. How do you install mysql-connector-python (development version) through pip?
  5. document.body.scrollTop or document.documentElement.scrollTop
  6. data pump (数据抽取)测试
  7. 列出当前ARM开发板系统加载的模块
  8. linux中配置桥接网络,让虚拟机能够上网
  9. MyEclipse中文注释乱码解决
  10. as3 工具类分享 CookieMgr
  11. php配置文件php.ini 中文版
  12. HDU 3916 Sequence Decomposition 【贪心】
  13. ecshop加入购物车效果(各个页面)
  14. Ubuntu 16.04 安装GIMP绘图软件
  15. 从零开始学安全(八)●Ubuntu 16 LAMP环境搭建
  16. codecs and formats of digital media
  17. Qt做发布版,解决声音和图片、中文字体乱码问题(需要在main里写上QApplication::addLibraryPath(&quot;./plugins&quot;)才能加载图片,有图片,很清楚)
  18. parallels Desktop解决无法压缩硬盘的问题
  19. java.lang.NoClassDefFoundError: com/gexin/rp/sdk/exceptions/RequestException解决方法
  20. Fabric Engine2.0的自定义节点功能

热门文章

  1. web自动化测试(java)---元素定位
  2. 第三章:Activity的生命周期
  3. 用C#学习数据结构之线性表
  4. 记录前台页面一些jQuery笔记
  5. Android privilege escalation to mediaserver from zero permissions (CVE-2014-7920 + CVE-2014-7921)
  6. 微信小程序 - 入门指引
  7. .14-浅析webpack源码之Watchpack模块
  8. jQuery 【选择器】【动画】
  9. quartz部署出现找不到表的情况,错误提示: Table &#39;heart_beat.QRTZ_LOCKS&#39; doesn&#39;t exist
  10. 设计模式之命令模式(Command )