Чтобы заменить любой //
на /
, вам потребуется очистить watchlist
. Рассмотрим каталог с именем \nabc
(, где \n
— новая строка ):
$ mkdir t
$ mkdir t/$'\nabc'
$ touch t/$'\nabc'/x
При передаче каталога t//$'\nabc'
вы увидите вывод с поддельным //
в конце строк:
$ inotifywait -m -r t//$'\nabc' --format "%e %w%f//"
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
OPEN t//
abc/x//
ATTRIB t//
abc/x//
CLOSE_WRITE,CLOSE t//
abc/x//
Обратите внимание: вы также можете использовать -c
вместо --format
для получения вывода в стиле csv , в котором имена файлов в двойных -кавычках с переводом строки, но это сложнее анализировать, и в моем случае дампы ядра на приведенном выше примере.
Пример вывода для -c
иtouch t/$'new\nfile'
:
t/,CREATE,"new
file"
проблема в том, что вы компилируете его в обычный статический эльфийский формат. вы должны скомпилировать его как исполняемый файл FDPIC -ELF (, потому что вам нужен независимый от позиции исполняемый файл (FDPIC )из-за отсутствия MMU ).
FDPIC ELF не является типом ET _EXEC. это ET _DYN (, это означает, что это общий тип )и он загружается динамическим загрузчиком Linux.
просто добавьте к нему флаг -mfdpic
и отключите встроенный статический двоичный файл в меню kconfig BusyBox.
обратите внимание, что флаг -mfdpic включен по умолчанию в наборах инструментов arm -uclinux -fdpicabi.