#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 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
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". :):)
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é
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