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 27/11/2011, à 08:53

Hibou57

[CMS] Basename, extention, MIME, et truc et compagnie

Le nouveau produit miraculeux qui résous enfin définitivement tous les problèmes

FILE_PATH="$1";
FILE_EXTENSIONS=${FILE_PATH#*.};        # Every thing after first `.`
FILE_EXTENSION=${FILE_PATH##*.};        # Every thing after last `.`
FILE_BASE_NAME1=${FILE_PATH%%.*};       # Every thing before first `.`
FILE_BASE_NAME2=${FILE_BASE_NAME1##*/}; # Every thing after last `/`
FILE_DIRECTORY=${FILE_PATH%/*};         # Every thing before last `/`
[ -n "$FILE_BASE_NAME2" ];
FILE_IS_HIDDEN=$?;
MIME_TYPE=$(xdg-mime query filetype "$FILE_PATH");

Supposant que le script reçoit un nom de fichier en premier paramètre, et que ce nom de fichier est “/aaaa/bbbb/truc.machin.css”, vous aurez :

  • FILE_PATH => /aaaa/bbbb/truc.machin.css

  • FILE_EXTENSIONS => machin.css

  • FILE_EXTENSION => css

  • FILE_BASE_NAME1 => /aaaa/bbbb/truc

  • FILE_BASE_NAME2 => truc

  • FILE_DIRECTORY => /aaaa/bbbb

  • FILE_IS_HIDDEN => 0

  • MIME_TYPE => text/css

Notez bien les deux variables différentes pour les ou l’extension, ainsi que pour le nom de base, avec ou sans le répertoire. Normalement, cet ensemble de variables est paré à tous les cas de figure. FILE_IS_HIDDEN vaut "1" pour les noms de fichier de la forme “.bidule”, et "0" sinon.

Il est possible d’en faire un script, qui exporte les variables, et d’appeler ce script depuis un autre, pour ne pas avoir à copier ces lignes partout (ce qui est source d’erreurs).

Important : n’utilisez pas la commande file, elle est trop buggée, et assurez-vous que xdg‑mime fonctionne bien chez‑vous, parce que ça n’est pas garantit non-plus. Voir ce sujet pour la solution xdg‑mime : Commande “file” buggée ?

Et maintenant, une page de publicité

La plante miraculeuse
Image : scienceshopping.com

Dernière modification par Hibou57 (Le 01/06/2012, à 01:29)


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne

#2 Le 28/11/2011, à 15:27

Hibou57

Re : [CMS] Basename, extention, MIME, et truc et compagnie

Version améliorée. Pour l’utiliser il faut le sourcer dans votre script. Par exemple, si vous copiez/collez ce qui suit dans un fichier “get_file_infos”, alors dans votre script, utilisez “source get_file_infos”, ce qui est un équivalent du “#include” en C.

Cette version corrige plusieurs lacunes, dont le cas où le nom de fichier n’est pas préfixé par un répertoire et le cas où le chemin du répertoire contient des points. Je repasserai dessus plus tard, je ne garantie pas qu’il ne reste rien à améliorer (je vois déjà une chose à changer, je le ferai plus tard dans la journée).

#!/bin/bash

FILE_PATH="$1";
TEMP_NAME=${FILE_PATH##*/};             # Every thing after last `/`
FILE_EXTENSIONS=${TEMP_NAME#*.};        # Every thing after first `.`
FILE_EXTENSION=${TEMP_NAME##*.};        # Every thing after last `.`
FILE_BASE_NAME1=${FILE_PATH%%.*};       # Every thing before first `.`
FILE_BASE_NAME2=${FILE_BASE_NAME1##*/}; # Every thing after last `/`
FILE_DIRECTORY=${FILE_PATH%/*};         # Every thing before last `/`

[ -n "$FILE_BASE_NAME2" ];
FILE_IS_HIDDEN=$?;

if [ -e "$FILE_PATH" ]; then
   FILE_MIME_TYPE=$(xdg-mime query filetype "$FILE_PATH");
else
   FILE_MIME_TYPE="";
fi;

if [ "$FILE_EXTENSIONS" = "$FILE_PATH" ]; then
   FILE_EXTENSIONS="";
fi;

if [ "$FILE_EXTENSION" = "$FILE_PATH" ]; then
   FILE_EXTENSION="";
fi;

if [ "$FILE_DIRECTORY" = "$FILE_PATH" ]; then
   FILE_DIRECTORY=".";
fi;

export FILE_PATH;
export FILE_EXTENSIONS;
export FILE_EXTENSION;
export FILE_BASE_NAME1;
export FILE_BASE_NAME2;
export FILE_DIRECTORY;
export FILE_IS_HIDDEN;
export FILE_MIME_TYPE;

Dernière modification par Hibou57 (Le 28/11/2011, à 15:30)


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne