Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nautilus_scripts [Le 26/04/2018, 02:25] – [Ne pas utiliser les arguments passés aux scripts] 176.180.137.2nautilus_scripts [Le 01/06/2026, 03:15] (Version actuelle) – mise en forme / syntaxe | suppr obsolete (un peu, encore du boulot sûrement) | file, pas code ! krodelabestiole
Ligne 1: Ligne 1:
-{{tag>Xenial nautilus}}+{{tag>Jammy nautilus}}
  
----- +====== Les scripts pour GNOME Fichiers ======
- +
-====== Les scripts pour Nautilus ======+
  
-Le gestionnaire de fichiers Nautilus permet d'exécuter des [[tutoriel:script_shell|scripts]], sous la forme de fichiers textes.+Le gestionnaire de fichiers [[:nautilus|GNOME Fichiers]] permet d'exécuter des [[tutoriel:script_shell|scripts]], sous la forme de fichiers textes.\\
 Les scripts sont de "petits" programmes permettant une multitude de fonctionnalités. Les scripts sont de "petits" programmes permettant une multitude de fonctionnalités.
  
-Les scripts suivants et d'autres trouvés sur le Web peuvent être copiés dans le répertoire de scripts de Nautilus. Certains s'exécutent avec les [[:sudo|privilèges utilisateur]] ce qui signifie que vous pouvez endommager gravement votre système. Agissez donc avec beaucoup de prudence quand le script vous demande le mot de passe pour modifier le système. +Les scripts suivants et d'autres trouvés sur le Web peuvent être copiés dans le répertoire de scripts de Nautilus. Certains s'exécutent avec les [[:permissions administrateur]] ce qui signifie que vous pouvez endommager gravement votre système. Agissez donc avec beaucoup de prudence quand le script vous demande le mot de passe pour modifier le système.\\ 
-Beaucoup de scripts sont déjà présents dans les [[:depots|dépôts]] et peuvent être facilement installés par votre [[:gestionnaire_de_paquets|gestionnaire de paquets]]. Reportez-vous à la page de l'[[:nautilus_utilisation_avancee|utilisation avancée de nautilus]] pour voir la liste complète de ces scripts.+Beaucoup de scripts sont déjà présents dans les [[:dépôts]] et peuvent être facilement installés par votre [[:gestionnaire de paquets]]. Reportez-vous à la page de l'[[:nautilus_utilisation_avancee|utilisation avancée de GNOME Fichiers]] pour voir la liste complète de ces scripts.
  
 ===== Installation ===== ===== Installation =====
