1 votes

Exécuter l'interpréteur de commandes script sur le disque dur externe spécifié.

Je conserve certains fichiers sur un disque dur externe et j'ai voulu savoir ce qui s'y trouve actuellement sans le connecter.

J'ai modifié este pour obtenir un fichier .txt avec une structure arborescente de mes dossiers sur ce disque dur, téléchargé sur mon lecteur iCloud lorsque je le connecte à mon MBP.

C'est la commande que j'ai éditée et que j'ai sauvegardée sous le nom de .sh, maintenant je sauvegarde le fichier sur le bureau :

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

Jusqu'à présent, j'ai créé un raccourci dans BTT qui exécute le script mais je voudrais qu'il s'exécute lorsque je connecte ce disque dur.

Quelqu'un a suggéré que je pouvais créer un launchd avec la clé StartOnMount. Le problème est que, d'après ce que je comprends de ce fil il n'est pas possible de mettre en place un volume spécifique.

Des idées ?

1voto

Michael Zhou Points 167

Dans cet exemple, la sortie de df est acheminé vers grep qui cherche à correspondre au point de montage du disque dur- /Volumes/2TB . L'état de sortie de grep détermine le résultat de la condition et le ! inverse la logique.

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

Dans une phrase, cela signifie que si grep ne correspond pas à /Volumes/2TB puis quittez le script.

J'écrirais le script comme ceci pour tout mettre en place.

#!/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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X