端末からクリップボードに複数ページのテキストをコピーする方法は?


13

私は自分のマシンでソフトウェアのマニュアルページを見ていましたが、そのテキストの一部をコピーアンドペーストする必要がありましたが、テキストは複数のページでした。出力をファイルに送信し、geditなどのUIベースのソフトウェアを使用して必要なテキストをコピーできることを知っています。しかし、これは端末から実行できますか?

ジョセフはコマンドライン方式を提案しました(私には少し複雑ですが、Linuxでの正規表現はまだ得意ではありません)。しかし、私はまだ端末を使用しているときに、マウスを使用してそうする方法があるのだろうかと考えています

一般的な答えが得られることを願っていますが、Ubuntuを使用しています。

回答:


9

不完全ですが、役に立つかもしれないアイデアがいくつかあります。

方法1-マウス。

端末のスクロールバーを使用します。

詳細(想定xterm。他の端末では調整が必要です。)

  1. スクロールバーが有効になっていない場合は有効にします。(ではxterm、Ctrl + Button2で取得するメニューにあります。)
  2. オプションでless実行されていないことを確認してください-cLESS環境変数でこのオプションを有効にしていますが、これからやろうとしていることと干渉するので、入力-cする必要があります)。
  3. 任意のlessコマンドを使用して、コピーする最初の行が画面に表示されるように上下にスクロールします。
  4. triple-Button1選択した開始行を選択します。
  5. コピーする最後の行が画面に表示されるまで下にスクロールします。/検索ではなく、スペースバーまたは他の単純なスクロールキーのみを使用する必要があります。ここでのポイントは、lessすべての行を端末に送信してコピーできるようにすることです。
  6. 選択範囲を拡張するには、選択した終了行のButton3。

考えられる困難:スクロールバックバッファーが十分に大きくない可能性があります。それは中に変更することができるxtermとのsaveLinesリソースまたは-slコマンドラインオプションが、私はすでに実行しているxtermの中でそれを変更する方法を知りません。

方法2-非マウス。

|(パイプ)コマンドを使用してless、テキストをに送信しますxclip

詳細:

  1. 任意のlessコマンドを使用して、画面の一番上にコピーする最後の行を配置するために上下にスクロールします。最後までコピーする場合は、この手順と次の手順をスキップできます。
  2. m(マーク)コマンドを使用して、選択した終了位置にマークを設定します。マークスは自分で便利な機能であり、あなたはすでにから彼らを知っている必要がありviますが、念のために、あなたはしないでください:mxマーク、セットxの任意の文字をすることができ、そして'x、後に戻りますが。
  3. 次に、上にスクロールして、コピーする最初の行が画面の最上部に来るようにします。
  4. pipeコマンドを使用|xします。外部コマンドを入力するためのプロンプトが表示されます。これxは、mコマンドで使用したものと同じマーク文字、または$「最後まで」である必要があります。xclipそこに入力します。

マニュアルページ全体をコピーする単純なケースはに減少しg|$xclipEnterます。

警告(つまり、私に起こった恐ろしいこと):xclip半バックグラウンドで、lessプロセスグループの一部として実行されます。サスペンドしようlessとして、同じ端末で別のジョブを開始し、そこに貼り付けても、機能しません。その後、man/ lessジョブをフォアグラウンドにすると、突然ペーストが表示されます。これはxclipバグと考えるべきだと思います...


2
Macユーザーは、xclipがインストールされていない場合、pbcopyを使用できます。
マイクヘドマン

3

ターミナルマルチプレクサのような、tmuxまたはscreen通常このような機能(つまり、スクロールバックバッファーの一部をファイルに保存するか、コマンドにパイプする)があり、通常はそれらを使用することをお勧めします。そのため、これらのいずれかをご覧ください。 。


2

Nixcraftで概説したように

  1. 取得xclip

    sudo apt-get install xclip 
    

    または

    yum install xclip
    

    RPMベースのシステム。

  2. man man | your_magic_here | xclip -selection clipboard
  3. Ctrl+ V心ゆくまで。削除-selection clipboardして、代わりにマウスの中央クリックによる貼り付けを選択できます(プライマリ選択と呼ばれます)。

これyour_magic_hereは、特定のユースケースに従ってマニュアルページの目的の部分を選択するテキストフィルター(sed/ awk/ perl/ ...)のプレースホルダーであることに注意してください。例付き。


xclipそこから離れてxsel(および他の)もあります。また、このクリップボードの説明をご覧ください。
ペテルフ14年

マウスを使用してそうする方法はありますか?そのため、マウスがページの最後に到達すると、ページがスクロールします。
ムハンマドゲルバナ14年

0

端末プログラムに依存しますが、ほとんどの端末プログラムには選択したテキストを保存する機能がありません。

LXTerminal、uxterm、Konsole、およびGNOME Terminalはすべてこの「機能」を欠いているように見えますが、それを備えた他の機能があるかもしれません。ターミナルプログラムのメニュー構造を見ると、「選択したものを保存」のようなものがあるかもしれません


0

あなたがあなたのためにポケットベルとして使用するgnome-terminalと仮定すると:lessman

  • キーを使用して実行lessするman-X、代替画面が無効になります。次に例を示します。LESS=-X man less

これによりman、端末エミュレータの履歴バッファに出力を追加できます。詳細については、この答えを参照してください/unix//a/38638/87918を

  • コピーするテキストの最後のページまでスクロールします。(スクロール中は、スクロールされたテキストはすべて履歴バッファーに保存されます)
  • gnome-terminal最後のページから最初にマウスでテキストを選択し、マウスをウィンドウの上端にドラッグします。テキスト選択の詳細なプロセスは次のとおりです

これはGnomeターミナルでは機能しません。代わりに、マウスの左ボタンで選択を開始し、それを作成しながら、マウスカーソルをウィンドウの端(またはウィンドウの外側)にドラッグします。GTはプロセスをスクロールして、プロセスの選択範囲を広げます。GTのスクロールは十分に高速であるため、これは合理的で便利で直感的なプロセスであり、xtermよりも間違いなく優れています。

  • これで、テキストを(必要なページは何でも)選択して、どこにでもコピーして貼り付けることができます。

0

|を使用します Wumpus Q. Wumbleyの2番目のオプションで回答されているように、マーク付きのless(パイプ)コマンド。

|tee >> ~/helpaggregator.txt

新しいコマンドを学習する際に通常は相談する必要があり、それらを統合したいので、既存のファイルをお勧めします。さらに、タブ補完は便利です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.