Ejecutar script de shell en un montaje HDD externo especificado

1

Guardo algunos archivos en un disco duro externo y quería saber qué contiene actualmente sin conectarlo.

He modificado este comando para obtener un archivo .txt con una estructura similar a un árbol de mi las carpetas en ese disco duro cargado en mi iCloud Drive cuando lo conecto a mi MBP.

Este es mi comando editado que he guardado como .sh, ahora guardando el archivo en el escritorio:

ls -R /Volumes/2TB/ sed -e '/^[^:]*$/d' -e 's/://' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/' > /Volumes/SSD/Users/V/Desktop/File.txt

Hasta ahora he creado un acceso directo en BTT que ejecuta el script, pero me gustaría que se ejecute cuando conecte ese HDD.

Alguien sugirió que podría crear un launchd con la clave StartOnMount. El problema es que, según entiendo de este hilo , no es posible establecer con el volumen especificado.

¿Alguna idea?

    
pregunta lavventura 30.09.2016 - 15:58

1 respuesta

1

En este ejemplo, la salida de df se canaliza a grep , que busca coincidir con el punto de montaje del disco duro- /Volumes/2TB . El estado de salida de grep determina el resultado de la condición y el ! invierte la lógica.

if ! df | grep -q '\/Volumes\/2TB$'
then 
    exit 0
fi

En una oración, esto dice, si grep no coincide con /Volumes/2TB , salga de la secuencia de comandos.

Escribiría el guión de esta manera para ponerlo todo junto.

#!/bin/sh
#
#
if ! df | grep -q '\/Volumes\/2TB$'
then 
    exit 0
fi

ls -R /Volumes/2TB/ |
    sed -e '/^[^:]*$/d' \
        -e 's/://' \
        -e 's/[^-][^\/]*\//--/g' \
        -e 's/^/ /' \
        -e 's/-/|/' >/Volumes/SSD/Users/V/Desktop/File.txt 
    
respondido por el fd0 30.09.2016 - 19:41

Lea otras preguntas en las etiquetas