マウスなしでxtermからテキストをコピーするにはどうすればよいですか?
-
10-07-2019 - |
質問
別の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画面のコピーアンドペーストコマンドを使用できます。
クイックチュートリアル:
- 画面を開く:
screen
(またはscreen myprog my args here
) - プログラムを実行し、コピーしたい出力を生成します
- コピーモードに入る: Control + a + [
- カーソルを開始点に移動します
- ヒット Enter
- カーソルを終点に移動します
- ヒット Enter
- 貼り付け: Control + a + ]
Screenはそれよりもはるかに強力です(特別なターミナルエミュレーターを必要とせずに複数の仮想ターミナルをタブするために使用し、Xがクラッシュしたときなどにセッションを失うこともありません)。画面から抜けるには、シェルセッションを終了するか、 Ctrl + a 、 Ctrl + \ と入力します。
他のヒント
XSel は同様の状況で役立つことがわかりました。 X選択を操作するツールです。たとえば、これはコマンドの出力をクリップボードに保存します:
grep error error.log | xsel -bi
tmux
に同様の機能を持つscreen
を使用することもできます。 <=>に移動して、コピーしたい出力ができたら、次を実行してコピーしてから貼り付けることができます。
- Ctrl + B 、 [ でコピーモードに入ります
- 矢印キーでカーソルを移動し、 Ctrl +スペース で選択を開始します
- カーソルを移動してコピーするテキスト/領域を選択し、 Alt + W でコピーします(これにより、すぐにコピーモードが終了します)
- Ctrl + B 、] を使用して(<=>内のみ)貼り付けることができるようになりました
これらの手順では、 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;これで問題が解決することを願っています。