Como cualquier otro shell, PowerShell es un poderoso lenguaje de shell y secuencias de comandos desarrollado por Microsoft. Originalmente diseñado para Windows, PowerShell ahora está disponible para todas las plataformas principales. A partir de PowerShell 6, se ha convertido en una aplicación gratuita y de código abierto.
Similar a cualquier otra secuencia de comandos, podemos usar PowerShell para automatizar de cosas básicas a avanzadas. En esta guía, consulte cómo usar PowerShell para eliminar un archivo si existe en Linux.
Verificar si existe un archivo
Similar a otros shells, PowerShell viene con su propio conjunto de comandos para realizar varias tareas, conocidas como cmdlets. Para probar una determinada declaración, en Bash, usaríamos la declaración de prueba de bash que verifica si un cierto argumento es verdadero o falso. La declaración de prueba es un mecanismo de uso general que puede calcular una amplia variedad de posibles comandos.
En el caso de PowerShell, sin embargo, hay cmdlets específicos para una tarea específica. Aquí, necesitaremos el camino de prueba para verificar si el archivo dado existe en la ubicación definida.
Aquí hay una simple demostración de prueba de prueba en acción.
$ Test -Path -Path
Por defecto, la prueba de prueba verificará si el elemento especificado existe en la ubicación descrita. Si existe, entonces devuelve el valor booleano "verdadero". De lo contrario, devuelve "falso".
Eliminar un archivo en PowerShell
En Linux, usaríamos el comando RM para eliminar un archivo o directorio. En el caso de PowerShell, usa el Cmdlet Retrow-item.
Consulte la documentación de Microsoft en remo.
Por ejemplo, para eliminar un archivo específico, ejecute el siguiente comando.
$ Eliminación de ítem
Para eliminar un directorio, necesitamos una opción adicional "-Curse".
$ Eliminación de ítem-Recurrir
Eliminar archivos si existe
Ahora, podemos combinar ambos métodos juntos y hacer un script simple que eliminará un archivo si existe en la ubicación de destino.
Primero, asigne una variable que mantenga el valor de la ruta del archivo.
$ $ FileLocation = ""
A continuación, use la prueba de prueba para verificar si el archivo existe en la ubicación.
$ Test-path $ filelocation
Dependiendo del valor de retorno de la prueba de prueba, podemos tomar la decisión de eliminar el archivo de destino. Podemos usar la declaración PowerShell if-else para determinar la acción.
if (test-path $ filename = true)
Eliminar el nombre de archivo $ nombre de archivo
ps
Agreguemos algunos mensajes adicionales para cada resultado posible.
if (test-path $ filelocation)
Eliminar el ítem $ fileLocation
Escritura-anfitrión "$ fileLocation se elimina"
demás
Escritura-anfitrión "$ fileLocation no existe"
Implementación en un script de PowerShell
Es hora de poner todos los códigos en un script de PowerShell adecuado. Similar a los scripts bash, podemos usar scripts de PowerShell para automatizar varias tareas utilizando cmdlets y comandos de PowerShell. En Linux, los guiones de PowerShell y Bash comparten similitudes estructurales.
Primero, necesitamos la ubicación de la ubicación ejecutable de PowerShell. Es importante, ya que será parte del shebang. Ejecutar el siguiente comando.
$ que PowerShell
Ahora podemos poner todas estas piezas en un solo guión de PowerShell. Un script de PowerShell viene con la extensión de archivo PS1.
$ nano eliminar-si-exist.PS1
Ahora, ingrese el código que hemos desarrollado hasta ahora.
$ FileLocation = ""
if (test-path $ filelocation)
Eliminar el ítem $ fileLocation
Escritura-anfitrión "$ fileLocation se elimina"
demás
Escritura-anfitrión "$ fileLocation no existe"
Guarde el archivo y cierre el editor. Marque el archivo como ejecutable.
$ chmod +x eliminar-si-exist.PS1
Finalmente, ejecute el script.
ps ./Eliminar-if-Exist.PS1
Situaciones especiales
Eliminar archivos de solo lectura
El cmdlet de remove item no puede eliminar archivos inexistentes o de solo lectura. En tal situación, podemos cambiar el comando eliminar el comando para eliminar, independientemente del permiso del archivo. La bandera "-verbose" imprimirá una salida paso a paso para una depuración más fácil.
$ Remove -item -verbose -force $ filelocation
Actualámoslo en el script.
$ FileLocation = ""
if (test-path $ filelocation)
Eliminar -Item -verbose -force $ filelocation
Escritura-anfitrión "$ fileLocation se elimina"
demás
Escritura-anfitrión "$ fileLocation no existe"
Pensamiento final
Esta guía muestra cómo verificar la existencia de un archivo y, en función del resultado, cómo eliminarlo utilizando el cmdlet de remo. Si el archivo es de solo lectura o permiso denegado, entonces podemos usar el parámetro "-force" para eliminarlo con fuerza. Finalmente, implementamos todo el script.
Esta es una forma muy simple pero efectiva de eliminar un archivo/directorio de elección. Sin embargo, como se demostró, este método general es capaz de eliminar solo un elemento. Es posible obtener la lista de archivos de un directorio y usar un bucle para eliminarlos de forma incremental.
Computación feliz!