Как проложить невидимую метку под землей в строки текста?

Это также, вероятно, работало бы

chmod +x $(find . -type f -print0 | xargs -0 file | grep "ELF [^,;]* executable" |  cut -d: -f1)

У Вас все еще будут проблемы, если Ваши файлы будут иметь пробелы, вкладки, новые строки, звездочки, вопросительные знаки, угловую скобку или символы обратной косой черты на имена, или если существуют слишком многие из них для помещений в одну командную строку.

3
29.12.2013, 23:53
2 ответа

Нет никакого полностью надежного способа поместить невидимую метку в текстовый файл. Текстовый файл не имеет никакой комнаты ни для чего, что не является простым текстом, в конце концов. Комментарии (текст, который не принадлежит основного текста) являются формой разметки.

Пустые байты являются плохой идеей не только потому, что они могут быть представлены как ^@ или или или другие пути, но также и потому что много инструментов обработки текста дросселируют на них. Пустые байты являются маркером конца строки на языке программирования C, и много программ рассматривают его как конец текстового блока (например, строки, но не обязательно), потому что они записаны в C или пользуются библиотеками, записанными в C.

Если Ваш текст кодируется в Unicode, можно использовать один из его нескольких символов нулевой ширины:

Пробелы не являются составляющими слова, другие. Хотя ни один из этих символов явно не представляется (принятие средства просмотра с разумной поддержкой Unicode), это оказывает влияние при выборе текста, перемещения, поиска, и т.д. Повреждающееся пространство может быть представлено как разрыв строки.

5
27.01.2020, 21:13
  • 1
    Другой прием является символами Unicode, которые похожи на латинские символы. Интересная вещь состоит в том, что то, что дурачит людей, легко определяется программным обеспечением, и наоборот. –  Bandrami 30.12.2013, 12:13

Вы можете grep для пустого указателя или других специальных символов с помощью -P флаг и шестнадцатеричный код:

echo -e "a\0b\nhello" | grep -a -P '\x0'

Вы могли также скрыть текст путем помещения символов возврата после них, например:

$ echo -e "the matrix\0\0\0\0\n\bh\ba\bs\b \by\bo\bu\b\0\0:-)"
the matrix
:-)

$ echo -e "the matrix\0\0\0\0\n\bh\ba\bs\b \by\bo\bu\b\0\0:-)"  | hexdump -C
00000000  74 68 65 20 6d 61 74 72  69 78 00 00 00 00 0a 08  |the matrix......|
00000010  68 08 61 08 73 08 20 08  79 08 6f 08 75 08 00 00  |h.a.s. .y.o.u...|
00000020  3a 2d 29 0a                                       |:-).|
00000024
2
27.01.2020, 21:13
  • 1
    только работают при отображении текста непосредственно в терминале или с некоторыми на терминальном основанными программами. Это не работает у большинства людей инструментов использование для просмотра текстовых файлов (редакторы, браузеры). –  Gilles 'SO- stop being evil' 30.12.2013, 01:18

Теги

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