端末から長い行のテキストをコピーし、不要な変更行を含めます。

端末から長い行のテキストをコピーし、不要な変更行を含めます。

locate ... | less実際には1行ですが、端末は複数行で表示される長いパスを出力します。

Ctrlマウスでテキストを選択し、+をクリックしてShift端末からパスをコピーしましたC。これをテキストファイルに貼り付けると、端末に表示されるのと同じ方法でテキストに不要な変更された行が表示されます。

ただし、不要な行を変更せずに出力から生成された長いパスをコピーできる場合もあり、locate ... | lessそうでない場合もあることを覚えておいてください。私が別のことをしたかどうかはわかりません。

それでは、問題が発生しないようにする方法が気になります。ありがとうございます!

私のオペレーティングシステム:Ubuntu 12.04。

私のターミナル:Gnome Terminal 3.4.1.1

答え1

実際の動作は次のとおりです。

less非常に長い行を持つファイルがある場合は、長い行を下にスクロールし、上にスクロールすると、テキスト全体をコピーするときに複数行が表示されます。後で区切り線をターミナルの下部まで下にスクロールして再び上にスクロールすると、改行は再び削除されます。

可視化の場合:

ここに画像の説明を入力してください。

答え2

あなたはできますコピー出力ライン追加改行なし(改行)テキストが次のような場合直接出力ターミナルに行きます。
端末は、実際の行が終わる位置を追跡できます。

しかし、これらの行がless同様のpagerプログラムによって出力される場合、端末は改行文字がどこにあるかを知ることができない。ページャは、端末を全画面表示文字として使用し、端末に「この文字を配置します」と指示するだけでなく、スクロールなどの操作も実行します。ただし、端末では改行文字が何に使用されているかを確認する方法はありません。

答え3

端末に表示される内容(画面に合った内容)をコピーせず、実際のテキストをコピーしてください。外部ユーティリティのいずれかを使用してください。シェルまたはクリップ(ほとんど同じ機能があります。この回答ではxselを使用します。)Xクリップボードから/にデータをコピーします。クリップボードにコピーするには、必要なものを標準入力に渡します。クリップボードから貼り付けると、内容が標準出力に書き込まれます。

Lessはこの|コマンドを使用して、コマンドを介して複数行をパイプします。操作を実行する最初の行までスクロールし、入力してmm表示を設定し、最後の行にスクロールしてから、入力し|mxsel -bてを押しますEnter^ファイルの先頭とファイルの終わりの$2つのマーカーが事前定義されています。したがって、ファイル全体をコピーするにはを使用します<|$xsel -b。 1行をコピーするには、mm|mxsel -bとを使用しますEnter

-bクリップボードの代わりにデフォルトの選択項目にコピーするオプションが削除されました。

答え4

ゴールがコピーして貼り付けている場合は、cat代わりにまたはを使用し、端末は表示されたときではなく実際のままキャプチャします。lessmore

関連情報