web-dev-qa-db-ja.com

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

コマンドラインから実行されたコマンドの出力の一部を別の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 ..の組み合わせを使用します。出力から必要なものだけを抽出し、バッククォート内でthatを使用します。

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

28
Nathan Fellman

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

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

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

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

39
strager

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

grep error error.log | xsel -bi
11
salty-horse

同様の機能 からtmuxまでのscreenを使用することもできます。 tmuxに移動し、コピーする出力ができたら、次の手順でコピーして貼り付けることができます。

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

これらの命令は、emacsキーバインディングが有効になっていることを前提としています。 viバインディングについては、これを参照してください 比較 または単に this ステップバイステップガイドに従ってください。

6
Silveri

OPは彼がこれをしたくないと言った、しかしここに後世のためにそれをするためのunixutilsの方法がある。これらの小さなUNIXユーティリティを学ぶと、非常に強力になります。

ls $(dirname $(grep error error.log | head -1 | cut -d "" -f 5-))

注:メモリからの構文

2
Quog

Xtermデバイス番号を使用して、関連するxtermに直接出力を送信できます。これがコマンドです。

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

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

それを試してみて、これがあなたの問題を解決するかもしれないことを願っています。

1
iankits