echo Hello World | nano - | less
テキストエディタでHello - > Goodbyeを修正したいと思います。
Nanoで使用する必要はありません。 Nanoがstdinを読み込んでいますが、ファイルに書き込むように要求しています(書き込み - -というファイルを生成)。
答え1
これその他のユーティリティvipe
マンページにはpackageという素晴らしいコマンドがあります。
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
コマンドはデフォルトですべてを処理します。大丈夫ですが、基本的にコマンドはほとんど使用できません。
答え2
「Hello」を「Goodbye」(または他の単語の置換)に置き換えるには、エディタで手動で編集せずに自動検索および置換ツールを使用できます。たとえば、「sed」は次のように置き換えることができます。
echo Hello World | sed 's/Hello/Goodbye/' | less
詳しくは「man sed」をご覧ください。
答え3
テキストエディタのグループ(別名ジョーの編集者)したいとおりにしてください。
コマンドはecho "hello world" | joe - | less
期待どおりに実行されますが、何らかの理由で引用符が必要です。
gpg などの一部のコマンドは、パイプに入らない表示出力を生成します。これにより、joe内部の初期表示が破壊されますが、制御キー+アル字型--refresh-- すべての内容をクリーンアップします。