Изменение 3-го символа в строке

Это зависит от того, какой менеджер пакетов вы используете и какая у вас среда.

Linux сам по себе не имеет таких инструментов, потому что многие программы существуют для Linux, и многие из них могут требовать специальной обработки файлов или режимов выполнения (т.е. setuid двоичные файлы или каталоги типа почтового ящика с назначенными специальными привилегиями), в отличие от Mac (я предполагаю OS X), потому что Mac более закрытый пул и разработчики OS X знают, какие программы будут предустановлены на типичный Mac и имеют рекомендации по установке пакетов.

Если менеджер пакетов может отлаживать такие проблемы, то - отлично, вам следует проверить документацию по менеджеру пакетов на этот счет.

Если вы запутались в корневой файловой системе, то безопасно сначала сделать резервную копию текущего списка привилегий:

find / -xdev -exec ls -ld '{}' ';' >>/root/perms.lst
(do that for each mount point related to system binaries, for example, /usr)

затем сбросить все обратно в root (0:0). Если у вас были какие-либо специальные setuid двоичные файлы, которые будут затронуты таким сбросом, вы сможете сбросить их статус позже, изучив файл /root/perms.lst.

Для разрешений chmod сложнее посоветовать что-то вроде chmod 644 или chmod 755, вы должны изучить свои файлы перед внесением изменений, потому что это может быть связано с безопасностью.

1
31.07.2018, 11:48
1 ответ

Сsed:

sed 's/^\(..\)./\11/' infile > expected_result

(..)известно как групповое совпадение, и оно захватывает первые два символа, а \1является обратной ссылкой -. точка .в регулярном выражении соответствует любому одиночному символу.

если это было не 3 rd место, а N th , вы можете сделать следующее, чтобы изменить 3 rd символ места с 1.

sed 's/^\(.\{2\}\)./\11/' infile

Или как показано ниже, как указано @steeldriver:

sed 's/./1/3' infile
3
27.01.2020, 23:14

Теги

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