Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Консоль: копирование текста  (Прочитано 19938 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Cxms

  • Автор темы
  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #15 : 24 Июля 2015, 03:03:06 »
Знаю, но это не вариант.
Нужно использовать только то что имеется и обойтись без установок пакетов.

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #16 : 24 Июля 2015, 09:45:23 »
Давайте разберемся.
Во первых vi или vim? В ViM можно использовать quotestar("*)-регистр
Цитата: help registers
7. Selection and drop registers "*, "+ and "~
Use these registers for storing and retrieving the selected text for the GUI.
See quotestar and quoteplus.  When the clipboard is not available or not
working, the unnamed register is used instead.  For Unix systems the clipboard
is only available when the +xterm_clipboard feature is present.  {not in Vi}
Во-вторых можно выполнить команду в консоли из командного режима — :!команда
В третьих примерно тоже самое можно сделать с помощью Ctrl-Z - временное прерывание сессии редактирования и выход в командную оболочку. Чтобы вернуться назад в редактор, нужно воспользоваться системной командой "fg", которая переводит фоновый процесс в активный.
В четвертых можно поступить наоброт: по горячим главишам Ctrl+x,Ctrl+e  вызывается редактирование командной строки в редакторе по умолчанию (которым можно назначить ViM) и в котором можно открыть второй буфер/окно/вкладку с подсказками

Но самым "красивым" будет, наверное, использование :w! !bash, которое отправляет текущую строку в консоль, выполняя её
« Последнее редактирование: 24 Июля 2015, 10:24:17 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Viveda

  • Активист
  • *
  • Сообщений: 376
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #17 : 24 Июля 2015, 10:08:09 »
1. vi имя_файла
2. почитать, найти нужную строку, :f (внизу запомнить номер строки).
3. ctrl-z
4. history -s $(sed 'номер_строки!d' имя_файла) 5. Стрелка вверх - получаем нужную команду - редактируем, выполняем.
6. fg - возврат в vi.
7. profit!

 
WBRGDS, Viveda

Оффлайн Pilot6

  • Старожил
  • *
  • Сообщений: 14037
  • Xubuntu 18.04
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #18 : 24 Июля 2015, 11:31:40 »
Оказывается все есть. Надо установить gpm.

sudo apt-get install gpm

Теперь в консоли запустить этот демон

/etc/init.d/gpm start

Можно будет по клику левой кнопки мыши выделять стрелками текст, а по клику колесом или правой - вставлять.
Я в личке не консультирую. Вопросы задавайте на форуме.

Оффлайн Viveda

  • Активист
  • *
  • Сообщений: 376
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #19 : 24 Июля 2015, 11:46:13 »
Pilot6,
Тоже подумал про использование xclip или gpm но:
Знаю, но это не вариант.
Нужно использовать только то что имеется и обойтись без установок пакетов.
WBRGDS, Viveda

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #20 : 24 Июля 2015, 12:02:10 »
Цитировать
Консоль: копирование текста
без граф?
Wars ~.o

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #21 : 24 Июля 2015, 12:31:17 »
В терминале для копирования и вставки не работают стандартные сочетания Ctrl+V, Ctrl+C. Это связано с тем, что исторически Ctrl+C это сочетание клавиш для прерывания текущего процесса. Поэтому, для копирования и вставки при работе в терминале используются сочетания Ctrl+Insert и Shift+Insert соответственно. В Gnome терминале и, наверное, во многих других также работают сочетания Shift+Ctrl+C и Shift+Ctrl+V. Они же указаны в главном меню программы в разделе Правка.

Также в терминале работают сочетания клавиш Ctrl+U, чтобы вырезать текст; и Ctrl+Y для вставки текста. Сочетание Ctrl+U работает особенным образом — в буфер копируется вся текущая строка, введенная в терминале, независимо от того, выбрали вы какой-нибудь текст мышкой или нет, а сама строка пропадает с экрана.

Пользователь решил продолжить мысль 24 Июля 2015, 12:34:41:
Почему бы не использовать две консоли: в одной -- sed, в другой -- открытый файл с номерами строк?

Пользователь решил продолжить мысль 24 Июля 2015, 12:44:46:
http://www.opennet.ru/docs/RUS/bash_scripting_guide/c11620.html
Пример 16-1
« Последнее редактирование: 24 Июля 2015, 12:44:46 от Freezeman »

Оффлайн Viveda

  • Активист
  • *
  • Сообщений: 376
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #22 : 24 Июля 2015, 12:57:02 »
В терминале для копирования и вставки не работают стандартные сочетания Ctrl+V, Ctrl+C. Это связано с тем, что исторически Ctrl+C это сочетание клавиш для прерывания текущего процесса. Поэтому, для копирования и вставки при работе в терминале используются сочетания Ctrl+Insert и Shift+Insert соответственно. В Gnome терминале и, наверное, во многих других также работают сочетания Shift+Ctrl+C и Shift+Ctrl+V. Они же указаны в главном меню программы в разделе Правка.

Также в терминале работают сочетания клавиш Ctrl+U, чтобы вырезать текст; и Ctrl+Y для вставки текста. Сочетание Ctrl+U работает особенным образом — в буфер копируется вся текущая строка, введенная в терминале, независимо от того, выбрали вы какой-нибудь текст мышкой или нет, а сама строка пропадает с экрана.

Ну так не терминал, а консоль. Там это все не работает.
Цитировать

Пользователь решил продолжить мысль [time]24 Июль 2015, 13:34:41[/time]:
Почему бы не использовать две консоли: в одной -- sed, в другой -- открытый файл с номерами строк?

Пользователь решил продолжить мысль [time]24 Июль 2015, 13:44:46[/time]:
http://www.opennet.ru/docs/RUS/bash_scripting_guide/c11620.html
Пример 16-1

Не вижу как это практически реализовать? Что куда перенаправить, что-бы выводился текст в строку ввода консоли?
WBRGDS, Viveda

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #23 : 24 Июля 2015, 15:47:35 »
Говнокод:

Код: (perl) [Выделить]
#!/usr/bin/perl

use Term::ReadKey;
use Term::ANSIColor;

$filename = $ARGV[0];

open(FIL, '<', $filename)
    or die "Could not open file '$filename': $!";;
ReadMode 4; # Turn off controls keys

$pos = $chpos = 0;
while(my $line = <FIL>) {
    $pos = $pos + 1;
    print color('red'), "[$pos]", color('reset'), " $line";  # пишем $_ на STDOUT


    while (not defined ($key = ReadKey(-1))) {
        # No key yet
    }

    if ($key eq 'r') {
        ReadMode 1;

        print color('green');
        print "===== Command Start =====\n";
        print color('reset');

        system($line);  # выполнение комманды из файла

        seek FIL, $chpos, 0;
        $pos = $pos - 1;

        print color('green');
        print "===== Command End =====\n";
        print color('reset');

        ReadMode 4;
    }
    elsif ($key eq 'q') {
        ReadMode 0;
        close;
        exit 0;
    }

    $chpos = tell;
}
print color('red bold'), "EOF\n", color('reset');

ReadMode 0; # Reset tty mode before exiting
close;
exit 0;

Пример:
Цитировать
$ ./reader.pl test.txt
[1] Примечания
[2]
[3] [1]
[4] Некоторые разновидности UNIX (основанные на 4.2BSD) требуют, чтобы эта последовательность состояла из 4-х байт, за счет добавления пробела после !, #! /bin/sh.
[5]
[6] [2]
[7] В shell-скриптах последовательность #! должна стоять самой первой и задает интерпретатор (sh или bash). Интерпретатор, в свою очередь, воспринимает эту строку как комментарий, поскольку она начинается с символа #.
[8]
[9] Если в сценарии имеются еще такие же строки, то они воспринимаются как обычный комментарий.
[10]
[11] #!/bin/bash
[12]
[13] echo "Первая часть сценария."
===== Command Start =====
Первая часть сценария.
===== Command End =====
[13] echo "Первая часть сценария."
[14] a=1
[15]
[16] #!/bin/bash
[17] # Это *НЕ* означает запуск нового сценария.
[18]
[19] echo "Вторая часть сценария."
[20] echo $a  # Значение переменной $a осталось равно 1.
EOF

Для выполнения команды жмём r; для выхода q; для перехода на следующую строку Enter, пробел или любую другую клавишу.

P.S.: В конце файла должна быть пустая строка.
« Последнее редактирование: 24 Июля 2015, 15:59:37 от Freezeman »

Оффлайн Viveda

  • Активист
  • *
  • Сообщений: 376
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #24 : 24 Июля 2015, 16:14:29 »
Ну если еще и сделать возможность редактирования строки перед выполнением (см. условия задачи), то остается еще один вопрос - куда будет идти вывод выполняемой команды?
WBRGDS, Viveda

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #25 : 24 Июля 2015, 16:37:33 »
Ну если еще и сделать возможность редактирования строки перед выполнением (см. условия задачи), то остается еще один вопрос - куда будет идти вывод выполняемой команды?

Does exactly the same thing as exec LIST , except that a fork is done first and the parent process waits for the child process to exit.

Вывод идёт на stdout.

Пользователь решил продолжить мысль 24 Июля 2015, 16:44:20:
В терминале для копирования и вставки не работают стандартные сочетания Ctrl+V, Ctrl+C. Это связано с тем, что исторически Ctrl+C это сочетание клавиш для прерывания текущего процесса. Поэтому, для копирования и вставки при работе в терминале используются сочетания Ctrl+Insert и Shift+Insert соответственно. В Gnome терминале и, наверное, во многих других также работают сочетания Shift+Ctrl+C и Shift+Ctrl+V. Они же указаны в главном меню программы в разделе Правка.

Также в терминале работают сочетания клавиш Ctrl+U, чтобы вырезать текст; и Ctrl+Y для вставки текста. Сочетание Ctrl+U работает особенным образом — в буфер копируется вся текущая строка, введенная в терминале, независимо от того, выбрали вы какой-нибудь текст мышкой или нет, а сама строка пропадает с экрана.

Ну так не терминал, а консоль. Там это все не работает.
Ctrl+U и Ctrl+Y работает. Но буфер работает в пределах запущенной программы.
« Последнее редактирование: 24 Июля 2015, 16:44:20 от Freezeman »

Оффлайн Viveda

  • Активист
  • *
  • Сообщений: 376
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #26 : 24 Июля 2015, 17:00:20 »

Does exactly the same thing as exec LIST , except that a fork is done first and the parent process waits for the child process to exit.

Вывод идёт на stdout.

Разобрался, был не прав.

Цитировать
Ctrl+U и Ctrl+Y работает. Но буфер работает в пределах запущенной программы.

Да, но в случае с vi он не спасает.
WBRGDS, Viveda

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #27 : 24 Июля 2015, 17:18:55 »
Цитировать
Ctrl+U и Ctrl+Y работает. Но буфер работает в пределах запущенной программы.

Да, но в случае с vi он не спасает.

Через Ctrl-Z и fg с nano работает.

Оффлайн Viveda

  • Активист
  • *
  • Сообщений: 376
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #28 : 24 Июля 2015, 17:47:19 »
Freezeman,
GNU nano 2.2.6 - не работает, только что проверил.
WBRGDS, Viveda

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Re: Консоль: копирование текста
« Ответ #29 : 24 Июля 2015, 18:10:13 »
Freezeman,
GNU nano 2.2.6 - не работает, только что проверил.
Блин, у меня на рабочем работает, а на домашнем нет. Обе Xubuntu 14.04.2 LTS.  :o

 

Страница сгенерирована за 0.057 секунд. Запросов: 23.