Какие существуют методы защиты от перезаписи и случайного удаления?

fold в Mac OS X 10.11 не конвертирует CR в LF:

$ perl -E 'say(("aaaa "x17)."\r") for 1..2' | hexdump -C | grep 0d          
00000050  61 61 61 61 20 0d 0a 61  61 61 61 20 61 61 61 61  |aaaa ..aaaa aaaa|
000000a0  61 20 61 61 61 61 20 61  61 61 61 20 0d 0a        |a aaaa aaaa ..|
$ perl -E 'say(("aaaa "x17)."\r") for 1..2' | fold -s | hexdump -C | grep 0d
00000050  0a 61 61 61 61 20 0d 0a  61 61 61 61 20 61 61 61  |.aaaa ..aaaa aaa|
000000a0  61 61 20 61 61 61 61 20  0a 61 61 61 61 20 0d 0a  |aa aaaa .aaaa ..|
$ 

Поскольку даже после fold 0d (CR) все еще присутствуют в выводе ; fold просто вставил 0a (NL) там, где это необходимо.

Если ввод использует перевод строки в Интернете, а принтер требует перевода строки в Интернете, самый простой способ вызвать 0d агностический fold — преобразовать ввод в перевод строки Unix (удалить любой \r в предположении, что они находятся рядом с \n), передать этот вывод в fold, а затем преобразовать вывод fold вернуться к использованию перевода строки в Интернете:

tr -d '\r' < exampleCRLF.txt \
| fold -s \
| awk '{printf "%s\r\n", $0}' \
| lpr -P PrintAdapter

Возможно, более разумно установить dos2unix из системы пакетов (Fink, MacPorts, Homebrew) и использовать ее для преобразования перевода строки.

1
20.02.2017, 11:06
1 ответ

Есть опция bash для защиты от перезаписи при отправке стандартного вывода в файл. Например. cat> file.

Защита от перезаписи с помощью noclobber.

set -o noclobber

Принудительная перезапись:

program >| file2 

Прочитать из: http://www.linuxhowtos.org/Tips%20and%20Tricks/Protecting%20files%20with%20noclobber.htm

Изменить: { {1}} Remove de write permision of dir предотвращает удаление файла, но возможно редактировать этот файл. Создать новый файл невозможно без разрешения на запись в каталог.

с расширенными атрибутами в файловой системе ext2-4, возможно сделать файл несохраняемым, если атрибут не удален. chattr + u file

Есть другие атрибуты для создания файлов только добавляемыми или неизменяемыми. chattr + u file

{1}} Атрибуты, описанные в: Википедия

0
28.01.2020, 01:00

Теги

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