Forum Linux.débutant Ligne de commande fonctionne, pas le .sh

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
1
mar.
2022

Bonjour,

Je m'efforce de sauvegarder mon DD avec rsync.
En guise de test, je lance la ligne de commande suivante qui fonctionne parfaitement et où la source est un DD de données interne et la destination mon disque système :

rsync -av --delete /media/qorikancha/Photos/Photos/raw/2007/Guipavas+mariage/  /home/qorikancha/Bureau/arrivee/

Mais à l'inverse, le .sh suivant ne fonctionne pas :

#!/bin/bash
rsync -av --delete /media/qorikancha/Photos/Photos/raw/2007/Guipavas+mariage/  /home/qorikancha/Bureau/arrivee/
read

J'obtiens le message "ligne de commande non trouvée…"
Je pense que le problème se situe au niveau de la ligne "/media/…..", car si je lance un test en "local", c'est à dire la source et la destination situées sur le disque système, cela fonctionne. Par exemple sync -av --delete /home/qorikancha/Bureau/Depart/ /home/qorikancha/Bureau/arrivee/

En vous remerciant pour votre aide.
Cordialement

  • # un # dans le shebang

    Posté par  . Évalué à 2. Dernière modification le 01 mars 2022 à 07:02.

    si ce n'est déja fait :

    #!/bin/bash

    à quoi sert le read sur la seconde ligne?

  • # Erreur de syntaxe ...

    Posté par  . Évalué à 2.

    … me semble-t-il ;-)

    !/bin/bash ==> #!/bin/bash

    Cela devrait mieux fonctionner.
    Pour les tests, ce serait bien de mettre --dry-run en option du rsync surtout avec un --delete

  • # droit d'exécution

    Posté par  . Évalué à 1.

    Peut-être qu'il manque le droit d'éxecution à ton script.
    Tu peux faire un, en console:

    Chmod u+x ton/fichier.sh

    • [^] # Re: droit d'exécution

      Posté par  (site web personnel) . Évalué à 4.

      (Pas de majuscule à chmod)

      chmod u+x chemin/vers/script.sh
      chemin/vers/script.sh

      (Avec chemin/vers/script.sh qui peut être absolu comme /home/toto/script.sh , relatif comme ../../toto/script.sh ou toto/script.sh voire dans le répertoire courant ./script.sh si le répertoire courant n'est pas dans le $PATH)

  • # /bin/bash ?

    Posté par  (Mastodon) . Évalué à 3. Dernière modification le 01 mars 2022 à 08:55.

    Aussi curieux que ça puisse paraître je penserais presque que /bin/bash n'existe pas chez toi. Tu es sur un Linux standard ? Ou un truc plus "limité" ?

    ls -l /bin/bash stp pour être certain de ce côté là :)

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: /bin/bash ?

      Posté par  . Évalué à 2.

      Sinon, il y a la commande whereis, pour savoir si un exécutable existe et connaitre son chemin.

    • [^] # Re: /bin/bash ?

      Posté par  . Évalué à 1.

      Sinon, il y a la commande whereis, pour savoir si un exécutable existe et connaitre son chemin.

  • # path

    Posté par  (site web personnel, Mastodon) . Évalué à 5.

    J'obtiens le message "ligne de commande non trouvée…"

    Quel est le message exact ?

    Si c'est la première ligne, #!/bin/bash, comme suggéré par gUI il faut vérifier par un ls -l /bin/bash que ça existe.
    Dans l'affirmatif, il faut que tu fasses un cat -n sur ton script pour voir s'il y a des ^M à la fin… Dans l'affirmative, c'est que le fichier est en format de fin de lignes dos/windows et non unix.

    Si c'est la seconde ligne, il faut que tu fasses par exemple type rsync pour voir son chemin exact et reporter ce chemin absolu dans le script. Si ce n'est pas une installation standard, ta commande ne sera de toute façon pas trouvée quand tu poseras ton script dans un crontab

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # Problème de droit ?

    Posté par  . Évalué à 2. Dernière modification le 01 mars 2022 à 13:19.

    Tout d'abord, merci à tous pour votre aide.

    1/ En effet, le "read" est inutile, je l'ai enlevé.
    2/ ma première ligne est bien #!/bin/bash
    3/ donc au final le script est le suivant :

    #!/bin/bash
    rsync -av --delete /media/qorikancha/Photos/Photos/raw/2007/Guipavas+mariage/  /home/qorikancha/Bureau/arrivee/
    

    4/ Je progresse : le script fonctionne si je le lance via un terminal :
    mon_chemin/fichier.sh

    5/ Problème : j'ai placé mon fichier "fichier.sh" sur le bureau (Ubuntu) et si je double clique pour le lancer, ça ne fonctionne pas.

    6/ D'où ma question : pourquoi pus-je lancer ce script depuis le terminal et pourquoi il ne se lance pas si je double-clique dessus depuis le bureau ?

    Merci d'avance.

    • [^] # Re: Problème de droit ?

      Posté par  (site web personnel) . Évalué à 4.

      Comme déjà mentionné, est ce que le script est exécutable? Tu peux modifier ça en faisant un clic droit sur le fichier, et dans les propriétés.

      Un LUG en Lorraine : https://enunclic-cappel.fr

    • [^] # Re: Problème de droit ?

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      6 : ce n'est plus tout à fait le même sujet…
      d'abord rendre le script exécutable, ensuite apprendre au bureau à lancer le terminal pour lancer le script tout seul (quoi que, y a peut-être dans le menu contextuel une entrée qui le fait ; le double clic continuant de faire comme d'habitude : ouvrir le fichier avec un programme …auquel cas la question aurait été pourquoi ton éditeur favori n'est pas lancé)
      https://clay-atlas.com/us/blog/2020/08/17/linux-en-ubuntu-double-click-run-shell-script/

      “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # Arrh, le # et non !

    Posté par  . Évalué à 1.

    J'ignore pourquoi dans ce post il me change mon dièse en point d'exclamation mais dans mon script c'est bien un #….

    • [^] # Re: Arrh, le # et non !

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      Tu as fait un titre en commençant la ligne par #
      Il faut sauter une ligne et encadrer ton code de ``` sur une ligne isolée au début et à la fin.

      “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # La balle est dans mon camp...

    Posté par  . Évalué à 1.

    Merci Gil Cot pour ces précisions.
    En effet, ce n'est plus tout à fait la même chose.
    Mon fichier est bien exécutable.
    Il me reste à étudier le lien que tu m'as généreusement envoyé…

    Je trouve tout de même cela mystérieux que le double clic fonctionne si les deux chemins sont sur mon disque système et que cela ne marche plus si mon chemin "origine" est situé sur un autre disque…

    En tous cas, merci beaucoup !!!

  • # Résolu, grâce à vous :

    Posté par  . Évalué à 3.

    Merci Grégoire G, merci à tous d'avoir pris le temps de me répondre.

    La solution était en effet de chercher du côté du montage de mon disque dans le fstab.
    J'ai ajouté l'option "exec" qui a résolu le problème !!!

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.