La forma de conseguir lo que necesitas es:
chattr +a /testdir
Configure los permisos en el propio directorio para que solo el propietario tenga permisos de escritura.
El interruptor a
hace que los archivos se puedan crear y modificar internamente pero no eliminar.
La página man
para chattr
solo dice lo que hace a
para los archivos, pero de hecho hace lo anterior cuando se usa en un directorio, como descubrí yo mismo cuando buscaba una manera de hacer lo mismo.
Попробуйте эту команду:
sed -e 's/org/export org/g' file2 > varset; source./varset; rm varset; sed -r -e 's/(org[0-9]+)([^0-9])/${\1}\2/g' file1 | envsubst
Это выведет желаемый текст на стандартный вывод. Если вы хотите постоянно записывать эти изменения, добавьте > new_file_name
в конец цепочки команд.
В этой цепочке команд sed сначала использует ваш файл2, чтобы установить ваши переменные в качестве переменных среды, чтобы к ним можно было обращаться последующими командами. Затем он преобразует старые имена в файле 1 в имена переменных, которые оболочка поймет при использовании нами команды source
. Затем это передается команде envsubst
для замены переменных среды, содержащихся в выводе, так что ${org8}
интерпретируется, например, как Xcf
.
Обратите внимание, что это решение несколько уникально для ваших конкретных обстоятельств, и его необходимо скорректировать, если вы хотите применить его более широко.
*РЕДАКТИРОВАТЬ Я адаптировал выражение sed для работы с любым из исходных file1
, которые вы предоставили.