技能 bash-defensive-patterns
🛡️

bash-defensive-patterns

安全

Écrire des scripts Bash infaillibles

也可從以下取得: wshobson

Prévenez les erreurs courantes de scripts shell grâce à des modèles de programmation défensive. Cette compétence fournit des modèles prêts pour la production pour la gestion des erreurs, la validation des entrées et les opérations de fichiers sécurisées qui protègent votre automatisation des cas limites et des échecs imprévus.

支援: Claude Codex Code(CC)
1

下載技能 ZIP

2

在 Claude 中上傳

前往 設定 → 功能 → 技能 → 上傳技能

3

開啟並開始使用

測試它

正在使用「bash-defensive-patterns」。 Créer un script qui fait tourner les fichiers de log de plus de 7 jours avec gestion des erreurs

預期結果:

Le script inclura : configuration du mode strict (set -Eeuo pipefail), validation du répertoire de logs, commande find avec gestion des erreurs appropriée, création d'archives compressées, opérations atomiques de fichiers, traps de nettoyage pour les fichiers temporaires, et journalisation structurée montrant la progression de la rotation et toutes les erreurs rencontrées.

正在使用「bash-defensive-patterns」。 Construire un script de déploiement avec capacité de rollback

預期結果:

Le script généré comporte : analyse des arguments pour les drapeaux d'environnement et de version, vérifications préliminaires des dépendances, création d'une sauvegarde du déploiement actuel avant les modifications, commutation atomique par symlink pour un déploiement sans temps d'arrêt, fonction de rollback pour restaurer depuis la sauvegarde, journalisation complète à chaque étape, et gestionnaires d'erreurs qui déclenchent automatiquement le rollback en cas d'échec.

正在使用「bash-defensive-patterns」。 Écrire un script qui surveille les processus et envoie des alertes

預期結果:

Le script de surveillance inclut : vérification de santé des processus utilisant kill -0, liste configurable de noms de processus, configuration des seuils d'alerte, logique de retry avec backoff exponentiel, emplacements de fonction de notification (email/slack), gestion des signaux pour un arrêt gracieux, suivi des processus en arrière-plan avec un tableau de PIDs, et journalisation structurée avec horodatages pour les pistes d'audit.

安全審計

安全
v1 • 2/25/2026

All 106 static findings are false positives. The skill contains only markdown documentation with code examples demonstrating defensive Bash programming techniques. Command execution patterns, cryptographic references, and file operations are educational examples showing SAFE practices, not executable code. No prompt injection or malicious intent detected.

2
已掃描檔案
564
分析行數
0
發現項
1
審計總數
未發現安全問題
審計者: claude

你能建構什麼

Scripts de pipeline DevOps

Créez des scripts de pipeline CI/CD avec une gestion des erreurs appropriée, une journalisation et des opérations idempotentes qui échouent de manière sécurisée et fournissent des messages d'erreur clairs.

Utilitaires d'administration système

Construisez des scripts de maintenance qui gèrent les cas limites, valident les entrées et incluent des gestionnaires de nettoyage pour prévenir la corruption du système causée par des échecs d'automatisation.

Scripts d'outils de développement

Écrivez des outils de productivité pour développeurs avec analyse des arguments, support dry-run et journalisation complète pour le débogage des problèmes en production.

試試這些提示

Script sécurisé de base
Crée un script Bash qui sauvegarde un répertoire vers un emplacement de sauvegarde. Utilise le mode strict, la gestion des erreurs, et valide que les deux répertoires existent avant de continuer.
Outil CLI prêt pour la production
Écris un script Bash qui accepte des arguments de fichiers d'entrée/sortie avec les drapeaux --input et --output. Inclus la validation des arguments, le texte d'aide, la journalisation structurée, et le support du mode dry-run.
Script de gestion de processus
Crée un script Bash qui gère les processus en arrière-plan avec des gestionnaires de signaux pour un arrêt gracieux. Suit les PIDs, implémente des traps de nettoyage, et gère correctement SIGTERM/SIGINT.
Script de configuration idempotent
Écris un script de configuration Bash qui crée des répertoires, des fichiers de configuration et des services. Conçois-le pour être idempotent - sûr d'exécuter plusieurs fois sans créer de ressources dupliquées ou d'erreurs.

最佳實務

  • Toujours activer le mode strict avec 'set -Eeuo pipefail' au début des scripts pour détecter les erreurs rapidement
  • Citer toutes les extensions de variables pour prévenir les problèmes de division de mots et de globbing
  • Utiliser [[ ]] au lieu de [ ] pour les conditions afin d'activer une correspondance de motifs plus sûre et prévenir la division de mots inattendue

避免

  • Ne pas utiliser de variables non citées comme 'cp $source $dest' - cela provoque une division de mots sur les noms de fichiers contenant des espaces
  • Éviter d'utiliser des backticks pour la substitution de commande - préférer la syntaxe moderne '$()' pour un meilleur imbrication et lisibilité
  • Ne jamais utiliser 'set -e' seul sans comprendre pipefail - toujours utiliser 'set -Eeuo pipefail' ensemble pour une gestion complète des erreurs

常見問題

Pourquoi cette compétence recommande-t-elle le mode strict alors qu'il fait sortir les scripts sur les erreurs ?
Le mode strict empêche les petites erreurs de devenir des problèmes plus importants plus tard. Il arrête l'exécution immédiatement lorsque des commandes échouent, que des variables sont non définies, ou que des pipes se brisent, rendant le débogage beaucoup plus facile et prévenant la corruption de données causée par la poursuite avec un mauvais état.
Puis-je utiliser ces modèles avec POSIX sh au lieu de Bash ?
De nombreux modèles comme citer les variables et la gestion des erreurs fonctionnent dans POSIX sh, mais certaines fonctionnalités spécifiques à Bash comme les conditions [[ ]] et les tableaux nécessitent Bash 4.0+. Pour une compatibilité POSIX stricte, utilisez [ ] au lieu de [[ ]] et évitez les tableaux.
Quelle est la différence entre [ ] et [[ ]] dans les conditions ?
Les doubles crochets [[ ]] sont spécifiques à Bash et fournissent une gestion plus sûre des caractères spéciaux, préviennent la division de mots, et supportent la correspondance de motifs avec == et le regex avec =~. Les crochets simples [ ] sont standards POSIX mais nécessitent plus de citations et ont un comportement moins intuitif.
Pourquoi devrais-je utiliser 'command -v' au lieu de 'which' pour vérifier les commandes ?
Le builtin 'command -v' est standard POSIX, fonctionne de manière cohérente dans tous les shells, et ne nécessite pas de processus externes. La commande 'which' n'est pas disponible sur tous les systèmes et peut produire une sortie incohérente selon le système d'exploitation.
Comment gérer les échecs de script qui devraient être non fatals ?
Utilisez '|| true' après des commandes qui peuvent échouer légitimement, ou enveloppez les commandes dans des instructions if pour vérifier leur statut de sortie explicitement. Pour une logique plus complexe, vous pouvez temporairement désactiver le mode strict dans des blocs spécifiques avec 'set +e' et le réactiver avec 'set -e'.
Qu'est-ce que l'idempotence et pourquoi est-ce important pour les scripts shell ?
L'idempotence signifie qu'un script produit le même résultat qu'il soit exécuté une fois ou plusieurs fois. C'est essentiel pour la fiabilité - si un script échoue à mi-chemin et est réexécuté, il ne doit pas créer de ressources dupliquées, échouer sur des éléments existants, ou laisser le système dans un état incohérent.