-Pour commencer, il vous faudra [[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>nautilus-scripts-manager]]**. Ce paquet gère le dossier de scripts de Nautilus qui se trouve dans **~/.gnome2/nautilus-scripts** pour [[:Precise]] et également pour l'environnement de bureau [[:MATE]]. Et pour les autres versions il se trouve dans **~/.local/share/nautilus/scripts/**. Vous pouvez également mettre des scripts valables pour tous les utilisateurs dans **/usr/share/nautilus-script**. \\ + 
-(Le répertoire **.local** est caché dans votre dossier personnel. Pour y accéder il faut préalablement afficher les fichiers cachés. Dans la barre des menus -> Affichage -> Afficher les fichiers cachés ou faites Ctrl + h). +Pour commencer, il vous faudra [[:deb#installer_un_paquet_deb|installer le paquet]] ''[[apt>nautilus-scripts-manager]]''. Ce paquet gère le dossier de scripts de GNOME Fichiers se trouvant dans ''~/.local/share/nautilus/scripts/'' pour l'environnement de bureau GNOME. Vous pouvez également mettre des scripts valables pour tous les utilisateurs dans ''/usr/share/nautilus-script''.\\ 
-Quand des scripts sont présents dans le dossier de scripts, il s'ouvre par clic-droit → Scripts → Ouvrir le dossier de scripts.+(Le répertoire ''.local'' est caché dans votre dossier personnel. Pour y accéder il faut préalablement afficher les fichiers cachés. Dans la barre des menus → //Affichage// → //Afficher les fichiers cachés//, ou faites ''Ctrl''+''H'').\\ 
 +Quand des scripts sont présents dans le dossier de scripts, il s'ouvre par clic droit → //Scripts// → //Ouvrir le dossier de scripts//.\\
 Tant qu'il n'y a pas de scripts dedans le raccourci n'est pas disponible. Tant qu'il n'y a pas de scripts dedans le raccourci n'est pas disponible.
  
-Placez-y vos scripts et [[:permissions|rendez-les exécutables]] en faisant un clic droit sur le script en question -> Propriétés -> onglet Permissions -> et cocher la case "Autoriser l’exécution du fichier comme un programme". Vous devriez nommer ces fichiers de façon à ce qu'ils évoquent quelque chose pour vous car c'est sous leurs noms qu'ils apparaîtront dans vos menus Nautilus. De plus vous n'avez pas besoin de rajouter l'extension **.sh** de scripts shell. Il est également possible de créer des dossiers pour mieux organiser les scripts. +Placez-y vos scripts et [[:permissions|rendez-les exécutables]] en faisant un clic droit sur le script en question → //Propriétés// → onglet //Permissions// → et cocher la case //Autoriser l’exécution du fichier comme un programme//. Vous devriez nommer ces fichiers de façon à ce qu'ils évoquent quelque chose pour vous car c'est sous leurs noms qu'ils apparaîtront dans vos menus GNOME Fichiers. De plus vous n'avez pas besoin de rajouter l'extension ''.sh'' de scripts [[:shell]]. Il est également possible de créer des répertoires pour mieux organiser les scripts.\\ 
- Vos scripts seront alors disponibles dans toutes les fenêtres Nautilus dans //Fichier // -> Scripts, ainsi que dans le menu contextuel (clic droit). Vous ne verrez pas le menu //Fichier // tant que vous n'aurez pas ajouté votre premier script dans **~/.gnome2/nautilus-scripts** ou dans **~/.local/share/nautilus/scripts/**.+Vos scripts seront alors disponibles dans toutes les fenêtres GNOME Fichiers dans //Fichier // → //Scripts//, ainsi que dans le menu contextuel (clic droit). Vous ne verrez pas le menu //Fichier // tant que vous n'aurez pas ajouté votre premier script dans ''~/.local/share/nautilus/scripts/''.
  
-Voir aussi: +Le chemin des scripts pour : 
-  * [[#Les pièges à éviter]], +  * Caja (MATE) est : ''~/.config/caja/scripts'' 
-  * [[#Exemples]].+  * GNOME Fichiers (GNOME/Unity) est : ''~/.local/share/nautilus/scripts'' 
 +  * Némo (Cinnamon) est : ''~/.local/share/nemo/scripts/'' 
 + 
 +Voir aussi : 
 +  * [[#Les pièges à éviter]] 
 +  * [[#Exemples]]
  
 ===== Sélection de scripts ===== ===== Sélection de scripts =====
  
-Vous avez déjà des scripts Nautilus sur la page [[:scripts utiles]]+Vous avez déjà des scripts GNOME Fichiers sur la page [[:scripts utiles]].
- +
-Le script [[http://www.gtk-apps.org/content/show.php/Script+Installer?content=67612|Script Installer]] permet d'installer automatiquement les scripts Nautilus.+
  
 ==== Les scripts dans les dépôts Canonical ==== ==== Les scripts dans les dépôts Canonical ====
Ligne 37: Ligne 39:
 ==== Plusieurs scripts sélectionnés par un tiers ==== ==== Plusieurs scripts sélectionnés par un tiers ====
  
-  * **[[http://www.gtk-apps.org/content/show.php/Nautilus+Scripts+Pack+Mini?content=85788|Nautilus Scripts Pack Mini]]** +  * [[https://www.linux-apps.com/content/show.php/Nautilus+Scripts+Pack+Mini?content=85788|Nautilus Scripts Pack Mini]] 
-  * [[http://www.gtk-apps.org/content/show.php/Nautilus+Scripts+Pack?content=90330|Nautilus Scripts Pack]] +  * [[https://www.linux-apps.com/content/show.php/Nautilus+Scripts+Pack?content=90330|Nautilus Scripts Pack]] 
-  * [[http://www.gtk-apps.org/content/show.php/NScripts?content=67655|NScripts]] +  * [[https://www.linux-apps.com/content/show.php/NScripts+Ultimate?content=68599|NScripts Ultimate]] 
-  * [[http://www.gtk-apps.org/content/show.php/NScripts+Ultimate?content=68599|NScripts Ultimate]] +  * [[https://www.linux-apps.com/content/show.php/Ultimate+Edition+Nautilus+Scripts+Pack?content=104451|Ultimate Edition Nautilus Scripts Pack]]
-  * [[http://www.gtk-apps.org/content/show.php/Ultimate+Edition+Nautilus+Scripts+Pack?content=104451|Ultimate Edition Nautilus Scripts Pack]]+
  
 ==== Web ==== ==== Web ====
Ligne 49: Ligne 50:
 ==== Conversion de fichier ==== ==== Conversion de fichier ====
  
-  * [[http://www.gtk-apps.org/content/show.php/Audio%2BVideo%2BImage%2BText%2BISO+Convert?content=92533|Audio/Video/Image/Text/ISO Convert]] (nécessite au [[apt>xterm,zenity,ffmpeg,imagemagick,amrwb,faac,faad2,ffmpeg-libs,gpac,gstreamer-ffmpeg,gstreamer-plugins-*,xmms2-avcodec,xmms2-,wma|moins ça]], ou [[apt>xterm,zenity,ffmpeg,imagemagick,amrwb,faac,faad2,ffmpeg-libs,gpac,gstreamer-ffmpeg,gstreamer-plugins-*,xmms2-avcodec,xmms2-,wma,curl,links,kdegraphics,espeak,faac,faad2,antiword,unrtf,odt2txt,txt2tags,libavcodec-unstripped-52,AcetoneISO,nrg2iso,daa2iso,cdd2iso,uif|tout ça]]). +  * [[https://www.linux-apps.com/content/show.php/Audio%2BVideo%2BImage%2BText%2BISO+Convert?content=92533|Audio/Video/Image/Text/ISO Convert]] (nécessite au [[apt>xterm,zenity,ffmpeg,imagemagick,amrwb,faac,faad2,ffmpeg-libs,gpac,gstreamer-ffmpeg,gstreamer-plugins-*,xmms2-avcodec,xmms2-,wma|moins ça]], ou [[apt>xterm,zenity,ffmpeg,imagemagick,amrwb,faac,faad2,ffmpeg-libs,gpac,gstreamer-ffmpeg,gstreamer-plugins-*,xmms2-avcodec,xmms2-,wma,curl,links,kdegraphics,espeak,faac,faad2,antiword,unrtf,odt2txt,txt2tags,libavcodec-unstripped-52,AcetoneISO,nrg2iso,daa2iso,cdd2iso,uif|tout ça]]). 
-  * [[http://www.gtk-apps.org/content/show.php/avi+%26+mp4+converter?content=64899|avi & mp4 convertisseur.]] +  * [[https://www.linux-apps.com/content/show.php/avi+%26+mp4+converter?content=64899|avi & mp4 convertisseur.]] 
-  * [[http://www.gtk-apps.org/content/show.php/PDF+to+PNG?content=83110|PDF to PNG]]+  * [[https://www.linux-apps.com/content/show.php/PDF+to+PNG?content=83110|PDF to PNG]] //script non disponible sur ce lien//
   * [[:pdftohtml|pdf to html]]   * [[:pdftohtml|pdf to html]]
   * [[timidity#script pour convertir un fichier midi vers un fichier audio|Convertir un fichier MIDI vers un fichier audio]] (nécessite [[timidity|TiMiDiTy]])   * [[timidity#script pour convertir un fichier midi vers un fichier audio|Convertir un fichier MIDI vers un fichier audio]] (nécessite [[timidity|TiMiDiTy]])
 +  * [[https://forum.ubuntu-fr.org/viewtopic.php?pid=22833469#p22833469|Convertir un lot d'images au format webp]]
  
 ==== Image ==== ==== Image ====
  
-  * [[http://www.gtk-apps.org/content/show.php/Resize+Image?content=110541|Changer la taille des images.]] Resize Image +  * [[http://benn.org/software/nautilus-resize-image/|Retailler image]] (Resize-Image) : Script datant de 2009 mais toujours fonctionnel et très efficaceDescriptif d'installation à lire mais qui doit être un peu aménagé : le répertoire proposé pour l'enregistrement du script ''~/.gnome2/'' n'existe plus mais peut être remplacé par n'importe quel [[:arborescence#répertoire personnel]].\\ 
-  * Ajouter "Redimensionner les images..." dans le menu contextuel des images. [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>nautilus-image-converter]]** puis redémarrer la session.+Vous pouvez aussi ajouter d'autres tailles que celles prévues dans le script (800 et 1024) : il suffit de le modifier en ajoutant les tailles qui vous intéressent à la ligne ''SIZES''
 + 
 +Pour chaque taille d'image, il faut créer un lien vers ce script. 
 + 
 +Ouvrir un terminal, aller dans le répertoire ''~/.local/share/nautilus/scripts/'' (dans le terminal, taper '''cd''+''espace'' puis tirer ce répertoire ''scripts'' sur le terminal puis la touche ''Entrée'').\\ 
 +Entrer alors, par exemple, la commande suivante pour la taille 600 pixels : 
 +<code>ln -s ~/chemin d'enregistrement script/ResizeImage.sh "Retailler image (600px)"</code> 
 +(Comme pour la commande précédente, après ''ln -s '', il suffit de tirer le script ''ResizeImage'' sur le terminal pour que le chemin s'inscrive automatiquement). 
 + 
 +Faire de même pour toutes les autres tailles prévues dans le script.\\ 
 +Bien ajouter ''.sh'' au nom du script pour qu'il apparaisse et s'exécute. 
 + 
 +  * Ajouter "Redimensionner les images..." dans le menu contextuel des images. [[:deb#installer_un_paquet_deb|Installez le paquet]] ''[[apt>nautilus-image-converter]]'' puis redémarrer la [[:session utilisateur|session]].
  
 ==== Audio ==== ==== Audio ====
  
-  * [[http://www.gtk-apps.org/content/show.php/Enqueue+in+Audacious?content=80429|Enqueue in Audacious]] +  * [[https://www.linux-apps.com/content/show.php/Enqueue+in+Audacious?content=80429|Enqueue in Audacious]] 
-  * [[http://www.gtk-apps.org/content/show.php/Extract+Audio?content=83072|Extraire l'audio de tout fichier multimedia]]. +  * [[https://www.linux-apps.com/content/show.php/Extract+Audio?content=83072|Extraire l'audio de tout fichier multimedia]]. 
-  * [[timidity#script pour convertir un fichier midi vers un fichier audio|Convertir un fichier MIDI vers un fichier audio]] (nécessite [[timidity|TiMiDiTy]])+  * [[:timidity#script pour convertir un fichier MIDI vers un fichier audio|Convertir un fichier MIDI vers un fichier audio]] (requiert [[:TiMiDiTy]])
  
 ==== Gestion des fichiers ==== ==== Gestion des fichiers ====
  
-  * [[http://www.gtk-apps.org/content/show.php/Send+to...?content=67627|Envoyer vers - Send to...]] +  * [[https://www.linux-apps.com/content/show.php/Encrypt%2BDecrypt+Files?content=74653|Encrypter/Decrypter les fichiers]] (nécessite gpg) 
-  * [[http://www.gtk-apps.org/content/show.php/Encrypt%2BDecrypt+Files?content=74653|Encrypter/Decrypter les fichiers]] (nécessite gpg) +  * [[https://www.linux-apps.com/content/show.php/Remove+Spaces?content=76200|Retirer les espaces des fichiers et dossiers (et les remplacer par underscore).Remove Spaces.]] 
-  * [[http://www.gtk-apps.org/content/show.php/Remove+Spaces?content=76200|Retirer les espaces des fichiers et dossiers (et les remplacer par underscore).Remove Spaces.]] +  * [[http://g-scripts.sourceforge.net/nautilus-scripts/File%20System%20Management/envoiftp|Envoyer des fichiers par ftp]].
-  * [[http://g-scripts.sourceforge.net/nautilus-scripts/File%20System%20Management/envoiftp|Envoie de fichier par ftp]].+
   * [[http://g-scripts.sourceforge.net/nautilus-scripts/File%20Processing/Misc/send_file_%20as_email_attachment_-_Thunderbird|Envoyer les fichiers en pièce-jointe de thunderbird]]   * [[http://g-scripts.sourceforge.net/nautilus-scripts/File%20Processing/Misc/send_file_%20as_email_attachment_-_Thunderbird|Envoyer les fichiers en pièce-jointe de thunderbird]]
-  * [[http://soft.freem2.fr/2010/05/21/envoyer-des-fichiers-avec-thunderbird/|Envoyer les fichiers en pièce-jointe de thunderbird(amélioré)]] -lien mort- 
   * [[:dossiers_et_fichiers_caches#script_automatique|Masquer/afficher des fichiers]]   * [[:dossiers_et_fichiers_caches#script_automatique|Masquer/afficher des fichiers]]
  
 ==== Administration ==== ==== Administration ====
  
-  * [[http://www.gtk-apps.org/content/show.php/Open+As+Root%28Working%29?content=76932|Ouvrir en tant que Root]] +  * [[https://www.linux-apps.com/content/show.php/Open+As+Root%28Working%29?content=76932|Ouvrir en tant que Root]] 
-  * [[http://www.gtk-apps.org/content/show.php/Make+MD5+sums?content=69749|Vérifier le MD5]]. +  * [[https://www.linux-apps.com/content/show.php/Make+MD5+sums?content=69749|Vérifier le MD5]]. 
-  * [[http://www.gtk-apps.org/content/show.php/Make%2BCheck+SFV?content=68362|Vérifier avec le SFV]]. +  * [[https://www.linux-apps.com/content/show.php/Make%2BCheck+SFV?content=68362|Vérifier avec le SFV]]. 
-  * [[http://www.gtk-apps.org/content/show.php/Renamer?content=87601|Renommer les fichiers.]] Renamer. +  * [[https://www.linux-apps.com/content/show.php/Terminal+Here?content=73250|Ouvrir un Terminal ici]] 
-  * [[http://www.gtk-apps.org/content/show.php/Terminal+Here?content=73250|Ouvrir un Terminal ici (répertoire actuel).Terminal Here.]] +  * [[https://www.linux-apps.com/content/show.php/Open+Nautilus+as+Root?content=73610|Ouvrir Nautilus en root.]] 
-  * [[http://www.gtk-apps.org/content/show.php/Open+Nautilus+as+Root?content=73610|Ouvrir Nautilus en root.]] +  * [[https://www.linux-apps.com/content/show.php/Remove+~.~%2C.bak.old.OLD.BAK_curr_directo?content=73733|Nettoyer les ~.~,.bak.old.OLD.BAK_curr_directo]]
-  * [[http://www.gtk-apps.org/content/show.php/Remove+~.~%2C.bak.old.OLD.BAK_curr_directo?content=73733|Nettoyer les ~.~,.bak.old.OLD.BAK_curr_directo]]+
  
 ==== Développement ==== ==== Développement ====
  
-  * [[http://www.gtk-apps.org/content/show.php/Make+DEB+Package?content=79785|Faire un fichier deb]] ( plus facilement ). +  * [[https://www.linux-apps.com/content/show.php/Make+DEB+Package?content=79785|Faire un fichier deb]] ( plus facilement ). 
-  * [[http://www.gtk-apps.org/content/show.php/dot-tree?content=105395|Visualisation des dossiers en arbre.]] dot-tree +  * [[https://www.linux-apps.com/content/show.php/dot-tree?content=105395|Visualisation des dossiers en arbre.]] dot-tree
-  * [[http://www.schnuckelig.eu/story/resurection-nautilus-cvs-scripts|Le CVS depuis Nautilus - Nautilus CVS scripts]] +
  
 ==== Internet ==== ==== Internet ====
  
-  * [[http://www.gtk-apps.org/content/show.php/sendToImageshack?content=100952|Envoyer sur imageshack]]. +  * [[https://www.linux-apps.com/content/show.php/sendToImageshack?content=100952|Envoyer sur imageshack]]. 
-  * [[http://forum.ubuntu-fr.org/viewtopic.php?pid=1424293#33|Envoyer sur dl.free.fr]] +  * [[http://forum.ubuntu-fr.org/viewtopic.php?pid=1424293#33|Envoyer sur dl.free.fr]]
   * [[http://www.xorax.info/blog/news/200-script-dl-free-fr-automatique.html|script automatique pour télécharger sur dl.free.fr]]   * [[http://www.xorax.info/blog/news/200-script-dl-free-fr-automatique.html|script automatique pour télécharger sur dl.free.fr]]
-  * [[http://blog.anandkapre.com/2009/ubuntu/08-19-ubuntu-linux-rapidshare-right-click-uploader/|Rapidshare Multiple Uploader.]] ( [[http://www.ubuntu-inside.me/2009/08/one-click-multi-rapidshare-uploader.html|mirroir 1]], [[http://ubuntuforums.org/archive/index.php/t-974303.html|miroir 2]]) 
-  * [[http://forum.ubuntu-fr.org/viewtopic.php?id=384599|Upload sur Megaupload (site fermé)]] 
  
 ==== Divers ==== ==== Divers ====
  
-  * [[http://www.gtk-apps.org/content/show.php/Simple+alarm?content=111811|Lancer une Alarme à une heure donnée]] aussi [[http://forum.ubuntu-fr.org/viewtopic.php?pid=6755501#p6755501|ici]], +  * [[https://www.linux-apps.com/content/show.php/download_opensubtitle?content=68085|Télécharger les sous-titres sur download_opensubtitle]].
-  * [[http://gnome-look.org/content/show.php/Nautilus+Extension+Kill+Thumbs?content=92143|Supprimer automatiquement les fichiers Thumbs.db de vos répertoires]], +
-  * [[http://www.gtk-apps.org/content/show.php/Automated+Font+Installer?content=67610|Installation de police]], +
-  * [[http://www.gtk-apps.org/content/show.php/TTF+Font+Manager?content=82473|TTF Font Manager]], +
-  * [[http://www.gtk-apps.org/content/show.php/download_opensubtitle?content=68085|Télécharger les sous-titres sur download_opensubtitle]].+
  
 +===== Créer un script =====
  
-===== Les pièges à éviter =====+Il vous suffit d'un [[editeur_de_texte|éditeur de texte]] pour écrire votre script.
  
-La première chose qu'un **script Nautilus** doit récupérer, c'est la liste des fichiers sur lesquels il doit opérer (les fichiers qui étaient sélectionnés par l'utilisateur lorsqu'il a lancé le script). Malheureusement, c'est loin d'être quelque chose de trivial+Pour créer un script il faut être familier avec un langage de script : la façon la plus simple et répandue est avec [[:Bash]]
-En effet, à cause soit de bugs, soit d'interprétation du shell, plusieurs choses sont à ne pas utiliser.+Les langages [[:python]] et [[:Perl]] son parfois utilisés.
  
-==== Ne pas utiliser les arguments passés aux scripts ====+Chaque fois qu'un script est appelé, Nautilus définit automatiquement des variables qui peuvent être utilisées dans vos scripts
 +  - ''NAUTILUS_SCRIPT_SELECTED_FILE_PATHS''\\ Chemins des fichiers délimités par un espace.\\  
 +  - ''NAUTILUS_SCRIPT_SELECTED_URIS''\\ URI délimitées par un espace.\\  
 +  - ''NAUTILUS_SCRIPT_CURRENT_URI''\\ L'URI où il y a eu la séléction.\\  
 +  - ''NAUTILUS_SCRIPT_WINDOW_GEOMETRY''\\ Position et taille de la fenêtre Nautilus au format **largeurxhauteur+pos_horizontale+pos_vertical**. Ou vide (avril 2025, Ubuntu 24.04)\\ 
  
-**Nautilus** passe en argument les noms des fichiers sélectionnésPar exemple, si vous êtes dans **/home/user**, et que vous appliquez le script sur **toto** et **titi**, $PWD et $NAUTILUS_SCRIPT_CURRENT_URI vaudront '/home/user', $1 vaudra 'toto' et $2 vaudra 'titi'.+<note help> 
 +Dans certains cas, les chemins peuvent être séparés par une espace et pas par un retour à la ligne. 
 +Si un lecteur a des précisions, merci de contacter la [[:wiki:liste_discussion|liste de discussion de la documentation]]. 
 +</note>
  
-Premier problème, **Nautilus** offre une vue liste (qui pourrait d'ailleurs se nommer "arborescente"), on peut donc sélectionner des fichiers qui sont dans des sous-répertoires du répertoire courantDans ce cas "$PWD/$1" ne sera pas le bon chemin : [[http://bugzilla.gnome.org/show_bug.cgi?id=549816|bug 549816]].+Il existe des outils d'analyse de scripts pour savoir s'il respecte les bonnes pratiquesPour le langage bash il existe 
 +''[[apt>shellcheck]]''.
  
-Second problème, sur le Bureau par exemple, **Nautilus** ne passe aucun argument au script : [[http://bugzilla.gnome.org/show_bug.cgi?id=549910|bug 549910]].+===== Les pièges à éviter =====
  
-Il **ne faut donc pas** utiliser des scripts du genre :+La première chose qu'un **script Nautilus** doit récupérer, c'est la liste des fichiers sur lesquels il doit opérer (les fichiers qui étaient sélectionnés par l'utilisateur lorsqu'il a lancé le script). Comme pour tout script, il faut pour cela rédiger correctement le script et éviter certaines erreurs.
  
-<code bash>+==== Attention en utilisant les arguments passés aux scripts  ==== 
 + 
 +Nautilus passe en argument les noms des fichiers sélectionnés. Par exemple, si vous êtes dans **/home/user**, et que vous appliquez le script sur **toto** et **titi**, ''$PWD'' vaudra '/home/user' et ''$NAUTILUS_SCRIPT_CURRENT_URI'' vaudra 'file:%%///%%home/user' .''$1'' vaudra 'toto' et ''$2'' vaudra 'titi'
 + 
 +Premier problème, Nautilus offre une vue liste (qui pourrait d'ailleurs se nommer "arborescente"), on peut donc sélectionner des fichiers qui sont dans des sous-répertoires du répertoire courant. 
 + 
 +Il **faut donc proscrire** d'utiliser des scripts du genre : 
 +<file>
 for arg for arg
 do do
-  do_something "$arg"+  do_something $arg
 done done
 </code> </code>
- 
 ou ou
- 
 <code bash> <code bash>
-for arg in "$@"+for arg in $@
 do do
   do_something "$arg"   do_something "$arg"
 done done
-</code> +</file>
- +
-Ces scripts ne marcheraient pas dans tous les cas. Normalement, ce problème est corrigé dans Gnome 2.23 (Ubuntu ≥ 8.10). +
- +
-Mais, même une fois corrigé, la méthode suivante devrait poser moins de problèmes (car on obtient directement la liste des chemins complets des fichiers).+
  
-Heureusement, **Nautilus** fournit une variable $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS, qui contient la liste des chemins complets des fichiers sélectionnés, séparés par '\n' (retour à la ligne).+**Nautilus** fournit une variable ''$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'', qui contient la liste des chemins complets des fichiers sélectionnés, séparés par '\n' (retour à la ligne).
 C'est donc cette variable qu'il faut utiliser. Par exemple : C'est donc cette variable qu'il faut utiliser. Par exemple :
-<code bash>+<file>
 #!/bin/bash #!/bin/bash
- +function afficherFichier () {  
-function faireQqChose () { + zenity --info --text "le fichier est $*"  
- zenity --info --text "le fichier est $@+}
- }+
  
 IFS=$'\n' # on limite le IFS aux sauts de ligne IFS=$'\n' # on limite le IFS aux sauts de ligne
-faireQqChose $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS +afficherFichier "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" 
- +</file>
-exit 0 +
-</code> +
- +
-<note help> +
-Dans certains cas, les chemins peuvent être séparés par un espace et pas par un retour à la ligne. +
-Si un lecteur a des précisions, merci de contacter la [[:wiki:liste_discussion|liste de discussion de la documentation]]. +
-</note>+
  
 ==== Itérer sur les fichiers ==== ==== Itérer sur les fichiers ====
Ligne 170: Ligne 176:
 Par exemple : Par exemple :
  
-<code bash>+<file>
 for arg in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS for arg in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
 do do
   do_something "$arg"   do_something "$arg"
 done done
-</code>+</file>
  
-**n'est pas correct**, car si les chemins sont '/tmp/a b/c' et '/tmp/d e', la boucle fera 4 itérations : '/tmp/a', 'b/c', '/tmp/d' et 'e'.+**n'est pas correct sans les guillemets aux variables**, car si les chemins sont '/tmp/a b/c' et '/tmp/d e', la boucle fera 4 itérations : '/tmp/a', 'b/c', '/tmp/d' et 'e'.
  
-Une première solution est de faire : +La même solution d'une autre manière 
- +<file>
-<code bash>+
 printf %s "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | printf %s "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" |
 while read -r arg while read -r arg
Ligne 187: Ligne 192:
   do_something "$arg"   do_something "$arg"
 done done
-</code>+</file>
  
 Il ne faut pas utiliser **echo** (en **sh**, il ne fonctionnerait pas sur un fichier contenant un '\' suivi d'un 'n'), et il faut bien passer l'argument **-r** à **read** (même raison). Il ne faut pas utiliser **echo** (en **sh**, il ne fonctionnerait pas sur un fichier contenant un '\' suivi d'un 'n'), et il faut bien passer l'argument **-r** à **read** (même raison).
 +Une seconde solution est de changer l'[[wp>Input_Field_Separators|IFS]] :
  
-Une seconde solution est de changer l'[[http://www.livefirelabs.com/unix_tip_trick_shell_script/oct_2003/10132003.htm|IFS]] : +<file>
- +
-<code bash>+
 IFS=' IFS='
 ' '
Ligne 202: Ligne 206:
 </code> </code>
  
-Ainsi, chaque argument sera une ligne de $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS. +Ainsi, chaque argument sera une ligne de ''$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS''.\\ 
 On peut aussi vouloir passer tous les arguments à un autre script (sans itérer) : On peut aussi vouloir passer tous les arguments à un autre script (sans itérer) :
  
Ligne 210: Ligne 213:
 ' '
 do_something $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS do_something $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
-</code>+</file>
  
 Si vous respectez ceci, votre script fonctionnera aussi bien en **/bin/bash** qu'en **/bin/sh** (du moins pour cette partie) et pour tous les fichiers, mêmes les cas particuliers. Si vous respectez ceci, votre script fonctionnera aussi bien en **/bin/bash** qu'en **/bin/sh** (du moins pour cette partie) et pour tous les fichiers, mêmes les cas particuliers.
- 
 Après divers test voici une solution qui fonctionne même si le nom de fichier ou dossier contient des espaces, virgules ou autres caractères spéciaux : Après divers test voici une solution qui fonctionne même si le nom de fichier ou dossier contient des espaces, virgules ou autres caractères spéciaux :
 utiliser la commande **find** ! utiliser la commande **find** !
 par exemple pour une opération sur des fichiers mp3 : par exemple pour une opération sur des fichiers mp3 :
  
-<code bash>+<file>
 #!/bin/bash #!/bin/bash
 IFS=' IFS='
Ligne 227: Ligne 229:
  find "$arg" -depth -iname "*.mp3" -exec votre_commande {} \;  find "$arg" -depth -iname "*.mp3" -exec votre_commande {} \;
 done done
-</code>+</file>
  
-Le *.mp3 va prendre en compte les fichier mp3 contenus dans votre sélection et le {} remplace le nom de fichier dans votre commande à appliquer sur les mp3.+Le ''.mp3'' va prendre en compte les fichier MP3 contenus dans votre sélection et le {} remplace le nom de fichier dans votre commande à appliquer sur les mp3.
  
 ===== Exemples ===== ===== Exemples =====
  
 ==== Supprimer les fichiers de sauvegarde de Gedit ==== ==== Supprimer les fichiers de sauvegarde de Gedit ====
-Gedit copie chaque fichier avant la sauvegarde sous le nom « $fichier~ ». Il suffira d'appliquer le script d'un //clic droit -> Scripts -> rm-backups.sh// : 
  
-<code bash>+Gedit copie chaque fichier avant la sauvegarde sous le nom « $fichier~ ». Il suffira d'appliquer le script d'un //clic droit -> Scripts -> rm-backups.sh//
 + 
 +<file>
 #! /bin/bash #! /bin/bash
  
 rm ./*~ rm ./*~
 zenity --info --text="Fichiers de backup *~ supprimés :)" zenity --info --text="Fichiers de backup *~ supprimés :)"
-</code>+</file>
  
 <note tip> On peut désactiver la création de fichier de sauvegarde par Gedit en décochant la case "Créer une copie de sauvegarde des fichiers avant l’enregistrement" dans **Édition -> Préférences -> Éditeur**.</note> <note tip> On peut désactiver la création de fichier de sauvegarde par Gedit en décochant la case "Créer une copie de sauvegarde des fichiers avant l’enregistrement" dans **Édition -> Préférences -> Éditeur**.</note>
- 
- 
  
 ==== Ouvrir en tant qu'administrateur ==== ==== Ouvrir en tant qu'administrateur ====
  
-=== Éditer un fichier avec Gedit avec les privilèges ROOT ===+=== Éditer un fichier avec VIM avec les privilèges ROOT ===
  
-<code bash>+<note warning>**Extrêmement risqué, ne jouez pas avec**</note> 
 +<file>
 #!/bin/bash #!/bin/bash
-gksudo -u root -k -D "Éditer les fichiers sous root" gedit "$@" +C'est sérieux il ne faut pas jouer avec les droits root 
-</code> +notify-send "si vous ne savez pas ce que vous faites, fermez la fenêtre
- +gnome-terminal -- pkexec --user root vim "$(realpath "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS")
-=== Ouvrir Nautilus dans le répertoire choisi avec les privilèges « root » === +</file>
- +
-<code bash> +
-#!/bin/bash +
-    # root-nautilus-here +
-    # Ouvrir Nautilus dans le répertoire choisi avec les privilèges ROOT +
-    # nécessite des privilèges sudo et gksudo, ce qui peut entrainer des risques de sécurités         +
-    #Installez le dans votre répertoire ~/Nautilus/scripts. +
-    # +
-    # Placé dans le domaine public par Shane T. Mueller 2001 +
-    # correctifs fournis par Doug Nordwall +
-    # +
-    # 2004.04.18 -- keith@penguingurus.com - Ajout de l'utilisation de gksudo +
-    #               afin de lancer une fenetre de mot de passe si sudo a expire. +
-    #               Les echos sont renvoyés +
-    #               vers la sortie standard de root. Mais gksudo  +
-    #               met à jour votre acces sudo +
-    #               donc le lancement de Nautilus avec sudo fonctionnera sans +
-    #               demander de mot de passe         +
-     +
-     +
-    foo=`gksudo -u root -k -m\ +
- "entrez votre mot de passe afin de lancer Nautilus en tant que root"+
- /bin/echo "got r00t?"` +
-    sudo nautilus --no-desktop $NAUTILUS_SCRIPT_CURRENT_URI +
- +
-</code> +
- +
- +
-=== Exécuter les fichiers en tant que ROOT === +
- +
-<code bash> +
-#!/bin/bash +
-for i +
-do +
- gksudo -u root -"$i" +
-done +
-</code> +
- +
- +
-==== Ouvrir un terminal ici ==== +
- +
-**Nautilus Open Terminal** permet d'ouvrir un terminal directement dans le répertoire courant de Nautilus //via// un clic droit → //Ouvrir dans un terminal//+
- +
-Pour l'utiliser, il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>nautilus-open-terminal]]** et ensuite de redémarrer la session.+
  
 ==== Lire les fichiers du répertoire avec Rhythmbox ==== ==== Lire les fichiers du répertoire avec Rhythmbox ====
Ligne 306: Ligne 264:
 Permet d'envoyer tous les fichiers du répertoire dans la liste de lecture de [[:Rhythmbox]] : Permet d'envoyer tous les fichiers du répertoire dans la liste de lecture de [[:Rhythmbox]] :
  
-<code bash>+<file>
 #!/bin/sh #!/bin/sh
-base="$(echo $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g')"+ 
 +base="$(echo "$NAUTILUS_SCRIPT_CURRENT_URI| cut -d'/' -f3- | sed 's/%20/ /g')"
  
 if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
    dir="$base"    dir="$base"
 else else
-   while [ -"$1" -a ! -d "$base/$1" ]; do shift; done + while [ -"$1" ] && [ ! -d "$base/$1" ]; do shift; done 
-   dir="$base/$1"+ dir="$base/$1"
 fi fi
  
-if [ "$NAUTILUS_SCRIPT_CURRENT_URI" == "x-nautilus-desktop:///" ]; then+if [ "$NAUTILUS_SCRIPT_CURRENT_URI" = "x-nautilus-desktop:///" ]; then
 dir="Desktop" dir="Desktop"
 fi fi
  
-if [ "$NAUTILUS_SCRIPT_CURRENT_URI" == "trash:" ]; then+if [ "$NAUTILUS_SCRIPT_CURRENT_URI" = "trash:" ]; then
 dir="$HOME/.Trash" dir="$HOME/.Trash"
 fi fi
  
-if [ "$NAUTILUS_SCRIPT_CURRENT_URI" == "file:///" ]; then+if [ "$NAUTILUS_SCRIPT_CURRENT_URI" = "file:///" ]; then
 dir="/" dir="/"
 fi fi
  
-FIRST_URI="`echo -n $NAUTILUS_SCRIPT_SELECTED_URIS`" +FIRST_URI="$NAUTILUS_SCRIPT_SELECTED_URIS"
-if [ "$FIRST_URI" == "x-nautilus-desktop:///home" ]; then +
-dir="$HOME" +
-fi+
  
-if [ "$FIRST_URI" == "x-nautilus-desktop:///computer" ]; then +if [ "$FIRST_URI""x-nautilus-desktop:///home" ]; then 
-dir="/"+ dir="$HOME" 
 +elif [ "$FIRST_URI" = "x-nautilus-desktop:///computer" ]; then 
 + dir="/"
 fi fi
 +
 rhythmbox "$dir" rhythmbox "$dir"
-</code>+</file> 
 + 
 +==== Envoyer par mail des images compressées petites avec Thunderbird ==== 
 + 
 +<file> 
 +#!/bin/sh 
 +IFS=' 
 +
 +notify-send "Patientez..." 
 +# astuce pour prendre en compte les espaces des dossiers et fichiers 
 +printf %s "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
 +emailattachment="" # initialisation de la variable à cause du for 
 +for fullfile in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS 
 +do 
 +    filename="${fullfile##*/}" # isoler le nom de la photo 
 +    convert "$filename" -resize 640 -quality 60% /tmp/"$filename" # compression de la photo 
 +    emailattachment="$emailattachment/tmp/$filename," # collecte des photos 
 +    sleep 500ms 
 +done 
 +fichiersjoints=${emailattachment%?} # enlever la virgule à la fin 
 +thunderbird -compose attachment="'$fichiersjoints'" # créer l'email avec les photos jointes 
 + 
 +exit 0 
 +</file> 
 + 
 +==== Afficher la somme de contrôle SHA256 dans Ubuntu 24.04==== 
 + 
 +<file> 
 +#!/bin/sh 
 +function afficherHashes () {  
 + 
 +    zenity --info --title=sha256sum --text "$(sha256sum $*)" --no-wrap --ok-label=Slava Ukraini! 
 +
 +IFS=$'\n' # on limite l'IFS à "Retour à la ligne" seulement  
 +afficherHashes "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" 
 +</file>
  
  
Ligne 344: Ligne 338:
   * [[http://askubuntu.com/questions/281062/how-to-get-nautilus-scripts-working-on-ubuntu-13-04|Question concernant les scripts Nautilus]],   * [[http://askubuntu.com/questions/281062/how-to-get-nautilus-scripts-working-on-ubuntu-13-04|Question concernant les scripts Nautilus]],
   * [[https://wiki.ubuntu.com/NautilusScriptsHowto|traduction]]   * [[https://wiki.ubuntu.com/NautilusScriptsHowto|traduction]]
-  * **[[https://www.linux-apps.com/browse/cat/126/order/latest|Scripts pour Nautilus sur gtk-apps.org]]** +  * [[https://www.linux-apps.com/browse/cat/126/order/latest|Scripts pour Nautilus sur gtk-apps.org]] 
-  * [[http://g-scripts.sourceforge.net/|Site officiel de nautilus script, avec quelques scripts]]  +  * [[http://g-scripts.sourceforge.net/|Site officiel de nautilus script, avec quelques scripts]]
-----+
  
-//Contributeurs : [[utilisateurs:FredB]], [[utilisateurs:l_africain|L'Africain]]  [[utilisateurs:Fabien26]] (1<sup>re</sup> actualisation)[[:utilisateurs:ner0lph|Floriang]] (2<sup>e</sup> actualisation).//+---- 
 +//[[:Contributeurs]] : [[:utilisateurs:FredB]], [[:utilisateurs:L'Africain]][[:utilisateurs:Fabien26]](1<sup>ère</sup> actualisation) [[:utilisateurs:ner0lph|Floriang]](2<sup>ème</sup> actualisation) [[:utilisateurs:Amiralgaby]].//