script
-
[BASH] Scripts utiles
Cette page me permet de retrouver des scripts en bash qui peuvent resservir (car on oublie lorsqu'on ne pratique pas souvent...).
- Site permettant de vérifier et déboguer ses scripts : https://www.shellcheck.net/. Il est aussi possible d'installer shellcheck dans sa distribution pour tester ses scripts avec un commande du type :
shellcheck my_script
- Conseils sur la robustesse des scripts : https://connect.ed-diamond.com/linux-pratique/lp-133/rendre-ses-scripts-bash-plus-fiables
- Conseils pour sécuriser ses scripts : https://blog.stephane-robert.info/docs/admin-serveurs/linux/scripts-shell-securises/
Un script bash est un fichier exécutant un ensemble de commandes de façon automatisée (équivalent des macros).
Pour lancer ce fichier, on tapera dans un terminal une commande du type :./fichier_script.sh
Pour commencer un script, on commence par la 1ère ligne commençant par "#!" qu'on appelle sheBang. On écrira :
#!/bin/bash (façon "classique") ou aussi pour faciliter la portabilité #!/usr/bin/env bash (source : https://www.cyberciti.biz/tips/finding-bash-perl-python-portably-using-env.html)I- Problème d'espace, de tirets ou de caractères spéciaux dans les noms de fichiers et de répertoire
Voir :
- Fixer le séparateur avec IFS : https://michauko.org/blog/ifs-separateurs-scripts-bash-174/
- Ignorer les tirets avec l'option "--" ou "./" : https://fr.linux-console.net/?p=2297#gsc.tab=0
II- Créer un sous-dossier identique dans tous les dossiers d'un même répertoire :
Sources :
- Site permettant de vérifier et déboguer ses scripts : https://www.shellcheck.net/. Il est aussi possible d'installer shellcheck dans sa distribution pour tester ses scripts avec un commande du type :
-
Extraire directement les données de géocalisation d'une photo sous Linux Mint Mate
Lorsqu'on prend des photos et si celles-ci sont géolocalisées (cas à partir d'un drone ou d'un ordiphone si on n'a pas désactivé cette fonction), il est possible de récupérer les données EXIF contenant ces informations. Malheureusement ces données ne sont pas accessibles directement dans les propriétés des fichiers : on obtient les métadonnées du fichiers mais sans les autres données EXIF.
Il existe les outils "exif" et "exiftool" utilisables en ligne de commande mais pouvoir le faire via le menu contextuel de l'explorateur de fichiers (Nemo ou Caja selon les versions de Linux Mint) serait l'idéal.
Et bien quelqu'un (un grand merci à lui) y a pensé pour l'explorateur de fichiers Nemo et partagé plusieurs scripts shell pour obtenir ces info détaillées : https://github.com/s-n-ushakov/exif-gps-mapping-nemo. On ne va s'intéresser qu'à un seul script proposé et faire en sorte qu'il s'adapte à Caja.Pour avoir des infos sur les scripts exécutables dans les explorateurs de fichiers comme Nautilus, Nemo ou Caja, voir cette page : https://doc.ubuntu-fr.org/nautilus_scripts
I- Script pour le menu contextuel dans Caja
Voici le script détaillé récupéré ici https://github.com/s-n-ushakov/exif-gps-mapping-nemo/blob/master/nemo/actions/action_scripts/exif_metadata_list_exiftool.bash :
#! /bin/bash
#-----------------------------------------------------------------------------------------------------------------------
# Script to implement rendering of Exif metadata for media files in a Zenity/Nemo dialog using 'exiftool' utility.
#
# See 'https://exiftool.org/', 'https://exiftool.sourceforge.net/' and 'https://github.com/exiftool/exiftool'
# for 'exiftool' utility.
#-----------------------------------------------------------------------------------------------------------------------# obtain bulk metadata from `exiftool` utility
bulk_exif_data=$(exiftool -coordFormat "%.6f" "$1")# prepare the text to be displayed and arrange for rendering
text_to_display="${bulk_exif_data}"
echo "${text_to_display}" \
| zenity --text-info \
--title="Exif metadata for '${1##*/}'" \
--width=1000 \
--height=500 \
--window-icon=exifinfo \
--font='DejaVu Sans Mono'II- Intégration du script dans le menu contextuel de Caja
Voici les étapes pour intégrer cette fonctionnalité dans Linux Mint Mate avec Caja :