マウスなしでxtermからテキストをコピーするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/312213

質問

別のxtermのコマンドラインから実行されたコマンドの出力の一部、または別のコマンドの一部として使用したい。例:

> grep error error.log
error: can't find file ~/<some very long path>/thisfile

これを行いたい:

>ls ~/<some very long path>/

これを行うには2つの方法があります:
1.マウスで~/<some very long path>/をコピーします。
2. head / tail / awk / sed / perl / cut / etc ...の組み合わせを使用して、出力から必要なものだけを抽出し、 バックティック内。

マウスを使用せずにテキストをコピーする方法はありますか?思い浮かぶ例はVIM内のビジュアルモードですが、xterm内でそれを行う方法はわかりません。

役に立ちましたか?

解決

GNU画面のコピーアンドペーストコマンドを使用できます。

クイックチュートリアル:

  1. 画面を開く:screen(またはscreen myprog my args here
  2. プログラムを実行し、コピーしたい出力を生成します
  3. コピーモードに入る: Control + a + [
  4. カーソルを開始点に移動します
  5. ヒット Enter
  6. カーソルを終点に移動します
  7. ヒット Enter
  8. 貼り付け: Control + a + ]

Screenはそれよりもはるかに強力です(特別なターミナルエミュレーターを必要とせずに複数の仮想ターミナルをタブするために使用し、Xがクラッシュしたときなどにセッションを失うこともありません)。画面から抜けるには、シェルセッションを終了するか、 Ctrl + a Ctrl + \ と入力します。

他のヒント

XSel は同様の状況で役立つことがわかりました。 X選択を操作するツールです。たとえば、これはコマンドの出力をクリップボードに保存します:

grep error error.log | xsel -bi

tmux同様の機能を持つscreenを使用することもできます。 <=>に移動して、コピーしたい出力ができたら、次を実行してコピーしてから貼り付けることができます。

  1. Ctrl + B [
  2. でコピーモードに入ります
  3. 矢印キーでカーソルを移動し、 Ctrl +スペース
  4. で選択を開始します
  5. カーソルを移動してコピーするテキスト/領域を選択し、 Alt + W でコピーします(これにより、すぐにコピーモードが終了します)
  6. Ctrl + B ]
  7. を使用して(<=>内のみ)貼り付けることができるようになりました

これらの手順では、 emacs キーバインディングが有効になっていることを前提としています。 vi バインディングについては、この比較を参照するか、単にこのステップバイステップガイド。

OPはこれをやりたくないと言ったが、後世のためにUnix utilsでそれを行う方法を以下に示す。これらの小さなUNIXユーティリティを学習すれば、非常に強力になります。

  

ls $(dirname $(grep error error.log | head -1 | cut -d <!> quot; <!> quot; -f 5-))

注:メモリからの構文

xtermデバイス番号を使用して、関連するxtermに出力を直接送信できます。コマンドは次のとおりです。

xyz$ls /home/ankit/documents/etc/x/y/z > /dev/pts/0 

(またはwateverはデバイス名です。開いたxtermのコマンド「w」を使用して取得できます)

試してみてください<!> amp;これで問題が解決することを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top