Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/01/2016, à 16:48

cristobal78

[résolu] nemo scripts- supprimer caractère en fin ligne

bonjour à tous

Ayant toujours autant de plaisir à bidouiller du coté des nautilus scrips et nemo scripts je me suis lancé dans un script dont le but est de renvoyer le type/format d'un fichier sélectionné par un CTRl - Click droit (grâce aux nemo scripts).

La présence d'une extension du genre .pdf qui n'est aucunement une garantie qu'on est bien devant un fichier pdf, tout comme l'absence de toute extension, ce qui est commun sous linux, rendent à mon sens ma question pas complètement idiote.
Et puis même si elle l'est  smile j'aurai eu le plaisir de chercher comment faire !

Voilà mon script placé dans mon .gnome2/nemo-scripts :

#!/bin/bash
# renvoie le type du fichier et ne traite qu'un seul fichier à la fois
fic=$1
mimetype=$(file -b -i $fic)
echo ${mimetype##*/} | cut -d' ' -f1 | zenity --width=300 --height=200 --list  --title=""   --text=" "  --column="Ce fichier est au format :"

Ça marche mais il comporte 2 défauts qui sont :

1- je n'arrive pas à me débarrasser du " ; " en fin de ligne dans la fenètre zenity
2 - qd je suis sur un fichier libre office au lieu de me dire "writer"  (ou "calc" ou "impress" ...), ce qui me suffirait amplement, le script me renvoie :

vnd.oasis.opendocument.text;

Y aurai-t-il un moyen de faire plus beau que ce que j'obtiens avec mon scripts ?

Dernière modification par cristobal78 (Le 18/01/2016, à 00:59)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#2 Le 17/01/2016, à 17:14

pingouinux

Re : [résolu] nemo scripts- supprimer caractère en fin ligne

Bonjour,
Pour supprimer le ; essaye

file -b -i "$1" | awk -F'[/;]' '{print $2}' | zenity --width=300 --height=200 --list  --title=""   --text=" "  --column="Ce fichier est au format :"

Hors ligne

#3 Le 17/01/2016, à 17:42

carreti

Re : [résolu] nemo scripts- supprimer caractère en fin ligne

Sinon

cut -d';' -f1

devrait marcher aussi ...

Pour le reste faut faire un if

mimetype=$(file -b -i $fic)
if ( grep -q 'vnd.oasis.opendocument' $mimetype ); then
     mimetype=$(file -b $fic) # retirer l'option -i : cf. man file
fi
echo ${mimetype##*/} | cut -d';' -f1 | zenity --width=300 --height=200 --list  --title=""   --text=" "  --column="Ce fichier est au format :"

par contre :

- le résultat "human readable" n'est plus un mimetype
- à améliorer pour "application/vnd.sun.xml.base" (cf. https://en.wikipedia.org/wiki/OpenDocum … Documents)

Dernière modification par carreti (Le 18/01/2016, à 13:14)


Utilisateur et administrateur de Linux et d'Unix (depuis le siècle dernier) et plus précisément ces dernières années de  Linux Gentoo et de Windows 10 ...
Je cherche du boulot sur Paris et RP Ouest en administration système ou mieux dans la tierce maintenance applicative, middleware, base de données, flux ...

Hors ligne

#4 Le 18/01/2016, à 00:58

cristobal78

Re : [résolu] nemo scripts- supprimer caractère en fin ligne

merci à tous les 2.
J'ai modifié comme suggéré par carreti le "cut" ça marche.
En revanche sa condition "if/then/fi" ne change pas le résultat final.
Pas grave je passe en résolu car je finirai sûrement par trouver un moyen de me débarrasser de "vnd.oasis.opendocument"

Dernière modification par cristobal78 (Le 18/01/2016, à 00:58)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#5 Le 18/01/2016, à 07:16

pingouinux

Re : [résolu] nemo scripts- supprimer caractère en fin ligne

cristobal78 a écrit :

En revanche sa condition "if/then/fi" ne change pas le résultat final.

Essaye en remplaçant ceci

if ( grep -q 'vnd.oasis.opendocument' $mimetype ); then

par cela

if ( grep -q 'vnd\.oasis\.opendocument'  <<<"$mimetype" ); then

Dernière modification par pingouinux (Le 18/01/2016, à 07:17)

Hors ligne

#6 Le 18/01/2016, à 11:29

cristobal78

Re : [résolu] nemo scripts- supprimer caractère en fin ligne

bravo Pingouinux pour la touche finale !

Ça marche et donc le résultat est encore plus "beau". smile:):)

Cela dit 2 remarques :
- je ne comprends pas le <<< (je comprends < et je comprends << mais pas le triple <)
- dans ma fenêtre zenity finale je vois :

OpenDocumentText

c-à-d avec O, D et T en majuscules alors que qd je lancais ma précédente version j'obtenais :

vnd.oasis.opendocument.text

donc opendocument (tout en minuscules) suivi d'un point et ensuite le mot text.

Par quel miracle l'orthographe et la casse se sont ils modifiés  ???

Dernière modification par cristobal78 (Le 18/01/2016, à 11:29)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#7 Le 18/01/2016, à 11:56

pingouinux

Re : [résolu] nemo scripts- supprimer caractère en fin ligne

je ne comprends pas le <<<

Cela permet de fournir une chaîne de caractères à l'entrée standard de la commande.
Voici un extrait de man bash

Here Strings
       A variant of here documents, the format is:

              <<<word

       The  word  undergoes  brace  expansion,  tilde expansion, parameter and
       variable expansion, command  substitution,  arithmetic  expansion,  and
       quote  removal.   Pathname  expansion  and  word splitting are not per‐
       formed.  The result is supplied as a single string to  the  command  on
       its standard input.

Par quel miracle l'orthographe et la casse se sont ils modifiés  ???

Ce n'est pas un miracle, le résultat dépend des options fournies à file.

$ file -b -i mondocument.odt
application/vnd.oasis.opendocument.text; charset=binary

$ file -b mondocument.odt
OpenDocument Text

Hors ligne

#8 Le 18/01/2016, à 13:04

carreti

Re : [résolu] nemo scripts- supprimer caractère en fin ligne

Merci pingouinux pour la correction je n'avais pas testé smile
Tout ça, ça m'a donné envie d'utiliser Zenity sur ma Gentoo ...

Ma première idée télécharger des fichiers en sftp (vers et depuis mon NAS) en tache de fond avec putty, avec une boite de dialogue (pour le répertoire de destination) et une barre de progression depuis Dolphin.
Dolphin ne m'affiche rien pendant les transferts en fish par contre il sollicite énormément le processeur, ce qui ne me parait pas normal pour un simple transfert ...


Utilisateur et administrateur de Linux et d'Unix (depuis le siècle dernier) et plus précisément ces dernières années de  Linux Gentoo et de Windows 10 ...
Je cherche du boulot sur Paris et RP Ouest en administration système ou mieux dans la tierce maintenance applicative, middleware, base de données, flux ...

Hors ligne

#9 Le 19/01/2016, à 09:01

cristobal78

Re : [résolu] nemo scripts- supprimer caractère en fin ligne

merci pingouinux

j'ai chez moi le cours de Bash de Eric Sanchis et celui de Frederick Lang tous les assez bien faits je pense, mais malheureusement ni l'un ni l'autre ne parle de "here document" pas plus que de l'opérateur  "<<<"

Y a t il des précautions à prendre par exemple comme on met des espaces avant et après les [   ] dans un if :

commande<<<"$mimetype"
commande  <<<"$mimetype"
commande   <<<  "$mimetype"
commande<<<   "$mimetype"

Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#10 Le 19/01/2016, à 09:11

pingouinux

Re : [résolu] nemo scripts- supprimer caractère en fin ligne

Tes 4 commandes sont correctes.

Hors ligne

#11 Le 19/01/2016, à 17:16

cristobal78

Re : [résolu] nemo scripts- supprimer caractère en fin ligne

ok et  merci pingouinux!


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne