1.5.4.- Generar líneas de comandos

Habrá ocasiones en las que tenga que construir una serie de comandos que son similares entre sí, pero no lo suficiente para permitirle utilizar sus opciones normales para sustituir un único comando. Por ejemplo, supongamos que desea eliminar todos los ficheros de un árbol de directorios con un nombre que termina en virgulilla (~), que es una convención de nomenclatura de ficheros que denota ficheros creados por determinados editores de texto. En un árbol de directorios grande, esta tarea puede ser abrumadora; el comando habitual para el borrado de ficheros rm no proporciona ninguna opción para buscar y borrar todos los ficheros de un árbol de directorios que coincida con un criterio específico. Hay un comando que puede hacer parte del trabajo, llamado find. Este comando muestra todos los ficheros que satisfacen el criterio proporcionado. Si pudiéramos combinar la salida de find para crear una serie de líneas de comandos que utilicen rm, habríamos solucionado el problema. Ésta es, precisamente, la finalidad del comando xargs.

xargs constituye un comando a partir de su entrada estándar. su sintaxis es:

xargs [opciones] [comando [argumentos-iniciales]]

El comando es el comando que queremos ejecutar y argumentos-iniciales es la lista de argumentos que se quiere pasar al comando. Las opciones son las de xargs; no se le pasan al comando. Cuando ejecuta xargs, éste ejecuta una vez el comando para cada palabra que se le pasa por la entrada estándar, añadiendo dicha palabra a la lista de argumentos del comando. Si desea pasarle varias opciones a éste, puede delimitarlas rodeando el grupo con comillas. Por ejemplo, supongamos que tenemos que borrar todos estos ficheros de copia de seguridad, denotados por el carácter de la virgulilla. Esto se puede hacer canalizando la salida de find hacia xargs, quien llama después a rm:

$ find ./ -name "*~" | xargs rm

La primera parte de este comando (find ./ -name "*~") localiza todos los ficheros del directorio actual (./) o de sus subdirectorios que tengan un nombre acabad en virgulilla (~). Esta línea se le pasa después a xargs, que añade cada uno a su propio comando rm.

El acento grave (`), que en la mayoría de los teclados se encuentra a la derecha de la letra P, es una herramienta similar a xargs en muchos aspectos. El acento grave no es igual al carácter comilla simple ('), que se suele encontrar a la derecha del 0 (cero).

El texto rodeado por los acentos graves se trata como un comando independiente cuyos resultados se sustituyen en la línea de comandos. Por ejemplo, para borrar estos ficheros de copia de seguridad, puede escribir lo siguiente:

$ rm 'find ./ -name "*~"

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.