Как сказано в хаосе, создание файла допустимым XML-файлом и использование xmlstarlet
или аналогичного инструмента обработки xml (например, xsh
) - это «правильный» ответ ... но если вы просто хотите создать простой шаблон, вы должны изменить свой входной файл, чтобы легко находить и заменять токены в тех местах, которые вы хотите изменить. Например:
<controller-host>__CONTROLLER__</controller-host>
<controller-port>__PORT__</controller-port>
<tier-name>__HOSTNAME__</tier-name>
<node-name>__NODENAME__</node-name>
Затем вы можете использовать любой из обычных инструментов (awk, sed, perl, ruby, что угодно), чтобы заменить __ CONTROLLER __
и т.д. на фактические значения, которые вы хотите, чтобы они имели.
ПРИМЕЧАНИЕ: очень важно использовать строки, которые иначе не встречаются в тексте - поэтому я использовал __
как часть заменяемых строк, например __ PORT __
, а не только PORT
.
Это работает для очень простых шаблонов - если вам нужно сделать более сложные шаблоны, многие языки имеют очень сложные библиотеки шаблонов - например, perl
имеет Text :: Template
(и многие другие - это общая проблема, которая вдохновила на множество решений)
En el contexto de Linux, FS_IOC_GETFLAGS
y FS_IOC_FSGETXATTR
recuperan indicadores de inodo.
GETFLAGS
es el más antiguo ioctl
, y proviene originalmente deext2
(nuevamente, en Linux ); manipula un valor de 32 -bits y, por lo tanto, tiene capacidades de expansión limitadas: no hay muchos bits sin usar disponibles.
FSGETXATTR
proviene de XFS, y recientemente (2016 )se movió de XFS a la capa VFS compartida. Utiliza una estructura de datos, struct fsxattr
, que permite más valores y más expansión.
Ambos, y los significados de los datos que devuelven, se definen enlinux/fs.h
. Las banderas GETFLAGS
se documentan adicionalmente enioctl_iflags(2)
. Los valores comunes entre los dos corresponden principalmente a las banderas GETFLAGS
que históricamente fueron compatibles con XFS:"agregar solo", "sin actualizaciones temporales", "sin volcado", "inmutable" y "actualizaciones sincrónicas".
Tenga en cuenta que, en ambos casos, la compatibilidad varía de un sistema de archivos a otro y, en realidad, algunas banderas no se admiten en absoluto.
FS_IOC_GETFLAGS
es una interfaz para acceder a los indicadores de archivo de estilo BSD. Simplemente usa una interfaz mucho peor que *BSD, ya que necesita abrir el archivo para obtener acceso. *BSD tiene esta información en struct stat
, por lo que si desea obtener la información relacionada en las entradas /dev/ en Linux, puede hacer que una unidad de cinta se rebobine en su medio.
FS_IOC_FSGETXATTR
es una interfaz similar pero aparentemente incompatible de XFS que parece ser compatible con ext4 también desde septiembre de 2015.
Conclusión :ambas interfaces están mal diseñadas ya que necesitan abrir el archivo para poder acceder. A los mantenedores no parece importarles sus interfaces, ya que no informan a los usuarios importantes como star
, que puede realizar copias de seguridad y restaurar las banderas desde la interfaz FS_IOC_GETFLAGS
.