[20170705]diff comparison execution result content.txt
--//Sometimes it is necessary to compare the output results of two commands. The stupid method is as follows, example:
$ lsnrctl status LISTENER_SCAN2 > /tmp/b2.txt
$ lsnrctl status LISTENER_SCAN3 > /tmp/b3.txt
$ diff -Nur /tmp/b2.txt /tmp/b3.txt
--//Obviously, this requires generating two files and then comparing them. In fact, it can be easily achieved using the shell.
$ lsnrctl status LISTENER_SCAN3 | diff /tmp/2.txt -
--//This reduces the generation of one file. Can it reduce the generation of files further?
$ diff <(lsnrctl status LISTENER_SCAN2) <(lsnrctl status LISTENER_SCAN3)
-- //How to understand?
$ echo <(lsnrctl status LISTENER_SCAN2) <(lsnrctl status LISTENER_SCAN3)
/dev/fd/63 /dev/fd/62
--//actually 62 ,63 is the open file handle. Of course, it will be closed immediately after execution.
$ 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
--//Writing a simple shell script is easy to understand (note that this writing method is not very rigorous):
--//I directly read the contents of handle 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 30-JUN-2017 12:00:02 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)))
-- //Thinking of this, I finally understand exp/imp on the fly. Example:
$ exp scott/book file=>(gzip >t.dmp.gz) tables=emp
$ imp scott/book full=y file=<(gunzip
The above is the detailed content of [20170705] Contents of diff comparison execution results.txt. For more information, please follow other related articles on the PHP Chinese website!