自分のマシンでソフトウェアのmanページを表示していて、そのテキストの一部をコピーして貼り付ける必要がありましたが、テキストは1ページをはるかに超えていました。出力をファイルに送り、必要なテキストをコピーするためにgeditなどのUIベースのソフトウェアを使用できることを知っています。しかし、これはターミナルから行うことができますか?
Josephはコマンドラインメソッドを提案しました(少し複雑で、Linuxの正規表現はまだ上手ではありません)。しかし、私がまだ端末上にいる間にそうする方法があるかどうか疑問に思いますマウスを使用して。
一般的な回答が得られるといいのですが、私はUbuntuを使用しています。
私はいくつかの不完全な、しかしおそらく有用なアイデアを持っています。
端末のスクロールバーを使用します。
詳細(xterm
を想定して、他の端末では調整が必要になります。)
xterm
では、Ctrl + Button2で表示されるメニューにあります。)less
が-c
オプションで実行されていないことを確認してください(このオプションはLESS
環境変数で有効になっていますが、これにより、実行しようとしていることが妨げられます。オフにするには、-c
と入力する必要があります。)less
コマンドを使用して、上下にスクロールして、コピーする最初の行を画面に表示します。/
検索ではなく、スペースバーまたは他の単純なスクロールキーのみを使用する必要があります。ここでのポイントは、less
を取得してすべての行をターミナルに送信し、コピーできるようにすることです。考えられる問題:スクロールバックバッファーが十分に大きくない可能性があります。 xterm
でsaveLines
リソースまたは-sl
コマンドラインオプションを使用して変更できますが、すでに実行中のxtermで変更する方法がわかりません。
less
の|
(パイプ)コマンドを使用して、テキストをxclip
に送信します。
詳細:
less
コマンドを使用して、上または下にスクロールして、コピーしたいlast行を画面の上部に配置します。最後までコピーする場合は、このステップと次のステップをスキップできます。m
(マーク)コマンドを使用して、選択した終了位置にマークを設定します。マークはそれ自体が便利な機能であり、vi
からすでに知っているはずですが、知らない場合のために: mx マークを設定します。x
は任意の文字にすることができます。 'x 後でそこに戻ります。x
は、m
コマンドで使用したのと同じマーク文字であるか、または「最後まで」の場合は$
である必要があります。そこにxclip
と入力します。Manページ全体をコピーする単純なケースは、次のようになります。 g|$xclipEnter。
警告(つまりちょうど私に起こった恐ろしいこと):xclip
は半バックグラウンドになります、 less
プロセスグループの一部として実行されます。 less
を一時停止し、同じ端末で別のジョブを開始して貼り付けようとすると、機能しません。次に、後でman
/less
ジョブをフォアグラウンドにすると、突然貼り付けが行われます。これはxclip
バグと考える必要があります...
tmux
やscreen
のようなターミナルマルチプレクサーは通常、このような機能を備えており(つまり、スクロールバックバッファーの一部をファイルに保存したり、コマンドにパイプしたり)、通常はとにかくそれらを使用することをお勧めします。そのため、これらの1つを確認することをお勧めします。
概説したように Nixcraftで :
xclip
を取得:
Sudo apt-get install xclip
または
yum install xclip
rPMベースのシステム。
man man | your_magic_here | xclip -selection clipboard
-selection clipboard
代わりに、中マウスクリックで貼り付けを選択します(プライマリ選択と呼ばれます)。ご了承ください your_magic_here
は、特定のユースケースに応じてマニュアルページの必要な部分を選択するテキストフィルター(sed
/awk
/Perl
/...)のプレースホルダーです。 、それはあなたが説明しなかったので、私は例で特定することはできないと思います。
|を使用します(パイプ)コマンドは、Wumpus Qによって回答されたように、マーク付きで少なくなっています。Wumbleyは 2番目のオプション を使用していますが、Teeを使用してリダイレクトして既存のファイルに追加しています目的のためにすでにそこにあります:
|tee >> ~/helpaggregator.txt
私は通常、新しいコマンドを学ぶときに相談する必要があり、それらを統合しておくのが好きなので、既存のファイルをお勧めします。さらに、タブ補完が便利です。
端末プログラムによって異なりますが、ほとんどの端末プログラムには、選択したテキストを保存する機能がありません。
LXTerminal、uxterm、Konsole、およびGNOMEターミナルはすべてこの「機能」を欠いているようですが、それを備えているものもあるかもしれません。端末プログラムのメニュー構造を見てください。「選択を保存」のようなものがあるかもしれません
less
のポケットベルとしてgnome-terminal
およびman
を使用すると仮定すると、次のことができます。
less
for man
を-X
キーで実行して、代替画面を無効にします。例:LESS=-X man less
これにより、man
の出力をターミナルエミュレータの履歴バッファに追加できます。詳細については、この回答を参照してください https://unix.stackexchange.com/a/38638/87918 。
gnome-terminal
でテキストを最後のページから最初にマウスで選択し、マウスをウィンドウの上端にドラッグします。テキスト選択の詳細なプロセスについて説明します ここ :これはGnomeターミナルでは機能しません。代わりに、マウスの左ボタンで選択を開始し、その間にマウスカーソルをウィンドウの端(またはウィンドウの外側)にドラッグします。 G-Tはスクロールして、選択範囲を拡大します。 G-Tのスクロールは十分に速いので、これはかなり便利で直感的なプロセスであり、おそらくxtermのスクロールよりも優れています。