Nous sommes le Lun 23 Juin, 2025 15:09
Supprimer les cookies

[résolu] decomprimer 7z-archive: Problème avec parametre -o.

Sur le logiciel libre en général ou un logiciel libre en particulier

Dim 23 Oct, 2011 11:03

Salut,

pour me me faciliter des choses je veux définir une action que je peux connecter aux archives *.7z dans le rox-filer. J'ai alors un script que je vais exécuter dans un terminal-emulator, qui va me décomprimer immédiatement son premier argument $1 dans le même dossier, où se trouve déjà l'archive.
Sauf, ça ne marche pas comme prévu. J'ai cherché dans le Web, mais je ne trouve pas la faute dans mon script. Je l'ai déjà pas mal modifié afin d'apprendre ce qu'il se passe, mais je ne comprends pas. Voici ce que je veux discuter avec vous:
Code: Tout sélectionner
#!/bin/bash
#
# expands the archive-file from the first argument
# to the same directory, that the archive is found in.
#

if [ ! -f "$1" ]
then
   echo -e "$1 does not exist or is not a file"
   # sleep is needed as the script will run in another
   # instance of the terminal-emulator (`xterm -e`)
   sleep 3
   exit 2
fi

# In most cases, this should suffice to determine an absolute
# path in the file-system
cd `dirname "$1"`
DIR=`pwd`

# construct an absolute filepath, to be on the safe side.
ARC=`basename $1`
ARC="$DIR/$ARC"

CMD="/usr/bin/7z x -o $DIR/$ARC"
# e ou x, ça ne change rien.
# CMD="/usr/bin/7z e -o $DIR/$ARC"

echo -e "archive is $ARC,\ntarget directory $DIR,\ncommand $CMD"

# comment when found useable.
$CMD

# for the time unused: call in a separate instance of the
# terminal-emulation.
#roxterm -e "$CMD"

Le résultat de l'execution est toujours le même: fichier et dossier sont correct, la commande semble être correcte aussi, mais:
Error:
Incorrect command line


Je suis un peu triste.
[Modifs: Outre Rhin/Français et bêtise: Ne composez jamais des scripts que vous voulez en vérité COPIER et COLLER !(AAAAAAaaahh!!!), pas d'espace entre "$DIR" et "$ARC". Voir prochain commentaire.
Dernière édition par versleouest le Mar 25 Oct, 2011 08:10, édité 4 fois au total.
«La joie naît de se sentir en harmonie avec la symphonie universelle. Nous sommes d’abord des êtres humains, et je ne veux pas que l’on m’appelle consommateur !» (Pierre Rabhi, Novembre 2010)
versleouest

Avatar de l’utilisateur
Messages : 117
Géo : France, Basse-Normandie, Canton Carrouge

Dim 23 Oct, 2011 15:02

Salut, la seule chose qui me dérange est l'espace entre $DIR/ et $ARC sur cette ligne CMD="/usr/bin/7z x -o $DIR/ $ARC"
afrojojo_nologed

Dim 23 Oct, 2011 16:19

afrojojo_nologed a écrit:Salut, la seule chose qui me dérange est l'espace entre $DIR/ et $ARC sur cette ligne CMD="/usr/bin/7z x -o $DIR/ $ARC"


Oui.
Ignorez l'espace, il n'est pas là mais mon scénario est quand-même authentique le message d'erreur inclus :cry:
«La joie naît de se sentir en harmonie avec la symphonie universelle. Nous sommes d’abord des êtres humains, et je ne veux pas que l’on m’appelle consommateur !» (Pierre Rabhi, Novembre 2010)
versleouest

Avatar de l’utilisateur
Messages : 117
Géo : France, Basse-Normandie, Canton Carrouge

Lun 24 Oct, 2011 05:14

Après une lecture un peu plus attentive du script, il me semble que la ligne de commande devrait plutôt ressembler à

CMD="/usr/bin/7z x $ARC -o $DIR/".

En plus je modifierais cette partie
ARC=`basename $1`
ARC="$DIR/$ARC"
en
ARC1=`basename $1`
ARC2="$DIR/$ARC1"
ARC1=`basename $1 .7z`

ce qui permettrais de modifier CMD en

CMD="/usr/bin/7z x $ARC2 -o $DIR/$ARC1/"
ce qui décompresseras l'archive dans un dossier au nom de l'archive.
afrojojo_nologed

Lun 24 Oct, 2011 07:09

Merci afrojojo,
T'as complètement raison et j'ai appliqué tes propositions. Avec le script en bas, j'arrive à ces fichiers et dossiers, selon le output de la commande echo. Je démarre dans /Archive la décompression du fichier archive.7z
Code: Tout sélectionner
archive is archive,
target directory /Archive,
command /usr/bin/7z x /Archive/archive.7z -o /Archive

Le script complet:
Code: Tout sélectionner
#!/bin/bash
#
# expands the archive-file from the first argument
# to the same directory, that the archive is found in.
#

if [ ! -f "$1" ]
then
   echo -e "$1 does not exist or is not a file"
   sleep 3
   exit 2
fi

cd `dirname "$1"`
DIR=`pwd`

ARC1=`basename $1`
ARC2="$DIR/$ARC1"
ARC1=`basename $1 .7z`
CMD="/usr/bin/7z x $ARC2 -o $DIR/$ARC1/"

echo -e "archive is $ARC1,\ntarget directory $DIR,\ncommand $CMD"

$CMD
#roxterm -e "$CMD"

Mais:
Error:
Incorrect command line


Je me contente d'associer xarchiver avec les archives 7z. :x
«La joie naît de se sentir en harmonie avec la symphonie universelle. Nous sommes d’abord des êtres humains, et je ne veux pas que l’on m’appelle consommateur !» (Pierre Rabhi, Novembre 2010)
versleouest

Avatar de l’utilisateur
Messages : 117
Géo : France, Basse-Normandie, Canton Carrouge

Lun 24 Oct, 2011 08:00

Bonjour,

Je ne sais pas si le problème vient de là mais il n'y a pas d'espace entre l'option -o et le nom du dossier.
Exemple : 7z x mon_archive.7z -o/mes_archives/mon_dossier
Vécu : "J'ai une version crackée d'OpenOffice, c'est pour ça qu'elle est en anglais"
fat115

Avatar de l’utilisateur
Messages : 930
Géo : Ardèche ... du nord

Lun 24 Oct, 2011 15:18

fat115 a écrit:Je ne sais pas si le problème vient de là mais il n'y a pas d'espace entre l'option -o et le nom du dossier.
Exemple : 7z x mon_archive.7z -o/mes_archives/mon_dossier


Bummer (comme disent les autres) et Potzdonner (comme disons nous) aussi !
C'était ça ! Evidemment il faut croire la man-page:
-o{Directory}

j'étais sûr, que c'est optionel et pour la lisibilité aurais toujours ajouté un espace !

Merci beaucoup ! :D

(Potzdonner!)
«La joie naît de se sentir en harmonie avec la symphonie universelle. Nous sommes d’abord des êtres humains, et je ne veux pas que l’on m’appelle consommateur !» (Pierre Rabhi, Novembre 2010)
versleouest

Avatar de l’utilisateur
Messages : 117
Géo : France, Basse-Normandie, Canton Carrouge

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit