echo Hello World | nano - | less
テキストエディタでHello-> Goodbyeを変更したい。
nanoである必要はありません。私はナノ読み取り標準入力で立ち往生していますが、ファイルへの書き込みを要求しています(書き込み-という名前のファイルを作成します-)
echo Hello World | nano - | less
テキストエディタでHello-> Goodbyeを変更したい。
nanoである必要はありません。私はナノ読み取り標準入力で立ち往生していますが、ファイルへの書き込みを要求しています(書き込み-という名前のファイルを作成します-)
回答:
moreutilsのパッケージと呼ばれる、これを行うための偉大なコマンドがありますvipe
。manページから:
SYNOPSIS
command1 | vipe | command2
DESCRIPTION
vipe allows you to run your editor in the middle of a unix pipeline and
edit the data that is being piped between programs. Your editor will have
the full data being piped from command1 loaded into it, and when you close
it, that data will be piped into command2.
デフォルトeditor
では、これはコマンドを使用します。これは通常、デフォルトのコマンドラインエディターへのシンボリックリンクです。これを変更するには、リンクを変更するか(update-alternatives
Debianベースのシステムで使用)、EDITOR
環境変数を使用します。たとえば、次のことができます。
echo Hello World | EDITOR=nano vipe | less
それ以外の場合、特定のテキストエディターがこの種のことをサポートしていない場合、手動で一時ファイルを作成し、そこにファイルを書き込み、エディターを実行し、残りのパイプラインにファイルを入力し、一時ファイルを削除します。vipe
コマンドは基本的にこのすべての世話をします。これは便利ですが、コマンドがデフォルトで使用できることはほとんどありません。
テキストエディターjoe(別名Joe's Own Editor)は、必要なことを行います。
コマンドecho "hello world" | joe - | less
は予想どおりに機能しますが、何らかの理由で引用符が必要です。
一部のコマンド(gpgなど)は、パイプに入らない出力を表示します。これはjoe内の最初の表示を壊しますが、ctrl + r-リフレッシュ- を押すとクリーンアップされます。