zoukankan      html  css  js  c++  java
  • [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)

  • 相关阅读:
    StringTokenizer与indexOf()和substring()
    如何保证session一致性
    用存储过程实现for循环执行sql语句
    python 字符串替换
    python 基础
    执行env.render()渲染环境时报错get_screens raise NotImplementedError('abstract')
    安装TensorFlow的一些问题
    sqoop
    Hadoop序列化与Java序列化
    RPC
  • 原文地址:https://www.cnblogs.com/lfree/p/7124479.html
Copyright © 2011-2022 走看看