36

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

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

4

6 に答える 6

48

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

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

  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+と入力し\ます。

于 2008-11-23T06:31:15.880 に答える
12

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

grep error error.log | xsel -bi
于 2008-11-25T21:09:08.633 に答える
9

と同様の機能tmux持つ which を使用することもできます。コピーしたい出力が表示されたら、次の操作を実行してコピーして貼り付けることができます。screentmux

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

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

于 2015-02-25T10:05:34.263 に答える
3

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

ls $( dirname $( grep エラー error.log | ヘッド -1 | カット -d "" -f 5- ) )

注:メモリからの構文

于 2008-11-23T07:03:57.093 に答える
1

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

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

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

試してみて、これで問題が解決することを願っています。

于 2008-11-27T20:19:47.593 に答える