#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é
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