Por defecto, en zsh, si un comodín patrón no coincide con nada, zsh señales de un error y no se ejecuta el comando. Tenga en cuenta que el error viene de zsh, no de rm.
Esta es generalmente una función muy útil, ya que en muchos casos, si usted utiliza un patrón de caracteres comodín, que tiene la intención para que coincida con algo. Sin embargo, en los guiones (y, más generalmente, en los procesos automatizados, tales como su alias), es común para procesar todos los archivos que coincidan con un determinado patrón, y si los archivos no coinciden, entonces usted simplemente no hacer nada. Usted puede utilizar el N
glob calificador para que. Por ejemplo:
for x in *.dat(N); do
rm -- $x
done
Si usted está escribiendo una función o script donde todo el comodín de los patrones de ajuste de este uso, usted puede encender y apagar null_glob
opción. Este es esencialmente equivalente a poner (N)
al final de cada patrón de caracteres comodín.
La mejor manera de hacer su alias de trabajo en zsh es convertirlo en una función y el conjunto de la null_glob
opción localmente. La razón tiene que ser una función es que usted necesita para hacer algo más complejo de ejecutar un comando con algunos argumentos predefinidos: usted también necesite configurar una opción. Usted también debe pasar la -f
opción rm
y no ignorar los errores de ella. De esta manera podrás ver si algo falla, por ejemplo, porque usted no tiene permiso para eliminar los archivos. Verás que no hay salida en casos normales, si algunos de los archivos de suceder a quedar borrados o no.
clean_some_files () {
setopt local_options null_glob
rm -f broyd broyd.7 cdn* *.dat *.npy stars wkf2 fleurinputschema.xsd judft_times juDFT_times.json inf out out.xml usage.json struct.xsf juDFT_times FleurInputSchema.xsd mixing_history*
}
Cuando usted tiene múltiples patrones, también existe la csh_null_glob
opción. La diferencia con null_glob
es que si usted tiene una serie de patrones, zsh todavía señales de un error si ninguno de los patrones de partido. Por ejemplo cat *.txt *.md
funciona siempre y cuando haya al menos un .md
archivo o .txt
archivo, y las señales de un error si no hay ninguno (en oposición a la null_glob
comportamiento que iría cat
sin argumentos). Yo recomiendo activar esta opción en su .zshrc
:
setopt csh_null_glob
También hay un nomatch
opción por defecto (excepto cuando zsh es emular sh o ksh). Si se desactiva, zsh dejará la no-coincidencia de patrones solas en lugar de generar un error. Esto es conveniente cuando usted está utilizando caracteres comodín en algo que no está destinado a ser un modelo de comodín, por ejemplo, una URL que contenga ?
. Pero también es propenso a errores, por lo que recomiendo mantener nomatch
en.