he encontrado la siguiente secuencia de comandos en commandlinefu.com (el ejemplo no es en línea más):¿Cómo funciona esta función bash para eliminar todos los archivos, excepto algunos?
rmbut() {
local x=("[email protected]")
IFS=, rm -rf *[!"${x[*]}"]
}
Se elimina todos los archivos y directorios, pero los nombrados en la línea de comandos.
Podría explicar lo siguiente:
- Lo que está sucediendo en la primera línea?
[email protected]
significa todos los argumentos, pero ¿por qué se pone entre paréntesis? - He leído sobre
IFS
pero nunca lo he usado, ¿cuál es su uso aquí? - ¿Qué se logra con
*[!"${x[*]}"]
? No puedo entender cómo dividirlo en algo que sé.
¿Estás seguro de que son paréntesis() en la línea "local x .." o son llaves {} o corchetes []. Hace una diferencia. Además, desde el aspecto de la función, simplemente se eliminan todos los archivos excepto los que tienen los nombres básicos especificados por los parámetros para la función. – kvista
Sí, los paréntesis son correctos. Ese es el propósito de la función, eso está claro, me gustaría saber por qué ^^ –