2

zcat と diff を使用して 2 つの .gz テキスト ファイルを比較しようとしています。これは JunOS ボックス上にあるため、新しいバイナリ (zdiff) を追加することはできず、限られた数の他のシェルしか利用できません。これらのものが追加される可能性があるのは事実かもしれませんが、管理ポリシーはこれを禁止しています。csh がデフォルトのシェルですが、tcshshも使用できます。/config ディレクトリで、保留中のコミット ファイル (juniper.conf+.gz) を現在の構成ファイル (juniper.conf.gz) と比較できるようにしたいと考えています。

私はそれのようなものを読んだ

diff <(zcat juniper.conf+.gz) <(zcat juniper.conf.gz)

動作しますが、どうやらそれは bash でのみ有効です。

これ、

zcat juniper.conf+.gz | { zcat juniper.conf.gz | diff /dev/fd/3 - ; } 3<&0

「リダイレクトの名前がありません」というメッセージが表示されました(最初からコマンドを完全に理解していたわけではありません)。

csh (または他の avail シェル) でこれを 1 回で実行するコマンド ライン ウィザードが他にあるでしょうか。

前もって感謝します。

4

1 に答える 1

0

提案されたコマンドのほとんどの機能は、bash に固有のもの、または少なくとも sh に固有のものです。

sh本当に Bourne シェルであり、bashまたはへのシンボリック リンクkshではなく、多くのシステムにある場合、またはのようなものは使用できません。<(command)また3<&0、csh にはそのような機能がありません。

これは csh で動作するはずです:

zcat juniper.conf+.gz > 0 ; zcat juniper.conf.gz > 1 ; diff 0 1 ; rm 0 1

または、2 番目のコマンドを試すこともできます。

zcat juniper.conf+.gz | { zcat juniper.conf.gz | diff /dev/fd/3 - ; } 3<&0

shで; これを行うcshワンライナーは次のとおりです。

sh -c 'zcat juniper.conf+.gz | { zcat juniper.conf.gz | diff /dev/fd/3 - ; } 3<&0'

(で始まる csh ワンライナーを提案したくなる

wget ftp://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz && ...

ただし、JunOS でソースから bash をビルドすることはおそらくできません。)

于 2013-05-06T17:10:40.433 に答える