Je suis sûr que je vais me faire remettre le cul pour cette question, mais je n'arrive pas à le comprendre. Je suis nouveau dans les scripts bash, alors allez-y doucement avec moi ...
Je veux pouvoir faire glisser et déposer un fichier sur une application de bureau, qui appelle ensuite un script bash qui déplacera ce fichier vers un emplacement désigné dans le script bash. Voici ce que nous avons jusqu'à présent.
Script bash
#! /bin/bash
mv $file /path/to/new/directory
Cependant, je ne peux pas comprendre comment saisir le en $file
tant que variable lorsque je le fais glisser et le déposer sur une application de bureau. Comment puis-je faire ceci?
Raison: J'ai des papiers que je dois lire dans un dossier, et une fois que je les ai lus, je les mets dans un autre dossier. Je veux simplement vous faciliter la tâche.
Merci, Paul
la source
Réponses:
Créez un fichier script bash avec le contenu suivant:
Créez un fichier .desktop avec le contenu suivant:
Modifiez PATH_TO_NEW_DIRECTORY et PATH_TO_SCRIPT_FILE à votre convenance.
Faire
chmod +x script_name
Faites glisser les fichiers vers le fichier .desktop.
Terminé!.
la source
$file
au lieu de"$file"
(ou"${file}"
) peut vous causer des ennuis.bash
ici;#!/bin/sh
suffit de faire de même (bien qu'il puisse être lié à debash
toute façon sur de nombreux systèmes).Pas besoin de script. Créez un lien vers PATH_TO_NEW_DIRECTORY où vous en avez besoin. Faites ensuite glisser le fichier vers le lien
la source
Ce que @ Slug45 a dit est tout à fait correct. Cependant, il manque une explication.
Lorsque vous faites glisser et déposez un fichier sur un fichier exécutable (ou un lien vers celui-ci), cet exécutable est exécuté avec le chemin d'accès au fichier glissé comme argument. C'est exactement la même chose sous Windows (pas que ça compte vraiment ici).
Bash a un moyen simple de traiter les arguments. Utilisez
"$@"
(avec les guillemets) pour obtenir un tableau de tous les arguments (utile par exemple dans une boucle for..in).$@
,"$*"
et$*
faites des choses similaires, mais vous en avez presque toujours envie"$@"
. Voir ici pour plus d'informations sur les détails.De plus, vous pouvez accéder directement à des arguments spécifiques comme
$X
où X est le numéro d'argument. Par exemple:Dans les grands scripts, il est préférable d'affecter ceux-ci aux variables nommées:
la source