как автоматом сохранить буфер обмена в файл

PCLinuxOS

Модератор: Bizdelnick

linuxforum0ru
Сообщения: 145

как автоматом сохранить буфер обмена в файл

Сообщение linuxforum0ru »

Здравствуйте.

Возможно ли автоматом сохранить содержимое буфера обмена в текстовый файл? Использую klipper и parcellite, но там такого не нашел.
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: как автоматом сохранить буфер обмена в файл

Сообщение Nazyvaemykh »

Можно использовать пакет xclip. Оно?
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
linuxforum0ru
Сообщения: 145

Re: как автоматом сохранить буфер обмена в файл

Сообщение linuxforum0ru »

А оно может постоянно висеть в памяти и мониторить буфер обмена? Желательно еще, чтобы записывала только HTML-ссылки.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: как автоматом сохранить буфер обмена в файл

Сообщение t.t »

linuxforum0ru писал(а):
26.08.2010 11:14
А оно может постоянно висеть в памяти и мониторить буфер обмена? Желательно еще, чтобы записывала только HTML-ссылки.

Код: Выделить всё

while true; do
  xclip ... | grep '^http://.*\.html$' >файл
done

Как-то так.

upd: Только, конечно, не while true, а что-то вроде while sleep 1m — раз в минуту.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
Anguis
Сообщения: 212
ОС: Manjaro 17

Re: как автоматом сохранить буфер обмена в файл

Сообщение Anguis »

У меня тоже есть вопрос по буферу обмена. Только мне нужно, что-бы содержимое файла загружалось в буфер. Какими средствами такое можно реализовать?
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: как автоматом сохранить буфер обмена в файл

Сообщение Nazyvaemykh »

Той же самой командой xclip с ключом -i
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21350
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: как автоматом сохранить буфер обмена в файл

Сообщение Bizdelnick »

В klipper можно настроить действия, например
echo "%s" >> ~/file
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
linuxforum0ru
Сообщения: 145

Re: как автоматом сохранить буфер обмена в файл

Сообщение linuxforum0ru »

Bizdelnick писал(а):
26.08.2010 15:11
В klipper можно настроить действия, например
echo "%s" >> ~/file


Что-то у меня эта конструкция не работает :(
Спасибо сказали:
linuxforum0ru
Сообщения: 145

Re: как автоматом сохранить буфер обмена в файл

Сообщение linuxforum0ru »

Привет. Кажется разобрался. А можно сделать так, чтобы он еще на автомате все копировал в файл без вывода окна действий?
Копировал сразу всю историю?

Или надо свой софт писать.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: как автоматом сохранить буфер обмена в файл

Сообщение t.t »

linuxforum0ru писал(а):
28.08.2010 18:10
Привет. Кажется разобрался. А можно сделать так, чтобы он еще на автомате все копировал в файл без вывода окна действий?
Копировал сразу всю историю?

Или надо свой софт писать.
Свой «софт» в данном случае — две-три строки на bash с использованием упомянутого xclip.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
linuxforum0ru
Сообщения: 145

Re: как автоматом сохранить буфер обмена в файл

Сообщение linuxforum0ru »

Привет.
Мне надо чтобы новая скопированная строка в буфер не повторялась с предыдущей, чтобы в файл не копировались одинаковые строки.
Как это можно сделать в bash? Как присвоить переменной значение xclip -o | grep 'http://.*' >>файл
чтобы можно было сравнить текущую ссылку с предыдущей?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: как автоматом сохранить буфер обмена в файл

Сообщение drBatty »

linuxforum0ru писал(а):
01.09.2010 20:42
Мне надо чтобы новая скопированная строка в буфер не повторялась с предыдущей

Shell

$ cat skip_eq.sed #!/bin/sed -rnf G s~^(.*)\n\1$~~ # если строки одинаковые, ничего не делаем # т.е. переходим к сл. строке t # разные строки # выводим текущую s~\n.*~~p # и её сохраняем h


Shell

$ cat >test.txt aaa bbb ccc ccc ccc ccc ddd ddd eee fff fff fff


Shell

$ ./skip_eq.sed test.txt aaa bbb ccc ddd eee fff



linuxforum0ru писал(а):
01.09.2010 20:42
Как присвоить переменной значение xclip -o | grep 'http://.*' >>файл
чтобы можно было сравнить текущую ссылку с предыдущей?

не понял вопроса.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: как автоматом сохранить буфер обмена в файл

Сообщение SLEDopit »

linuxforum0ru писал(а):
01.09.2010 20:42
Мне надо чтобы новая скопированная строка в буфер не повторялась с предыдущей, чтобы в файл не копировались одинаковые строки.
А если через одну идет повтор, то все нормально?
linuxforum0ru писал(а):
01.09.2010 20:42
Как это можно сделать в bash?
Имхо, для исключения повторений надо делать так:

Код: Выделить всё

xclip -o | grep 'http://.*' | sort | uniq >> файл
Хотя, если повторы допускаются, но нужно, чтобы они были не друг за другом, то sort из конструкции нужно исключить.

Код: Выделить всё

xclip -o | grep 'http://.*' | uniq >> файл
Имхо, будет производительнее sed скрипта.
drBatty писал(а):
02.09.2010 05:48
не понял вопроса.
видимо человек хочет сравнивать как то для исключения повторений.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: как автоматом сохранить буфер обмена в файл

Сообщение drBatty »

SLEDopit писал(а):
02.09.2010 06:06
xclip -o | grep 'http://.*' | sort | uniq >> файл

как я понимаю, пока sort весь поток не пожрёт, на выход она ничего не отдаст. не?
SLEDopit писал(а):
02.09.2010 06:06
xclip -o | grep 'http://.*' | uniq >> файл
Имхо, будет производительнее sed скрипта.

ещё лучше будет sed-скрипт, в который вставленное условие \~http://\.*~
(кстати, а что домены с точки начинаются?)
SLEDopit писал(а):
02.09.2010 06:06
видимо человек хочет сравнивать как то для исключения повторений.

сложность тут в том, что это не просто текстовый файл, а бесконечный поток. впрочем, я уже написал как сравнивать именно потоки.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: как автоматом сохранить буфер обмена в файл

Сообщение drBatty »

SLEDopit писал(а):
02.09.2010 06:06
А если через одну идет повтор, то все нормально?

вот как раз для такой задачи (если надо хранить ВСЮ историю) sed и хороша. Только памяти будет много жрать. Но тут ИМХО иначе никак. (не, можно той-же sed писать историю в файл, тоже вариант, если нужна одна и та же история всё время, ну что-бы не сохранялся сохранённый 10 лет назад пароль ;) )

PS: а скрипт такой я уже написал.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: как автоматом сохранить буфер обмена в файл

Сообщение SLEDopit »

drBatty писал(а):
02.09.2010 06:32
как я понимаю, пока sort весь поток не пожрёт, на выход она ничего не отдаст. не?
да, так и есть.
drBatty писал(а):
02.09.2010 06:32
ещё лучше будет sed-скрипт, в который вставленное условие \~http://\.*~

Код: Выделить всё

$ for i in `seq 1000000`; do echo http://www.$RANDOM.com >> http_list; done
$ time for i in `seq 1000`; do xclip -o | grep 'http://.*' | uniq >> /dev/null; done

real    0m44.600s
user    0m1.944s
sys     0m49.159s
$ time for i in `seq 1000`; do xclip -o | sed -rn 'G;s~^(.*)\n\1$~~;t;s~\n.*~~p;h' >> /dev/null; done

real    0m33.217s
user    0m2.136s
sys     0m33.094s
sed таки быстрее. был не прав.
drBatty писал(а):
02.09.2010 06:32
(кстати, а что домены с точки начинаются?)

Код: Выделить всё

 $ echo 'http://..
> http://ww' | grep 'http://.*'
http://..
http://ww
drBatty писал(а):
02.09.2010 06:32
сложность тут в том, что это не просто текстовый файл, а бесконечный поток.
я что-то не очень понимаю, в чем принципиальная разница xclip -o и cat file перед пайпом?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: как автоматом сохранить буфер обмена в файл

Сообщение drBatty »

SLEDopit писал(а):
02.09.2010 07:24
sed таки быстрее. был не прав.

на самом деле это от очень многого зависит. sed может и медленнее работать, зависит от реализации...
но две команды в пайпе обычно медленнее, чем проверка внутри sed. (я предлагал перенести проверку из grep в sed)
SLEDopit писал(а):
02.09.2010 07:24
я что-то не очень понимаю, в чем принципиальная разница xclip -o и cat file перед пайпом?

попробуйте

$

cat | sort


и

$

cat | sed ''


И сразу поймёте - sed глотает по строчкам, а sort только целиком, до EOF.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: