Utilisez Raccourcis sur Mac pour transmettre du texte à un script shell qui sélectionne le fichier texte modifié le plus récemment dans un dossier local et y ajoute votre entrée. Ce guide utilise des fichiers d’exemple temporaires et s’interrompt si le dossier est vide ou si la date la plus récente est à égalité.
La tâche est précise : ajouter une courte entrée à un fichier texte brut existant sans avoir à le sélectionner manuellement à chaque fois. Apple documente la prise en charge des scripts shell dans Raccourcis sur Mac. Le flux de travail ci-dessous combine cette fonctionnalité prise en charge avec les méthodes documentées de zsh pour sélectionner des fichiers et y ajouter du contenu. Découvrir Raccourcis pour macOS
Définir ce que signifie « fichier le plus récent »
Dans cet article, le plus récent signifie modifié le plus récemment. Le script ne prend en compte que les fichiers visibles et ordinaires dont le nom se termine par .txt en minuscules, directement dans le dossier désigné. Il exclut les sous-dossiers et les liens symboliques. Ces règles de sélection reposent sur les motifs et les qualificatifs de noms de fichiers de zsh. Expansion
Cette définition a une incidence sur les exécutions répétées. Après l’ajout de texte à un fichier, sa date de modification change ; il restera donc généralement le fichier admissible le plus récent. Si vous souhaitez plutôt suivre le document créé le plus récemment, la date de modification est une règle différente ; ne partez pas du principe que ce flux de travail sélectionne les fichiers selon leur date de création.
Avant de créer le raccourci, choisissez la règle qui correspond à votre tâche :
| Tâche souhaitée | Cet exemple convient-il ? |
|---|---|
Ajouter du texte au fichier .txt modifié le plus récemment |
Oui |
| Ajouter du texte au fichier dont le nom contient la date la plus récente | Non ; les noms de fichiers ne sont pas interprétés comme des dates |
| Ajouter du texte au fichier créé le plus récemment | Non ; la date de création n’est pas utilisée |
| Inclure les fichiers des sous-dossiers | Non ; la sélection se limite à un seul dossier |
| Ajouter du texte à un document enrichi ou à un PDF | Non ; cet exemple écrit du texte brut |
Le Finder offre un contrôle visuel utile. Ouvrez le dossier en présentation par liste et cliquez sur l’en-tête de la colonne Date de modification ; cliquez de nouveau si nécessaire pour placer l’élément le plus récent en premier. Apple documente le tri par colonne ainsi que l’inversion de l’ordre. L’affichage du Finder vous aide à vérifier le résultat, mais le script effectue sa propre sélection. Trier et organiser des éléments dans le Finder sur Mac
Créer un dossier d’exemple temporaire
L’exemple utilise un dossier nommé Shortcut Append Demo dans votre dossier de départ. La configuration s’interrompt volontairement si ce nom existe déjà, au lieu de réutiliser son contenu. Elle crée deux fichiers texte synthétiques, avec un intervalle de deux secondes afin que le second fichier ait une date de modification plus récente.
Ouvrez Terminal, collez le bloc de configuration complet ci-dessous et appuyez sur Retour. Le heredoc entre guillemets exécute les commandes dans un processus zsh distinct ; en cas d’échec, ce processus se ferme.
/bin/zsh <<'ZSH'
emulate -L zsh
setopt ERR_EXIT
folder="$HOME/Shortcut Append Demo"
if ! /bin/mkdir "$folder"; then
printf '%s\n' 'Setup stopped: use a new folder name if this one exists.' >&2
exit 1
fi
printf '%s\n' 'Sample entry: blue notebook.' > "$folder/older.txt"
/bin/sleep 2
printf '%s\n' 'Sample entry: green notebook.' > "$folder/newer.txt"
printf 'Example folder: %s\n' "$folder"
ZSH
La configuration utilise la redirection de sortie pour créer les fichiers uniquement après la création réussie du nouveau dossier. Apple distingue la redirection de sortie ordinaire, qui écrit la sortie d’une commande dans un fichier, de la redirection en ajout, qui ajoute la sortie à la fin. Rediriger les entrées et sorties de Terminal sur Mac
Si la configuration indique que le dossier existe déjà, choisissez un autre nom temporaire et modifiez l’affectation du dossier dans la configuration et dans le script du raccourci ci-dessous. Ne relancez pas les lignes d’écriture de fichiers individuellement dans un dossier existant.
Créer le raccourci et conserver l’entrée texte
Créez un nouveau raccourci dans l’app Raccourcis et nommez-le Append to Newest Text File. Utilisez la recherche d’actions pour ajouter celles ci-dessous. Apple explique comment rechercher dans la bibliothèque d’actions et vérifier, avec Afficher les informations, les entrées acceptées et les sorties produites par chaque action. Parcourir la liste d’actions dans Raccourcis sur Mac
- Ajoutez une action
Textecontenant l’entrée synthétiqueSample entry: orange notebook. - Ajoutez l’action
Exécuter le script shellimmédiatement après. - Réglez le shell sur
/bin/zsh. - Réglez l’entrée du script sur la sortie de l’action
Texteprécédente. - Réglez
Transmettre l’entréesurcomme arguments. - Remplacez le contenu du champ de script par le script complet de la section suivante.
Le branchement prévu transmet une valeur Texte à un seul argument de script. Le script lit cet argument sous la forme $1. En cas de réussite, sa sortie est une confirmation textuelle contenant le chemin de destination ; ce chemin n’est pas un objet Fichier de Raccourcis, et la sortie ne contient pas l’intégralité du fichier.
Laissez l’entrée reliée à la sortie de Texte. La transmission d’un fichier, d’une liste de noms de fichiers ou d’une entrée sans rapport avec le raccourci modifierait ce qui parvient au script. Le script vérifie le nombre d’arguments afin qu’une collection inattendue d’entrées ne devienne pas plusieurs entrées ajoutées.
Si les scripts sont désactivés, ouvrez Raccourcis > Réglages, sélectionnez Avancé, puis activez Autoriser l’exécution des scripts. Voici les réglages documentés par Apple pour autoriser les scripts dans les raccourcis. Instructions d’Apple concernant le réglage des scripts
Ajouter le script qui sélectionne le fichier et y ajoute du texte
Collez le programme complet ci-dessous dans Exécuter le script shell. Il ne nécessite aucun outil téléchargé ni fichier de script distinct. L’affectation du dossier correspond à la configuration temporaire ci-dessus.
emulate -L zsh
unsetopt CLOBBER APPEND_CREATE
fail() {
printf '%s\n' "$1" >&2
exit 1
}
(( $# == 1 )) || fail 'Expected exactly one text input.'
[[ -n "$1" ]] || fail 'The text input is empty.'
folder="$HOME/Shortcut Append Demo"
[[ -d "$folder" ]] || fail 'The example folder does not exist.'
files=( "$folder"/*.txt(N.om) )
(( ${#files} > 0 )) || fail 'No eligible .txt files were found.'
newest="${files[1]}"
if (( ${#files} > 1 )); then
[[ "$newest" -nt "${files[2]}" ]] ||
fail 'The newest timestamp is tied or the folder changed. Check the files.'
fi
[[ -f "$newest" && ! -L "$newest" ]] ||
fail 'The selected file is no longer an eligible regular file.'
[[ -w "$newest" ]] || fail 'The selected file is not writable.'
if ! printf '\n%s\n' "$1" >> "$newest"; then
fail 'Append failed; inspect the selected file before retrying.'
fi
printf 'Appended to: %s\n' "$newest"
L’expression de sélection crée un tableau de chemins de fichiers correspondants. Dans (N.om), N autorise l’absence de correspondance, . limite les correspondances aux fichiers ordinaires et om les trie par date de modification, du plus récent au plus ancien. Le stockage des chemins dans un tableau évite de les découper aux espaces. Expansion
Le contrôle suivant exige que le premier fichier soit strictement plus récent que le second. Si leurs dates de modification sont identiques, le raccourci s’interrompt au lieu d’en choisir un silencieusement. zsh documente -nt pour comparer l’ancienneté des fichiers, ainsi que les tests employés ici pour vérifier qu’il s’agit d’un fichier ordinaire, d’un lien symbolique ou d’un fichier accessible en écriture. Expressions conditionnelles
La commande d’ajout utilise le format fixe printf et fournit votre entrée comme argument %s. Les signes de pourcentage et les barres obliques inverses de l’entrée sont donc traités comme du texte, et non comme des instructions de formatage supplémentaires. Le saut de ligne initial sépare l’entrée du texte existant ; le saut final la termine. Si le fichier se termine déjà par un saut de ligne, une ligne vide séparera les entrées. Commandes intégrées du shell
Le script annule également CLOBBER et APPEND_CREATE. Lorsque ces deux options sont désactivées, zsh indique que la redirection en ajout échoue si la destination n’existe pas. C’est important si le fichier sélectionné disparaît avant l’ajout : le script doit signaler un échec au lieu de créer un fichier de remplacement à l’ancien emplacement. Redirection
Vérifier le résultat avec les fichiers d’exemple
Exécutez le raccourci une fois. Si le dossier d’exemple n’a pas été modifié, la destination attendue est newer.txt. Ouvrez ce fichier et vérifiez qu’il contient le texte suivant. Il s’agit du résultat attendu d’après l’exemple, et non d’une affirmation selon laquelle un test complet de l’interface Mac a été effectué.
Sample entry: green notebook.
Sample entry: orange notebook.
Ouvrez également older.txt. Il ne devrait contenir que Sample entry: blue notebook. La vérification des deux fichiers confirme les deux aspects de la tâche : sélectionner une destination et préserver l’autre fichier.
Essayez une deuxième entrée synthétique en remplaçant le texte de l’action Texte par Sample entry: yellow notebook. puis en relançant le raccourci. Une autre entrée séparée devrait apparaître dans newer.txt, à condition qu’aucun autre fichier admissible ne soit devenu plus récent. Deux exécutions du raccourci avec la même entrée ajoutent cette entrée deux fois ; ce programme ne détecte pas les doublons.
Ces exemples ont été vérifiés à l’aide de la documentation, mais n’ont pas été exécutés ici : l’environnement disponible ne dispose ni de Raccourcis sur macOS ni de zsh. Effectuez la vérification avec les fichiers temporaires sur votre Mac avant d’adapter l’affectation du dossier.
Comprendre les dossiers vides, les conflits de noms et les fichiers qui changent
Le flux de travail nécessite une destination existante. Un dossier absent ou vide, ou un dossier ne contenant que des éléments inadmissibles, produit une erreur avant l’ajout. Il ne crée pas de fichier par défaut, ne sélectionne pas un sous-dossier et ne se rabat pas sur un document portant un autre nom.
Les conflits de noms sont évités en ne créant jamais de fichier de destination. La configuration s’interrompt si le dossier porte déjà le nom choisi. Lors des exécutions normales du raccourci, le fichier sélectionné conserve son nom actuel : le script ne le renomme pas et n’enregistre pas de seconde copie. Le comportement en cas de fichier manquant est régi par les options documentées de redirection en ajout de zsh. Redirection
Suivez cette courte procédure de diagnostic si le résultat diffère de vos attentes :
- Vérifiez l’affectation du dossier. Elle doit correspondre au dossier créé lors de la configuration.
- Vérifiez l’admissibilité. Le motif d’exemple inclut les fichiers visibles et ordinaires se terminant par
.txten minuscules, à la racine du dossier. - Vérifiez l’ordre des dates de modification. Consultez la colonne
Date de modificationdans le Finder, en gardant à l’esprit que la modification d’un fichier peut en faire la prochaine destination. - Vérifiez si les dates sont à égalité. Modifiez et enregistrez le fichier d’exemple voulu plus tard, puis vérifiez de nouveau l’ordre.
- Vérifiez le branchement des actions. Une valeur texte doit parvenir au shell sous la forme d’un seul argument.
Le script est conçu pour un dossier dont le contenu ne change pas pendant son exécution. La sélection et l’écriture sont deux opérations distinctes : un autre processus pourrait modifier, remplacer ou ajouter un fichier entre les deux. Les contrôles ne font pas de ce flux de travail une transaction, et un échec d’écriture peut laisser une entrée partiellement ajoutée. Après une erreur d’ajout, vérifiez le fichier avant de réessayer.
À quoi servent les filtres de fichiers natifs
Apple présente Filtrer les fichiers comme une action qui accepte du contenu, le filtre selon certains critères et transmet les résultats correspondants à l’action suivante. Ses commandes de filtrage générales peuvent trier les résultats et en limiter le nombre. Ces opérations aident à sélectionner un fichier, mais n’y ajoutent pas de texte. Présentation des actions Rechercher et Filtrer, Ajouter des paramètres de filtre
Ce guide regroupe la sélection et l’écriture dans le script shell afin que le motif des fichiers, le traitement des dates à égalité et l’exigence d’un fichier existant soient explicites. Si vous créez une autre chaîne à l’aide d’actions sur les fichiers, consultez d’abord Afficher les informations de chaque action : un résultat de type Fichier, le contenu d’un fichier converti en Texte et un chemin représenté sous forme de Texte sont des valeurs différentes. Apple fournit ces descriptions d’actions précisément pour indiquer les types d’entrée et de sortie. Parcourir la liste d’actions dans Raccourcis sur Mac
Une fois que l’exemple fonctionne comme prévu, conservez le même contrat clair lors de son adaptation : une entrée texte, un dossier local désigné et un seul fichier admissible dont la date de modification est strictement la plus récente. Chaque exécution sera ainsi prévisible, et vous saurez où chercher si le raccourci s’interrompt.
Sources
- Découvrir Raccourcis pour macOS — Apple Developer.
- Parcourir la liste d’actions dans Raccourcis sur Mac — Assistance Apple.
- Réglages avancés de confidentialité et de sécurité dans Raccourcis sur Mac — Assistance Apple.
- Trier et organiser des éléments dans le Finder sur Mac — Assistance Apple.
- Rediriger les entrées et sorties de Terminal sur Mac — Assistance Apple.
- Présentation des actions Rechercher et Filtrer dans Raccourcis sur Mac — Assistance Apple.
- Ajouter des paramètres de filtre aux actions Rechercher et Filtrer dans Raccourcis sur Mac — Assistance Apple.
- 14 Expansion — The Zsh Development Group.
- 12 Expressions conditionnelles — The Zsh Development Group.
- 17 Commandes intégrées du shell — The Zsh Development Group.
- 7 Redirection — The Zsh Development Group.