locate ... | less
は、長いパスを出力します。これは、実際には1行ですが、端末では複数行として表示されます。
マウスでテキストを選択してヒットすることにより、ターミナルからパスをコピーします Ctrl+Shift+C。テキストファイルに貼り付けると、ターミナルに表示されるのとまったく同じ方法で、テキストに不要な変更行が表示されます。
しかし、私は時々、不要な行変更を導入することなく、locate ... | less
によって出力された長いパスをコピーできる場合があることを覚えており、できない場合もあります。何か違うことをしたのかわかりません。
それで、問題が発生しないことを確認する方法を知りたいですか?ありがとう!
私のOS:Ubuntu 12.04。
私の端末:Gnome Terminal 3.4.1.1
端末に表示されているもの(画面に収まるもののみ)をコピーする代わりに、実際のテキストをコピーします。 Xクリップボードとの間でデータをコピーするには、外部ユーティリティ xsel または xclip (ほとんど同じ機能を備えています。この回答ではxselを使用します)のいずれかを使用します。クリップボードにコピーするには、目的のコンテンツを標準入力に渡します。クリップボードから貼り付けると、コンテンツは標準出力に書き込まれます。
少ない場合は、|
コマンドを使用して、一連の行をコマンドにパイプ処理します。操作する最初の行までスクロールし、mm
と入力してマークを設定し、最後の行までスクロールし、|mxsel -b
と入力して押します。 Enter。 2つのマークが事前定義されています。ファイルの先頭の^
、ファイルの末尾の$
。したがって、ファイル全体をコピーするには、<|$xsel -b
を使用します。 1行をコピーするには、mm|mxsel -b
を使用し、 Enter。
-b
オプションを削除して、クリップボードではなくプライマリセレクションにコピーします。
less
では、折り返された複数行のテキストを選択してコピーすると、1行として表示されます。
押すと PgUp 次に同じテキストをコピーします。複数行として表示されます。
PgDn 大丈夫です、矢は大丈夫です。だが PgUp テキストを分割します。
コピー出力の行余分な改行なし(改行)テキストが直接出力の場合、端末に出力できます。
端末は、実際の回線の終端がどこにあるかを追跡できます。
しかし、行がless
または同様のpager
プログラムによって出力された場合、端末は改行がどこにあるかを認識しません。ページャーは端末を文字の全画面として使用し、端末に「これらの文字をそこに置く」ことと、スクロールなどの操作を指示します。しかし、ターミナルの場合、改行が意図されている場所を確認する方法はありません。
コピーと貼り付けが目的の場合は、cat
またはless
の代わりにmore
を使用すると、ターミナルは表示されているのではなく、実際にそれをキャプチャします。