Linuxでクリップボードを操作する:理論と実践

かなりの理論



コピーアンドペスト 歴史的に、X Window System(X11、Linux、UNIX用のウィンドウシステム)には2つのクリップボードがあります。



それらの1つ(クリップボード)はWindowsのクリップボードに似ています-Ctrl + InsertまたはCtrl + Cを押すと、選択したフラグメント(テキスト、画像、ファイル)がクリップボードにコピーされ、Shift + Insert(またはCtrl + V)を押すと-それから挿入。 多くのプログラムでは、これらの組み合わせは他の目的のために予約されており、他のものを使用する必要があることに注意してください-たとえば、端末ではCtrl + Cの組み合わせを使用してプロセスを完了し、クリップボードで作業するにはCtrl + Shift + Cの組み合わせを使用してコピーおよびCtrl + Shift +挿入するV。



2番目のバッファ(プライマリ)は、X11ウィンドウシステムに固有です。 選択したテキストはすぐにプライマリバッファに入り、コピーしたテキストを貼り付けるには、マウスの中ボタン(ホイール)を押すだけです。 3ボタンマウスを使用できないユーザー、およびタッチパッド付きのラップトップの所有者は、左右のマウスボタンを同時に押してテキストを挿入する必要があります。



通常、これらのバッファーは相互に接続されていません(一部のプログラムはそれらを誤って処理し、同じクリップボードと見なします)。 したがって、それらに格納されたデータは互いに影響を与えず、もちろん非常に便利です。 データのコピー元のプログラムを閉じると、クリップボードの内容が失われることに注意してください。





練習する



プログラムを閉じるときにクリップボードからデータを失うという問題を解決するために、サードパーティのソフトウェアがあります。 たとえば、 クリップボードデーモン 。 この小さなデーモンは、データのコピー元のアプリケーションが閉じられたかどうかに関係なく、クリップボードの内容をメモリに保持します。



クリップボードの操作をより快適にするために、いくつかのプログラムがあります。 これらのプログラムは作業を大幅に促進することができます-クリップボードの内容の履歴を保存します-いつでも以前の状態に戻ることができます(もちろん、この制限は通常どおり設定で設定されます)=



また、コマンドラインからクリップボードを操作するように設計されたxclipと呼ばれる、非常に非常に便利な熟練したハンドユーティリティがあります。 テキストのコピーと貼り付けは簡​​単なコマンドで実行されます。これにより、さまざまな補助スクリプトで使用できます。例を以下に示します。



残念ながら、キリル文字を含むxclipの公式バージョンは、最新バージョンを収集しているにもかかわらず、正しく機能しませんでした。 したがって、 Alt Linuxディストリビューション用のxclipバージョンをダウンロードしてコンパイルすることをお勧めします。





スクリプト



毎日の作業を容易にする2つのスクリプトを提供します。 最初のスクリプト:

xclip -o | sed -r '2~1d;s/(^\s+|\s+$)//g;s/%/%25/g;s/#/%23/g;s/\$/%24/g;s/&/%26/g;s/\+/%2B/;s/,/%2C/g;s/:/%3A/g;s/;/%3B/g;s/=/%3D/g;s/\?/%3F/g;s/@/%40/g;s/\s/+/g' | awk '{print "http://www.google.ru/search?hl=ru&q=" $1}' | xargs firefox -new-tab



Firefoxでタブを開き、クリップボードの内容である検索フレーズを使用してGoogleページに移動します。 スクリプトを使用するには、単語、フレーズ、または文を選択してスクリプトを実行するだけです(このスクリプトをホットキーに割り当てることをお勧めします。たとえば、Win + Gの組み合わせがあります)。 もっと詳しく考えてみましょう。
  1. xclipプログラムは、クリップボードの内容を表示します(オプション「-o」)。
  2. さらに、このコンテンツはsedテキストエディターに渡され、最初の行(存在する場合)を除くすべての行が削除され、すべての特殊文字がアドレスバーの安全なオプション(urlencode)に置き換えられます。
  3. 処理された文字列はawkに渡され、結果として得られた検索フレーズがgoogleリンクに追加されます。
  4. 新しいFirefoxタブでリンクが開きます。 すべて=)
2番目のスクリプトは少し単純で、最初のスクリプトから論理的に続きます。

xclip -o | sed -n 1p | xargs firefox -new-tab



クリップボード上のアドレスで新しいタブをFirefoxで開きます(リンクをテキストエディターで見つけた場合など、プレーンテキストでリンクを開く必要があることがよくあります-リンクをコピーして、ブラウザーでタブを開き、コピーしたアドレスを貼り付ける必要があります。あなたのため;)。 Win + Fの組み合わせに割り当てました。



クリップボードはOSのユニバーサルエンティティであるため、これらのスクリプトはどこでも動作します-端末やテキストエディターからFirefox自体まで(ただし、別のブラウザー用に同じスクリプトを構成できます。ボタンを組み合わせてスクリプトに割り当てることができます。 Windowsマネージャー(Gnomeのgconf-editorなど)、およびxmodmapやactkbdなどのサードパーティプログラムの使用。





次は?



はい、何でも=)マウスで強調表示されたフレーズを翻訳することができます。メモのためにそれらをプログラムにコピーすることができます-それはすべてあなたの想像力とニーズに依存します。 もちろん、そのようなことのために別々のプログラムが存在するかもしれませんが、私の意見では、そのような自己記述スクリプトはすべてのユーザーにとって最も便利です-Linuxはあなたがあなたとあなたのためにすべて、絶対にすべてを行うことができるので良いです。





更新 :Parcelliteクリップボードマネージャーへのリンクを追加-ユーザーdrujeboberに感謝



更新2 :Habrauserのリクエストにより、dimakaは翻訳用のスクリプトを追加しました:



Lingvo.yandex.ru:
xclip -o | sed -r '2~1d;s/(^\s+|\s+$)//g;s/%/%25/g;s/#/%23/g;s/\$/%24/g;s/&/%26/g;s/\+/%2B/;s/,/%2C/g;s/:/%3A/g;s/;/%3B/g;s/=/%3D/g;s/\?/%3F/g;s/@/%40/g;s/\s/+/g' | awk '{print "lingvo.yandex.ru/en?st_translate=on&text=" $1}' | xargs firefox -new-tab





Google翻訳(英語からロシア語への翻訳):
xclip -o | sed -r '2~1d;s/(^\s+|\s+$)//g;s/%/%25/g;s/#/%23/g;s/\$/%24/g;s/&/%26/g;s/\+/%2B/;s/,/%2C/g;s/:/%3A/g;s/;/%3B/g;s/=/%3D/g;s/\?/%3F/g;s/@/%40/g;s/\s/+/g' | awk '{print "translate.google.com/translate_t?hl=ru#en|ru|" $1}' | xargs firefox -new-tab





更新3 :「現在のファイルのフルパスをコピーする」項目をMidnight Commanderメニューに追加(ファイルに追加〜/ .mc / menu):

+ ! t t<br>f Copy full filename into clipboard<br>echo -n %d/%f | xclip







_________

テキストはVIMエディターで準備されます;)



All Articles