Есть ли какой-либо управляющий символ или хак для предотвращения отображения последующих данных простыми инструментами командной строки?

Нет необходимости иметь его где-то еще, чтобы скопировать его:

Во-первых, подтвердите, что ваш обычный пользователь имеет идентификатор "1000":

id

Затем

 sudo mkdir -p /.Trash-1000/{expunged,files,info}  

 sudo chown -R $USER /.Trash-1000

Проверьте здесь

https://askubuntu.com/questions/262817/unable-to-find-or-create-trash-directory

3
08.09.2019, 02:55
1 ответ

Одним из «решений» может быть использование альтернативного буфера экрана, который поддерживают многие (, но не все )терминалы. Рассмотрим следующую команду:

printf "Hello, \e[?1049h ABCDEFG \e[?1049l World\n"

На терминале, поддерживающем альтернативные буферы экрана, вы увидите

Hello,  World!

возможно, с очень внезапной вспышкой терминала.

Последовательность \e[?1049hзаставит терминал переключиться на альтернативный экранный буфер, где все, что будет напечатано впоследствии, окажется. Последовательность \e[?1049lпереключает обратно в буфер главного экрана.

Пример с php:

<?php
echo "Hello";
// Nothing to see here...^[[?1049h
echo ", World!\n";
//^[[?1049l
?>

, где ^[представляет escape-символ.

Альтернативный экранный буфер используется многими программами, которые любят создавать пользовательские интерфейсы терминала, но хотят восстановить содержимое терминала после закрытия. Вот как less может отображать содержимое, используя все окно, но при выходе все предыдущие команды все еще видны. Если у вас установлен unbuffer , вы можете проверить это:

$ unbuffer less -f /dev/null | xxd
00000000: 1b5b 3f31 3034 3968 1b3d 0d0d 1b5b 4b1b .[?1049h.=...[K.

, как видите, первое, что печатается, это \x1b[?1049h, что заставляет терминал переключать экранные буферы.

Это не будет работать ни в одном из известных мне редакторов (, ), поскольку большинство редакторов не пытаются отображать непечатаемые -символы.

5
27.01.2020, 21:15

Теги

Похожие вопросы