web-dev-qa-db-ja.com

前のコマンドの出力からのテキストを使用する

2015年4月の編集:これと同じ質問がある場合は、チェックすることをお勧めします http://xiki.org/


これが端末の動作方法ではないことは知っていますが、以前のコマンド出力から端末ウィンドウの履歴にすでにあるテキストを使用する簡単な方法(コピー、変更など)があればいいのにと思うことがよくあります。

私はそれをこのように想像しました:

コマンドを入力しようとしているbashシェルにいますが、数行上の画面に既に表示されているものを入力する必要があることに気付きました。マウスに手を伸ばして選択することはできますが、嫌いです。現時点で私が本当に望んでいるのは、端末全体が巨大なVimバッファーになり、プロンプト、入力したコマンド、およびそれらのコマンドからの出力がすべて含まれることです。すべて。そして、数行上にジャンプして、少し編集して、テキストをヤンクすることができます。次に、bashシェルモードに戻り、ヤンクしたものを現在のコマンドラインに貼り付けます。

私はいくつかのオプションがあることを知っています:

  • 当然、必要なテキストをコマンドの出力からファイルに直接パイプするか、次のコマンドに直接パイプします。ただし、そのためには、事前に計画を立てるか、履歴からコマンドを再実行する必要があります(呼び出し間で出力が変わらないと仮定します)。

  • マウスに手を伸ばして、コピーするテキストを選択します。残念、迷惑です、私はそれをしていなかったらよかったのですが(これはGUIスタック交換サイトではありませんか?=)

  • (Mac OS X)ターミナルアプリケーションの[テキストを...としてエクスポート]オプションを使用して、ターミナルテキストをファイルに保存するには。次に、ファイルを開いて操作します。ほとんどですが、なぜディスク上のファイルに保存する手順を実行するのですか?

だから問題は:この状況であなたは何をしますか?このシナリオで役立つ可能性のあるトリック、ツール、シェル機能はありますか?マウスを使用するために辞任するだけですか、それとも入力する必要があるものを再入力しますか?

問題は、私が「UNIXの方法」で何かをしていないことかもしれませんが、これは2010年であり、カーソルから数行離れた場所にテキストを簡単にコピーできないのでしょうか。

16
Sergio Acosta

スクリプトを使用して(-fを使用して、毎回フラッシュすることを確認してください)、すべての出力をファイルに含めることができます。

ターミナルマルチプレクサ(画面、tmuxなど)を使用します。たとえば、画面の場合 http://web.mit.edu/gnu/doc/html/screen_11.html#

コマンド:copyコピー/スクロールバックモードに入ります。これにより、現在のウィンドウとその履歴から貼り付けバッファにテキストをコピーできます。このモードでは、viのようなフルスクリーンエディタがアクティブになり、以下に概説するようなコントロールがあります。

他のターミナルマルチプレクサは確かにより高度な機能を備えています。

4
nc3b

Tmux(ターミナルマルチプレクサ)では、Ctrl + A- [を押してViバッファモードに切り替え、画面内を移動したり、バッファを前後にスクロールしたり、テキストをコピーしたりできます。デフォルトのショートカットは実際にはCtrl + B-です。 [しかし、それは明らかに再構成することを意図していた。また、デフォルトのバッファモードはEmacsですが、Viに設定することもできます。

Tmuxをチェックしてください、それは本当に素晴らしい現代のターミナルマルチプレクサです。バッファの操作に加えて、複数のウィンドウで画面を分割したり、複数の端末から同じセッションに接続したりできます。実際のシェルが何であるかを伝えると、究極の利便性のためにログインシェルにすることもできます。

OpenBSDでは、tmuxは基本システムの一部にさえなりました。

詳細については、tmuxのmanページを参照してください。 http://tmux.sourceforge.net/ のスクリーンショットも参照してください。

5
zvolkov

Emacsでは、 M-x Shell 前の出力のエディションを処理します。以前のコマンド出力、または通常のバッファーのようなバッファーの任意の部分を簡単にコピーして貼り付けることができます。私はvimに相当するものがあるはずだとかなり確信しています。

4
elmarco

ここで述べたように、Emacsのeshellはデフォルトのterm + Shellである可能性があります。 :)次に、最低限、そこにある通常のテキストナビゲーションキーを使用します。さらに特別なキーを学んだ場合は、Emacsのeshellの次の機能にアクセスできます。

CLIとしてvimを使ってみませんか?数行から出力を選択し、パイプでつなぐだけです:!。

1
Stephen M. Webb

私はurxvt(rxvt-unicode)を使用していますが、urxvt-keyboard-selectというパッケージがあります。これは、urxvtをインストールできる場合は、まさに必要なものです。 Archlinuxパッケージ情報(ポインターを含む)はここにあります:

https://aur.archlinux.org/packages.php?ID=3995

元のソース: http://www.github.com/muennich/urxvt-perls

1
Nobody