Здравствуйте.
Подскажите пожалуйста, если я копирую текст используя Ctrl+C, в каком файле хранятся данные буфера обмена?
Но просто я думал, чтов Альте можно как-то самому, напрямую обратиться к файлам буфера. Просто у меня если честно, ум за разум заходит. Я не так давно пользуюсь Linux и многое мне не привычно и не понятно.
Если не используется стороннее приложение или плагин, перехватывающие комбинации Ctrl+c Ctrl+v, то эти комбинации работают с областью памяти выделенной под буфер обмена. Нет принципиального значения какая это операционная система: с таким же успехом это может быть и ZX Spectrum.
'xclip -o' извлекает содержимое буфера обмена и выводит на стандартный вывод, т.е. в данном случае в терминал.
Статью про xclip я читал, спасибо.
Там не про xclip, там про его использование в скриптах. Про xclip автор ничего не сказал.
Но вы же понимаете, что иногда результат может быть отличным от ожидаемого.
Результат может быть таким
$ echo 'grep . $HOME/.cache/xfce4/clipman/textsrc' | xclip
$ xclip -o
grep . $HOME/.cache/xfce4/clipman/textsrc
[user@comp release]$ _
Или таким:
grep . $HOME/.cache/xfce4/clipman/textsrc
$ ^C # Копирование в буфер обмена выделенного фрагмента
$ xclip -o
grep . $HOME/.cache/xfce4/clipman/textsrc[user@comp release]$ _
Все зависит от того,
есть ли управляющие коды в скопированном в буфер обмена фрагменте
$ echo 'grep . $HOME/.cache/xfce4/clipman/textsrc' | xclip
$ xclip -o > 1.txt
$ hexdump -C 1.txt
00000000 67 72 65 70 20 2e 20 24 48 4f 4d 45 2f 2e 63 61 |grep . $HOME/.ca|
00000010 63 68 65 2f 78 66 63 65 34 2f 63 6c 69 70 6d 61 |che/xfce4/clipma|
00000020 6e 2f 74 65 78 74 73 72 63 0a |n/textsrc.|
0000002a
или их нет
grep . $HOME/.cache/xfce4/clipman/textsrc
$ ^C # Копирование в буфер обмена выделенного фрагмента
$ xclip -o > 2.txt
$ hexdump -C 2.txt
00000000 67 72 65 70 20 2e 20 24 48 4f 4d 45 2f 2e 63 61 |grep . $HOME/.ca|
00000010 63 68 65 2f 78 66 63 65 34 2f 63 6c 69 70 6d 61 |che/xfce4/clipma|
00000020 6e 2f 74 65 78 74 73 72 63 |n/textsrc|
00000029
Эту таблицу можно найти в каждой третьей мало-мальски приличной книге по ZX Spectrum:
(см. хэкс код 0A - код перевода строки)
https://www.asciitable.com/Все символы с кодом меньше чем у пробела, это управляющие коды. С их помощью можно сделать много полезных или много полезных вредных вещей.
Во второй группе примеров, приглашение bash "порезалось", поскольку фрагмент не имеет завершающего кода перевода строки 0A.
mcedit работающий в tty, без X-сов, имеет свой файл буфера обмена с которым он работает по комбинациям клавиш Ctrl+Ins Shift+Ins
$HOME/.local/share/mc/mcedit/mcedit.clip
Принцип тот же:
Чтобы приглашение bash не резалось при выводе буфера mcedit в терминал, содержимое буфера должно оканчиваться управляющим кодом перевода строки.
Но соль в том, что в mcedit этого никогда не произойдёт, поскольку теряется смысл буфера mcedit, иначе после вставки фрагмента из буфера mcedit, после фрагмента будет сделан перевод строки по управляющему коду 0ah
$ hexdump -C ~/.local/share/mc/mcedit/mcedit.clip
00000000 62 69 72 64 |bird|
00000004
Как это может работать в контексте буфера mcedit?
При выводе содержимого буфера mcedit в терминал может показаться что буфер mcedit пуст
[user@comp release]$ cat $HOME/.local/share/mc/mcedit/mcedit.clip
[user@comp release]$
$ cat $HOME/.local/share/mc/mcedit/mcedit.clip | wc -l
0
но на самом деле это не так, - после символов фрагмента содержащегося в буфере mcedit стоят символы управляющиго кода backspace, они-то и скрывают содержимое буфера mcedit при его выводе в терминал:
$ cat $HOME/.local/share/mc/mcedit/mcedit.clip | wc -c
8
$ hexdump -C $HOME/.local/share/mc/mcedit/mcedit.clip
00000000 62 69 72 64 08 08 08 08 |bird....|
00000008
Не пугайтесь этих линуксовых заморочек. Всё это справедливо для всего, что хоть как-то можно назвать компьютером. И ZX Spectrum или БК-0010 не исключение.
Здесь всё это не об использовании xclip или чего-то подобного, а бегло о том, с чем вы можете столкнуться (ну или не столкнуться
) при работе с буфером.
Подобные приёмы на платформе ZX Spectrum применялись против тех, кто не имел никакого отношения к платформе и ничего не сделал для неё, но желал не ударив палец-о-палец, по-быстрому срубить денег.