Как заставить diff печатать не -символы ascii в именах файлов?

Если у вас есть доступ к chroot, есть хак , который работает на последних ядрах . По крайней мере, это работает на Linux v4.17. Я не думаю, что он совместим с оболочкой -, но с python все в порядке.

(Обратите внимание: вы можете получить возможность chroot, если у вас есть доступ к пространствам имен пользователей. Используйте unshare -rm --propagation slaveили аналогичный.)

# mount --bind / /mnt
# mount --make-slave /mnt    # don't propagate submounts back to /
# mount --bind / /mnt

Теперь у нас есть овермаунт, давайте исследуем его.

# python3
...
>>> import os
>>> os.chdir("/")
>>> os.system("grep mnt proc/self/mountinfo")
231 73 253:0 / /mnt rw,relatime shared:1 - ext4 /dev/mapper/alan_dell_2016-fedora rw,seclabel
352 231 253:0 / /mnt rw,relatime shared:281 - ext4 /dev/mapper/alan_dell_2016-fedora rw,seclabel
0

>>> os.chroot("/mnt")
>>> os.system("cat proc/self/mountinfo")
352 231 253:0 / / rw,relatime shared:281 - ext4 /dev/mapper/alan_dell_2016-fedora rw,seclabel
0

Этот результат показывает, что есть доступная файловая система, смонтированная на /mnt, и это файловая система с идентификатором монтирования 352 и т. д.

1
07.08.2020, 01:52
1 ответ

Это проблема реализации GNU diff.

Вы можете использовать реализацию UNIX diff вместо gdiff.

Портативная версия команды diff UNIX является частью schilytools, проверьте:

/usr/bin/diff -r f??
diff -r foo/a "f\366\366/a"
1c1
< a
---
> b

против:

/opt/schily/ccs/bin/diff -r f??
diff -r foo/a föö/a
1c1
< a
---
> b

/opt/schily/ccs/bin/diff -version
diff schily-SCCS version 5.09 2020/07/14 (x86_64-unknown-linux-gnu)

Исходная загрузка находится по адресу:http://sourceforge.net/projects/schilytools/files/

0
18.03.2021, 23:14

Теги

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