Este es el comando xargsposix que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
xargs: construye listas de argumentos e invoca la utilidad
SINOPSIS
xargs [−ptx] [−mi eofstr] [−yo responder| −L número| −n número]
[−s tamaño] [utilidad [argumento...]]
DESCRIPCIÓN
El xargs La utilidad construirá una línea de comando que consta de la utilidad y argumento
operandos especificados seguidos de tantos argumentos leídos en secuencia desde la entrada estándar como
se ajustan a las restricciones de longitud y número especificadas por las opciones. los xargs la utilidad debe
luego invoque la línea de comando construida y espere a que se complete. Esta secuencia debe
repetirse hasta que ocurra una de las siguientes situaciones:
* Se detecta una condición de fin de archivo en la entrada estándar.
* Un argumento que consta solo de la cadena lógica de fin de archivo (consulte la −mi eofstr
opción) se encuentra en la entrada estándar después del procesamiento de comillas dobles,
procesamiento, y -Procesamiento de escape (consulte el párrafo siguiente). Todos los argumentos arriba
para, pero sin incluir, el argumento que consiste solo en la cadena lógica de fin de archivo
se utilizarán como argumentos en líneas de comando construidas.
* Una invocación de una línea de comando construida devuelve un estado de salida de 255.
La aplicación debe asegurarse de que los argumentos en la entrada estándar estén separados por
no cotizado personajes, sin escapar personajes, o caracteres. A
cadena de cero o más comillas no dobles ('"') personajes y no los personajes pueden
citar encerrándolos entre comillas dobles. Una cadena de cero o más no
('\' ') personajes y no Los caracteres se pueden citar encerrándolos en
caracteres. Cualquier carácter sin comillas puede escaparse precediéndolo con un
. La utilidad nombrada por utilidad se ejecutará una o más veces hasta que el
se alcanza el fin de archivo o se encuentra la cadena lógica de fin de archivo. Los resultados son
sin especificar si la utilidad nombrada por utilidad intenta leer desde su entrada estándar.
La longitud de la línea de comando generada será la suma del tamaño en bytes de la utilidad
nombre y cada argumento tratado como cadenas, incluido un terminador de byte nulo para cada uno de
estas cadenas. los xargs La utilidad limitará la longitud de la línea de comando de modo que cuando la
se invoca la línea de comando, las listas combinadas de argumentos y entornos (consulte la ejecutivo familia
de funciones en el volumen de Interfaces del sistema de POSIX.1‐2008) no debe exceder
{ARG_MAX} −2048 bytes. Dentro de esta restricción, si ni el −norte ni la −s opción es
especificado, la longitud de la línea de comando predeterminada será al menos {LINE_MAX}.
OPCIONES
El xargs La utilidad deberá cumplir con el volumen de Definiciones Básicas de POSIX.1‐2008, Sección
12.2, Utilidad Sintaxis Líneas directrices.
Se admitirán las siguientes opciones:
−mi eofstr Usa eofstr como la cadena lógica de fin de archivo. Si −mi no se especifica, es
sin especificar si la cadena lógica de fin de archivo es la personaje
('_') o la capacidad de cadena de fin de archivo está deshabilitada. Cuando eofstr es el nulo
cadena, la capacidad lógica de cadena de fin de archivo se desactivará y
los caracteres se tomarán literalmente.
−yo responder
Modo de inserción: utilidad se ejecuta para cada línea lógica desde la entrada estándar.
Los argumentos en la entrada estándar deben estar separados solo por
personajes, no por caracteres. Cualquier no citado sin escape caracteres
al principio de cada línea se ignorará. El argumento resultante será
insertado en argumentos en lugar de cada aparición de responder. Al menos cinco
argumentos en argumentos cada uno puede contener una o más instancias de responder. Cada
de estos argumentos construidos no puede crecer más que una implementación definida
límite mayor o igual a 255 bytes. Opción −x será forzado.
−L número El utilidad se ejecutará para cada no vacío número líneas de argumentos de
entrada estándar. La última invocación de utilidad será con menos líneas de
argumentos si menos de número permanecer. Se considera que una línea termina con el
primero a menos que el último carácter de la línea sea un ; un seguimiento
Señala la continuación de la siguiente línea no vacía, inclusive.
−norte número invocar utilidad utilizando tantos argumentos de entrada estándar como sea posible, hasta número
(un entero decimal positivo) argumentos como máximo. Se utilizarán menos argumentos
Si:
* La longitud de la línea de comando acumulada excede el tamaño especificado por el −s
opción (o {LINE_MAX} si no hay −s opción).
* La última iteración tiene menos de número, pero no cero, los operandos restantes.
−pag Modo de aviso: se pregunta al usuario si ejecutar utilidad en cada invocación.
Modo de seguimiento (−t) está activado para escribir la instancia de comando que se ejecutará,
seguido de un mensaje de error estándar. Una respuesta afirmativa leída de
/ dev / tty ejecutará el comando; de lo contrario, esa invocación particular de
utilidad se omitirá.
−s tamaño invocar utilidad utilizando tantos argumentos de entrada estándar como sea posible produciendo un
longitud de la línea de comando menor que tamaño (un entero decimal positivo) bytes. Menos
se utilizarán argumentos si:
* El número total de argumentos excede el especificado por el −norte .
* El número total de líneas excede el especificado por el −L .
* El final del archivo se encuentra en la entrada estándar antes tamaño bytes son
acumulado.
Valores de tamaño se admitirán hasta al menos {LINE_MAX} bytes, siempre que
se cumplen las restricciones especificadas en la DESCRIPCIÓN. No se considerará
un error si un valor mayor que el soportado por la implementación o
se da exceder las restricciones especificadas en la DESCRIPCIÓN; xargs usará
el valor más grande que admite dentro de las restricciones.
−t Habilite el modo de seguimiento. Cada línea de comando generada se escribirá en estándar
error justo antes de la invocación.
−x Terminar si una línea de comando construida no encaja en el implícito o especificado
tamaño (ver el −s opción anterior).
OPERANDOS
Se admitirán los siguientes operandos:
utilidad El nombre de la utilidad que se va a invocar, que se encuentra por ruta de búsqueda utilizando el TRAYECTORIA
variable de entorno, descrita en el volumen de Definiciones básicas de POSIX.1‐2008,
Capítulo 8, Entorno Variables. Si utilidad se omite, el valor predeterminado será
de la forma más echo utilidad. Si el utilidad operando nombra cualquiera de los especiales incorporados
utilidades en Sección 2.14, Especial Empotrado Departamento de Servicios Públicos, los resultados son
indefinido.
argumento Una opción inicial u operando para la invocación de utilidad.
ESTÁNDAR
La entrada estándar será un archivo de texto. Los resultados no se especifican si un final de archivo
La condición se detecta inmediatamente después de un escape .
ENTRADA ARCHIVOS
El archivo / dev / tty se utilizará para leer las respuestas requeridas por el −pag .
MEDIO AMBIENTE VARIABLES
Las siguientes variables de entorno afectarán la ejecución de xargs:
IDIOMA Proporcione un valor predeterminado para las variables de internacionalización que no están configuradas o
nulo. (Consulte el volumen de Definiciones básicas de POSIX.1‐2008, Sección 8.2,
Internacionalización Variables por la precedencia de la internacionalización
variables utilizadas para determinar los valores de las categorías de configuración regional).
LC_TODOS Si se establece en un valor de cadena no vacío, anule los valores de todos los demás
Variables de internacionalización.
LC_COLLATE
Determine la configuración regional para el comportamiento de rangos, clases de equivalencia y
elementos de clasificación de caracteres utilizados en la expresión regular extendida definida para
de la forma más síexpr palabra clave locale en el LC_MENSAJES .
LC_CTYPE Determinar la configuración regional para la interpretación de secuencias de bytes de datos de texto.
como caracteres (por ejemplo, de un solo byte en lugar de caracteres de varios bytes en
argumentos y archivos de entrada) y el comportamiento de las clases de caracteres
expresión regular extendida definida para el síexpr palabra clave locale en el
LC_MENSAJES .
LC_MENSAJES
Determine la configuración regional utilizada para procesar las respuestas afirmativas y la configuración regional utilizada
para afectar el formato y el contenido de los mensajes de diagnóstico y las indicaciones escritas en
Error estándar.
NLSPATH Determinar la ubicación de los catálogos de mensajes para el procesamiento de LC_MENSAJES.
TRAYECTORIA Determine la ubicación de utilidad, como se describe en el volumen de Definiciones básicas
de POSIX.1‐2008, Capítulo 8, Entorno Variables.
ASINCRÓNICO EVENTOS
Por defecto.
SALIDA ESTÁNDAR
No utilizado.
ESTDERR
El error estándar se utilizará para mensajes de diagnóstico y el −t y −pag opciones. Si el
−t se especifica la opción, la utilidad y su lista de argumentos construida se escribirá en
error estándar, ya que se invocará, antes de la invocación. Si −pag se especifica, un mensaje
Se escribirá el siguiente formato (en la configuración regional POSIX):
"? ..."
al final de la línea de la salida de −t.
SALIDA ARCHIVOS
Ninguna.
EXTENDIDO DESCRIPCIÓN
Ninguna.
SALIR ESTADO
Se devolverán los siguientes valores de salida:
0 Todas las invocaciones de utilidad devolvió el estado de salida cero.
1-125 No se pudo ensamblar una línea de comando que cumpla con los requisitos especificados, una o
más de las invocaciones de utilidad devolvió un estado de salida distinto de cero, o algún otro
Se produjo un error.
126 La utilidad especificada por utilidad se encontró pero no se pudo invocar.
127 La utilidad especificada por utilidad no pudo ser encontrado.
CONSECUENCIAS OF ERRORES
Si no se puede ensamblar una línea de comando que cumpla con los requisitos especificados, la utilidad
no puede invocarse, una invocación de la utilidad es terminada por una señal, o un
la invocación de la utilidad sale con el estado de salida 255, el xargs la utilidad debe escribir un
mensaje de diagnóstico y salir sin procesar ninguna entrada restante.
El siguiendo (secciones) están informativo.
SOLICITUD USO
El estado de salida 255 permite que una utilidad esté siendo utilizada por xargs para contar xargs terminar si es
sabe que no se realizarán más invocaciones que utilicen el flujo de datos actual. Por lo tanto, utilidad
debería explícitamente salida con un valor apropiado para evitar regresar accidentalmente con 255.
Tenga en cuenta que, dado que la entrada se analiza como líneas, caracteres separan argumentos, y
, , y los caracteres de comillas dobles se utilizan para las comillas, si xargs is
utilizado para agrupar la salida de comandos como find dir −imprimir or ls en comandos para ser
ejecutado, es probable que se produzcan resultados inesperados si algún nombre de archivo contiene , , o
citando personajes. Esto se puede resolver usando find para llamar a un script que convierta cada
archivo encontrado en una cadena entre comillas que luego se canaliza a xargs, pero en la mayoría de los casos es
preferible solo tener find hacer la agregación de argumentos en sí usando −ejecutivo y un toque '+'
terminador en lugar de ';'. Tenga en cuenta que las reglas de cotización utilizadas por xargs no son lo mismo que
en la cáscara. No se hicieron consistentes aquí porque las aplicaciones existentes dependen de
las reglas actuales. Un método sencillo (pero ineficaz) que se puede utilizar para transformar la entrada
que consta de un argumento por línea en una forma citada que xargs interpreta correctamente es
para preceder a cada no personaje con un . Alternativas más eficientes
se muestran en el Ejemplo 2 y el Ejemplo 5 a continuación.
En implementaciones con un gran valor para {ARG_MAX}, xargs puede producir líneas de comando
más largo que {LINE_MAX}. Para la invocación de servicios públicos, esto no es un problema. Si xargs is
que se utiliza para crear un archivo de texto, los usuarios deben establecer explícitamente la línea de comando máxima
longitud con el −s .
El comando, env, agradable, nohup, timey xargs Se han especificado las utilidades para usar la salida.
código 127 si se produce un error para que las aplicaciones puedan distinguir `` no encontrar un
utility '' de `` la utilidad invocada salió con una indicación de error ''. El valor 127 fue
elegido porque no se usa comúnmente para otros significados; la mayoría de las empresas de servicios públicos utilizan valores pequeños
para `` condiciones de error normales '' y los valores superiores a 128 pueden confundirse con terminación
debido a la recepción de una señal. El valor 126 se eligió de manera similar para indicar que
se pudo encontrar la utilidad, pero no invocarla. Algunas secuencias de comandos producen un error significativo
mensajes diferenciando los casos 126 y 127. La distinción entre los códigos de salida 126 y
127 se basa en la práctica de KornShell que usa 127 cuando todos los intentos de ejecutivo la utilidad
fallar con [ENOENTE], y utiliza 126 cuando cualquier intento de ejecutivo la utilidad falla por cualquier otro
razón.
EJEMPLOS
1. El siguiente comando combina la salida de los comandos entre paréntesis (menos el
caracteres) en una línea, que luego se agrega al registro del archivo. Eso
asume que la expansión de "$ 0$ * "no incluye ninguna o
personajes.
(nombre de registro; fecha; Printf "'% s' \ n $ 0 PS | xargs −mi "" >> registro
2. El siguiente comando invoca diff con sucesivos pares de argumentos escritos originalmente
como argumentos de línea de comando. Se asume que no hay incrustados personajes en
los elementos de la lista de argumentos original.
Printf "% s \ n $ @" | SED 's / [^ [: alnum:]] / \\ & / g' |
xargs −mi "" −norte 2 −x diff
3. En los siguientes comandos, se le pregunta al usuario qué archivos en el directorio actual
(excepto los archivos dot) deben archivarse. Los archivos se archivan en arco; a, uno a la
tiempo o b, muchos a la vez. Los comandos asumen que ningún nombre de archivo contiene ,
, , o caracteres de comillas dobles.
a. ls | xargs −mi "" −pag −L 1 ar −r arco
B. ls | xargs −E "" −p −L 1 | xargs −E "" ar −r arch
4. El siguiente comando invoca comando 1 una o más veces con múltiples argumentos,
detenerse si una invocación de comando 1 tiene un estado de salida distinto de cero.
xargs −mi "" sh −c 'comando1 PS || salida 255 ' sh < xargs_entrada
5. En sistemas compatibles con XSI, el siguiente comando mueve todos los archivos del directorio $1 a
directorio $2y repite cada comando de movimiento justo antes de hacerlo. Asume que no
los nombres de archivo contienen personajes y que ni $1 ni $2 contiene el
secuencia "{}".
ls −Un "$ 1" | SED −e 's / "/" \\ "" / g' −e 's/.*/"&"/' |
xargs −mi "" −yo {} −t mv "$ 1" / {} "$ 2" / {}
RAZÓN FUNDAMENTAL
El xargs la utilidad generalmente se encontraba solo en sistemas basados en System V; Sistemas BSD incluidos
an aplicar utilidad que proporcionó una funcionalidad similar a xargs −norte número. Las listas de SVID
xargs como una extensión de desarrollo de software. Este volumen de POSIX.1‐2008 no comparte la
ver que se usa solo para el desarrollo y, por lo tanto, no es opcional.
La aplicación clásica del xargs utilidad está en conjunción con el find utilidad para
Reducir el número de procesos iniciados mediante un uso simplista de la find −ejecutivo combinación.
El xargs La utilidad también se utiliza para imponer un límite superior en la memoria necesaria para iniciar un
proceso. Con esta base en mente, este volumen de POSIX.1‐2008 seleccionó solo el mínimo
características requeridas.
Aunque el estado de salida 255 es principalmente un accidente de implementaciones históricas,
permite que una utilidad sea utilizada por xargs para contar xargs para terminar si no sabe más
las invocaciones que utilizan el flujo de datos actual se realizarán correctamente. Cualquier estado de salida distinto de cero de un
utilidad cae en el rango 1‐125 cuando xargs salidas. No hay ninguna declaración de cómo
varios códigos de estado de salida de servicios públicos distintos de cero se acumulan por xargs. El valor podría ser
la suma de todos los códigos, su valor más alto, el último recibido o un solo valor
como 1. Dado que ningún algoritmo es posiblemente mejor que los demás, y dado que muchos de los
Las utilidades estándar dicen poco más (portablemente) que `` pasa / falla '', no se utilizó ningún algoritmo nuevo.
inventado.
Varios otros xargs Las opciones se eliminaron porque ya existen alternativas simples dentro de
este volumen de POSIX.1‐2008. Por ejemplo, el −yo responder La opción puede ser igual de eficiente
realizado usando un caparazón for lazo. Ya que xargs llama a ejecutivo función con cada línea de entrada,
de la forma más −yo La opción no suele explotar las capacidades de agrupación de xargs.
El requisito de que xargs nunca produce líneas de comando tales que la invocación de utilidad is
dentro de los 2048 bytes de llegar al POSIX ejecutivo Las limitaciones de {ARG_MAX} están destinadas a garantizar
que la utilidad invocada tiene espacio para modificar sus variables de entorno y la línea de comando
argumentos y aún poder invocar otra utilidad. Tenga en cuenta que el mínimo {ARG_MAX}
permitido por el volumen de Interfaces del sistema de POSIX.1‐2008 es 4096 bytes y el mínimo
el valor permitido por este volumen de POSIX.1‐2008 es 2048 bytes; por lo tanto, los 2048 bytes
la diferencia parece razonable. Sin embargo, tenga en cuenta que xargs puede que nunca pueda invocar un
utilidad si el entorno pasó a xargs se acerca a usar {ARG_MAX} bytes.
La versión de xargs requerido por este volumen de POSIX.1‐2008 es necesario esperar
finalización del comando invocado antes de invocar otro comando. Esto se hizo porque
guiones históricos usando xargs ejecución secuencial asumida. Implementaciones que desean
Proporcionar el funcionamiento en paralelo de las utilidades invocadas. Se recomienda agregar una opción.
habilitar la invocación paralela, pero aún debe esperar la terminación de todos los hijos
antes xargs termina normalmente.
El −e La opción se omitió de la norma ISO POSIX ‐ 2: 1993 en la creencia de que la eofstr
opción-argumento se reconoció solo cuando estaba en una línea por sí mismo y antes de comillas y
El procesamiento de escape se realizó, y que el procesamiento lógico de fin de archivo fue solo
habilitado si un −e se especificó la opción. En ese caso, un simple SED El script podría usarse para
duplicar el −e funcionalidad. Una investigación adicional reveló que:
* Se verificó la cadena lógica de fin de archivo después del procesamiento de cotización y escape,
hacer una SED script que proporcionaba una funcionalidad equivalente mucho más difícil de
escribir.
* El valor predeterminado era realizar el procesamiento lógico de fin de archivo con un como el
cadena lógica de fin de archivo.
Para corregir este malentendido, el −mi eofstr La opción fue adoptada de X / Open
Guía de portabilidad. Los usuarios deben tener en cuenta que la descripción del −mi coincidencias de opciones
documentación histórica de la −e opción (que no fue adoptada porque no
admitir las Pautas de sintaxis de la utilidad), diciendo que si eofstr es la cadena nula,
el procesamiento lógico de fin de archivo está inhabilitado. Implementaciones históricas de xargs
no desactivó el procesamiento lógico de fin de archivo; trataron un argumento nulo encontrado en el
input como una cadena lógica de fin de archivo. (Un nulo cadena El argumento podría generarse usando
comillas simples o dobles'' or ""). Dado que este comportamiento no se documentó históricamente,
se considera un error.
El −yo, −Ly −norte las opciones son mutuamente excluyentes. Algunas implementaciones usan la última
se especifica si se proporciona más de uno en una línea de comando; otras implementaciones tratan
combinaciones de las opciones de diferentes formas.
EL FUTURO DIRECCIONES
Ninguna.
Utilice xargsposix en línea utilizando los servicios de onworks.net