12 июня 2010 г.

Xclip и работа с буфером обмена

xclip - программа для работы с буфером обмена из командной строки, точнее для обмена через буфер между консолью и графическими приложениями.
Соответственно у программы нет графического интерфейса. Примеры использования:
xclip file поместит содержание указанного файла (если нужно, то пишется полный путь к файлу) в буфер обмена
command | xclip поместит в буфер вывод команды (вместо команды можно указать и файл, тогда выйдет то же, что в предыдущем примере)
xclip -o > file поместит содержимое буфера обмена в файл
xclip -o просто выведет содержимое буфера
Ну и ещё несколько опций можно найти в мане - они могут понадобиться для скриптов.

Кстати, интересная деталь - в Linux два независимых друг от друга буфера обмена:

  • Первый работает через пункты "Копировать", "Вырезать", "Вставить" в контекстном меню или меню "Правка" программ или через сочетания клавиш Ctrl+C, Ctrl+X, Ctrl+V. То есть так же как в Windows , правда не во всех программах работают именно эти сочетания: например, в консоли, Ctrl+C завершает процесс, а копирование происходит по Ctrl+Shift+C, также операция копирования может производиться по Ctrl+Insert, а вставка по Shift+Insert.
  • Второй управляется мышью и содержит всегда любой выделенный текст, а для его вставки нужно использовать среднюю клавишу мыши, либо щелчок колёсиком, в зависимости от модели мыши, либо при отсутствии того и другого - одновременный щелчок правой и левой клавишами мыши.
Ещё выделенный текст можно перетаскивать (гораздо сводобнее, чем в Windows - не только внутри одной программы, например), но я не в курсе, имеет ли к этому отношение буфер обмена.
Так вот xclip работает именно со вторым буфером обмена.

Собственно узнала я об этой утилите, когда надо было запостить какой системный конфиг на pastebin-сервис. Через xclip это удобнее, чем открывать файл, вручную его копировать и вставлять на сайт.
Чуть позже я наткнулась на информацию об утилите ещё более упрощающей подобный процесс.
pastebinit file помещает содержимое файла на сервис и выдаёт ссылку
command | pastebinit делает то же самое с выводом указанной команды

По умолчанию текст размещается на сайте pastebin.com, но программа поддерживает много сервисов:

Для использования одного из них в команду следует добавить опцию -b: pastebinit -b paste.debian.net file
Плюс есть ещё пара опций - -a для указания автора (по умолчанию используется имя пользователя) и -f формат вставленного текста (на сервисах подерживается подсветка синтаксиса, правда мне не удалось этого добиться командой). А чтобы не прописывать каждый раз выбранные параметры в строке целесообразно создать алиас в .bashrc.

pastebinit есть в стандартных репозиториях Ubuntu.
А в стандартных репозиториях ArchLinux есть подобная ей программа wgetpaste. Она поддерживает 5 разных сервисов (по умолчанию paste.pocoo.org), но опций у неё побольше (например, можно задать продолжительность хранения) и есть подсказка по используемым языкам (и тут это действительно получается).
Там же очень похожая на неё программа curlpaste. Поддерживает 6 сервисов, по умолчанию используется codepad.org, опции почти как у предыдущей, но есть ещё опция, позволяющая отправлять текст как приватный.
У обеих программ справка крайне понятная (вызывается опцией --help)

1 комментарий: