LinuxForum.Fans
Тема

HOWTO: как правильно копипастить в Линуксе

Автор: zhevak 18 сообщений 4822 просмотров
#138154

Умеете ли вы копипастить?

Хы-ы! Казалось бы! А что тут уметь-то!

Ан нет! Смею вас заверить, что не умеете. И делаете вы это по-Вендовому. Хорошо, а как тогда правильно это делать?

Ну, первый способ копировать вы и так знаете -- это есть Вендовый способ. Я его озвучу не ради вашего образования (чему учить, если вы и так его знаете!), а ради нашей 100%-ой взаимопонимаемости.

Итак, первый способ копирования.
1. Выделяем объект (допустим текст) мышкой, но если это возможно, то лучше это делать с помощью клавиатуры -- придавив Shift и нажимая на клавиши со стрелками.
2. Потом нажимаем Ctrl-C или щелкаем правой кнопкой мыши и выбираем пункт "Копировать".
3. Переключаемся на другое окно (приемник)
4. Нажимаем Ctrl-V или щелкаем правой кнопкой мыши и выбираем пункт "Вставить".

Не сложно. Работает почти везде. Вопросов и недоумения почти не возникает. Улучшать способ некуда. Пользуемся постоянно, некоторые даже во сне могут копипастить.

Способ "намбар ту", линуксовый:
1. Выделяем объект мышкой.
2. Переключаемся в окно приемник (или в другое место в том же окне).
3. Нажимаем на "колеско" и ... -- "Voilà!", как сказал бы француз на моем месте. К стати, это слово я закопипастил сюда именно этим способом.

А что делать, если у вас нотик и нет мышки? Одновременное нажатие на две кнопки на тачпаде эквивалентны нажатию на колесо.

Линукс более бережно относится к расходу памяти, и не "лопает" ее гигабайтами. Но за эту аскетичность приходится платить. Линуксовый способ требует чтобы источник копии на момент вставки в приемник существовал. (В сущности -- мизерная плата!) Иначе копирование не получится.

Вы наверно уже сталкивались с этим явлением, когда по необъяснимым причинам копия не получалась. Но самое забавное то, что из-за отсутствия знаний вы тут же вешали на Линукс ярлык "Линукс -- тупая скотина!".

Да. Линукс не создает по три копии (первая -- в источнике, втрорая -- в буфере обмена, третья -- в приемнике). Разве это плохо?

Но еще более забавное то, что окно псевдоконсоли -- это точно такое же окно, как и другие окна, может принимать активное участие в процессе копировании. (Псевдоконсоль -- это графическое окно терминала на "теле" графической консоли).

#138156

Неожиданно :)
А что в этом разделе? У нас что, нет специального для HOWTO? Тогда нужно бы создать.

#138157

А ещё если выделить ссылку и нажать средней кнопкой на + в табах, то ссылка откроется в новом табе!
В винде этого не хватает ой как :(

А ещё, кто объяснит как копировать, например, из браузера в vim открытый в терминале?

#138383
zhevak написал:
Линуксовый способ требует чтобы источник копии на момент вставки в приемник существовал. (В сущности -- мизерная плата!) Иначе копирование не получится.

Не обязательно. Можно использовать менеджер буфера обмена. Klipper, Glipper, Clipman.

#138388
zhevak написал:

Умеете ли вы копипастить?

А под какой лицензией HOWTO? :D

#138393

способ третий:
файл cp.sed

text
#!/bin/sed -rnf

\~<div id="post[0-9]+" class="entry-content">~{ t begin :begin N /<span class="sig-line">/{ s/\r/ /g s~<p>|<br(\s*/)?>~\n~g s~</p>~~g s~&quot;~"~g s~</span>~\r&~g t l1 :l1 s~<span style="color:\s*(\w+)">([^\r]*)\r</span>~[color=\1]\2[/color]~ t l1 s~\r~~g s~</strong>~\r&~g t l2 :l2 s~<strong>([^\r]*)\r</strong>~[b]\1[/b]~ t l2 s~\r~~g s~</em>~\r&~g t l3 :l3 s~<em>([^\r]*)\r</em>~[i]\1[/i]~ t l3 s~<div id="post[0-9]+"(\s+[^>]+)?>~~ s~\s*<p class="lastedit">[^\n]*\n~~ s~<div class="sig-content">[^\n]*~~ p q } b begin }

[console]$ curl -o x.html "http://linuxforum.ru/viewtopic.php?id=11710"
$ chmod +x cp.sed
$ ./cp.sed x.html[/console]

#138398

surf, мой скрипт - полностью Свободен. Я разрешаю даже его авторство присвоить - вы можете использовать его НА ЛЮБЫХ условиях.
подробности про sed (правда подробности уже под FDL)

#138411
drBatty написал:
surf, мой скрипт - полностью Свободен. Я разрешаю даже его авторство присвоить - вы можете использовать его НА ЛЮБЫХ условиях.
подробности про sed (правда подробности уже под FDL)

drBatty спасибо за подарок! Я подумаю, может сделаю с него еще один M$ :D

#138450
zhevak написал:
Способ "намбар ту", линуксовый:
1. Выделяем объект мышкой.
2. Переключаемся в окно приемник (или в другое место в том же окне).
3. Нажимаем на "колеско" и ... -- "Voilà!", как сказал бы француз на моем месте. К стати, это слово я закопипастил сюда именно этим способом.

так и делаю
очень удобно

#139150
SkaarjZR написал:
А ещё, кто объяснит как копировать, например, из браузера в vim открытый в терминале?

В иксовом терминале? Или в том, который по Ctrl+Alt+F1
В первом случае - так же, колесиком мыши; во втором - по-моему, никак.

#139160

В направлении псевдоконсоли можно еще и методом Drag-n-Drop.

Расшифровка для новичков
1. Открываем два окна gnome-terminal и gedit
2. В редакторе набираем текст, например, давайте наберем безопасную команду ls -l
3. Выделяем текст (можно мышкой, можно клавой)
4. Подводим курсор мыши на выделенный текст, нажимаем левую кнопку, НЕ ОТПУСКАЯ переносим текст в окно псевдоконсоли. Там и отпускаем кнопку.
5. Остается только нажать Enter в псевдоконсоли.

К сожалению, обратное по методу перетащи-и-брось не работает. Только колесиком.

Копирование в обычную консоль (которая по Alt-Fх), я так думаю, что наверно никак. Потому что буферы обмена они закреплены за пользователем. Представьте себе, что Вы юзаете графическую консоль, а кто-то, кто тоже имеет учетную запись, открыл текстовую консоль. Открыл и отошел на пару часиков, оставив выделенный участок текста. Ну или что-то в буфере обмена. А в это время Вы что-то в своей графической консоли копируете. Если буферы обмена будут совмещены, то Вы, получается, напортите другим пользователям.

Но это ладно, Вы знаете, что ваш товарищ уходя не закрыл консоль. А ведь он мог и по сети зайти на комп. Тут вообще Вы вилы. Прежде чем копировать, вам придется проверять, кто еще юзает комп. Допустим, Вы увидели, на компе еще пара человек -- и... Ваши действия?

Если на графической консоли открывается множество (текстовых) псевдоконсолей, то они автоматически принадлежат Вам. Это ведь совершенно иная ситуация по сравнению с обычными текстовыми консолями, которые могут принадлежать кому угодно. Т.е. с копированием между консолями возникают очень большие трудности. Поэтому мне кажется, что копировать -- никак.

... тут Остапа понесло:
Только не надо сетовать, что тут в Линуксе что-то не доделано. Все как раз доделано. Нужно вспомнить, что Линукс -- это реально многопользовательская ОС. В отличие от Виндовз, где многопользовальские функции были притянуты позже на парадигму однопользовательского ядра. Вспомните, что Виндовз изначально была ПЕРСОНАЛЬНАЯ. А корни Линукса ведут в мир больших многопользовательских компов, где действует правило любые действия пользователя не должны навредить другому пользователю.

А вообще, спасибо за вопрос. Самому было интересно разобраться.

#139260
zhevak написал:
Копирование в обычную консоль (которая по Alt-Fх), я так думаю, что наверно никак.

вообще для копипаста я использую http://linuxforum.ru/viewtopic.php?id=11181
вот так:
1) копируем текст в любом браузере/редакторе/где угодно. Я выделяю мышкой/ПКМ/копировать. ибо кнопками неудобно. да и везде по разному.
2)
[console]$ cat >file.txt[/console]
3) вставляю. вставка работает по CTRL+SHIFT+V. я использую Terminal & Konsole
4) CTRL+D значит "конец файла".

ЗЫЖ про VIM. Он оказывается тоже поддерживает графический буфер обмена. Если конечно собран с соотв. опциями. Называется он по vimему - звёздочка (*).

ЗЗЫЖ mcedit поддерживает свой буфер в файле coledit.clip, или использует иксовый (если он доступен конечно).

#139266
zhevak написал:
Поэтому мне кажется, что копировать -- никак.

можно как-то. только это надо gdm включить - драйвер мыши в ОБЫЧНОЙ консоли. Тогда можно скопировать в какой-нибудь файл, и сделать его доступным для всех. Например так:
[console]$ touch /tmp/share.txt
$ chmod 666 /tmp/share.txt[/console]
этот файл может читать и изменять кто угодно (удалить может только хозяин), и через него можно обмениваться любой информацией.
намного большие возможности предоставляет утилита screen, например она позволяет новичку наблюдать за действиями гуру (в своём терминале видно как работает другой человек). Кроме того, можно двум юзерам через screen соеденится с одной и той-же консоли. Также можно что угодно копипастить куда угодно.

Обычно screen используется для удалённого администрирования чужого сервера. Клиентскую машину можно перезагружать, на линии могут быть сколько обрывов, но сессия не прерывается, ибо на сервере есть screen :cool:

Только не надо сетовать, что тут в Линуксе что-то не доделано

да всё доделано. просто обычно это не нужно. я например практически никогда не юзаю консоль по CTRL+ALT+Fn, ибо не нужно. Она у меня даже не русифицированная :)

#139299
zhevak написал:
Способ "намбар ту", линуксовый:
1. Выделяем объект мышкой.
2. Переключаемся в окно приемник (или в другое место в том же окне).
3. Нажимаем на "колеско" и ... -- "Voilà!", как сказал бы француз на моем месте. К стати, это слово я закопипастил сюда именно этим способом.

Вообще то это фича в linux не давно появилась, в винде это тоже можно реализовать =)

#139328
bobr написал:
В иксовом терминале? Или в том, который по Ctrl+Alt+F1
В первом случае - так же, колесиком мыши; во втором - по-моему, никак.

У меня в терминал нормально копируется, если vim запущен от пользователя. Но если vim запущен от рута, то не копируется :(

#139346
SkaarjZR написал:
Но если vim запущен от рута, то не копируется

это в целях безопасности. кстати, а вы уверенны, что это именно viM? может это просто vi?
если всё-же это vim, и вам это реально нужно, поправьте /root/.vimrc можете просто тупо взять его у юзверя, или стереть нафиг (если сотрёте, будет работать общий из /usr/share/vim)

#139348

SkaarjZR, да, ещё забыл сказать: никто не имеет доступа к иксам юзера. даже рут. вы можете это отменить, командой
[console]$ xhost +local:root[/console]
причём команду должен выполнить тот, кто иксы запустил.

Войдите или зарегистрируйтесь, чтобы ответить.