Если ваш $ 1
является чистым ASCII, а ваш grep
имеет параметр -P
(чтобы включить PCRE), вы можете сделать это:
#!/bin/bash
line_start="$1"
line_start_raw=$(printf '%s' "$line_start" | od -v -t x1 -An)
line_start_hex=$(printf '\\x%s' $line_start_raw)
grep -P "^$line_start_hex"
Идея в том, что grep -P
позволяет регулярным выражениям с \ xXX
указывать буквенные символы, где XX
- шестнадцатеричное значение ASCII этого символа. Символ соответствует буквально, даже если в противном случае это специальный символ регулярного выражения.
od
используется для преобразования ожидаемого начала строки в список шестнадцатеричных значений, которые затем объединяются вместе, каждое с префиксом \ x
с помощью printf. Затем к этой строке добавляется ^
для построения необходимого регулярного выражения.
Если ваш $ 1
является юникодом, то это становится немного сложнее, потому что не существует соответствия 1: 1 символов шестнадцатеричным байтам, выводимым с помощью od
.
/ boot
, / usr
и / usr / local
доступны только для чтения, кроме когда вы добавляете или обновляете программное обеспечение. Остальным нужен постоянный доступ для записи.
Из тех, что вы перечислили, иерархии root, /boot
и /usr
(и /usr/local
как часть /usr
) могут быть смонтированы только для чтения, если только не требуется обновление установленного программного обеспечения.
/var
по определению является переменными данными и должен быть доступен для записи, /tmp
также должен быть доступен для записи, чтобы иметь возможность создавать временные файлы, и пользователи будут расстроены, если /home
будет смонтирован только для чтения...
Корень (/
) может быть смонтирован только для чтения, если все каталоги, которые требует записи, смонтированы отдельно и на разделах с возможностью записи.
Каталоги, которые требуют записи, это: /etc
, /home
, /srv
, /tmp
, и /var
.
Дальнейшее чтение: https://wiki.debian.org/ReadonlyRoot