Sé que puedo ejecutar el siguiente comando
ls Some{File,Folder}
Y es equivalente a ejecutar esto:
ls SomeFile SomeFolder
(También lo uso mucho para cosas como mv place_{a,b}
)
Sin embargo, me preguntaba si había un acceso directo diferente donde podría hacer algo como esto:
run-command --a --whole --lot --of --flags parameter a; \
run-command --a --whole --lot --of --flags parameter b
Y solo tenía que escribir run-command --a --whole --lot --of --flags parameter {a,b}
o algo similar.
shell
command-line
scripting
ashays
fuente
fuente
run-command
muchos comandos de Unix manejen varios argumentos de archivo en secuencia.Respuestas:
Suponiendo que está utilizando GNU
bash
o algo similar:Tal vez un
for
bucle?que también se puede escribir en una línea como
for x in a b; do run-command --a --whole --lot --of --flags parameter $x ; done
fuente
for x in {a..z}; do ; run-command --a --whole --lot --of --flags parameter $x ; done
{a..z}
,*.pdf
,$(find ...)
...;
siguientedo
palabra clave.;
.Si no está escribiendo este script y solo quiere ejecutarlo fácilmente en una línea de comando, el
xargs
comando es probablemente lo que está buscando.xargs tomará un montón de contenido de la entrada estándar y lo usará como argumentos para un comando, ejecutando ese comando varias veces si es necesario.
Intenta lo siguiente:
En este ejemplo, simplemente le está dando a xargs las permutaciones que desea que se ejecuten.
El indicador "-n 1" para indicarle a xargs que use solo 1 de los argumentos por ejecución.
El indicador "-d" le dice a xargs que busque un "," en la entrada como el deliminador entre los argumentos a ejecutar. (Tenga en cuenta que si el argumento tiene un "," deberá cambiar esto a otra cosa. Si sus argumentos no tienen espacios, puede omitir esta marca por completo).
Ver
man xargs
para más información.fuente
También puede usar una función, que no lo limita a tener su argumento cambiante al final:
fuente
Puede realizar sustituciones en el comando anterior. Esto no funcionará con su ejemplo {a, b}, porque todas las instancias de 'a' serán reemplazadas por una 'b'. Pero imagina que quieres ejecutar los siguientes comandos:
Puedes hacerlo con
Bash hará la sustitución y correrá
Use gs (sustitución global) para realizar varias sustituciones, no solo una.
fuente
Hay un
alias
comando en bash:El uso es:
$ shotcommand a
fuente