Re: [#!/fr] Modifier les attributs finder en shell

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Daniel Varlet
Date:  
À: La liste francophone des scripts shell
Sujet: Re: [#!/fr] Modifier les attributs finder en shell

Le 17 mars 09 à 13:00, Yves Petronin a écrit :

> Existe t-il une commande permettant de modifier par exemple le
> "label index" (couleur) d'un fichier ou dossier directement depuis
> un script shell.
> J'ai trouvé la commande mdls qui affiche la valeur de l 'attribut
> kMDItemFSLabel , mais je n'ai rien trouvé pour l' éditer...
>
> J'expérimente avec ce qui suit, mais je voudrais éviter de passer
> par Osascript, car je suis débutant et je ne maitrise pas bien les
> échanges entre le script shell et Apple script.
> Merci
>
>
> #--SCRIPT
> #!/bin/sh
> osascript<<EOF
> tell application "Finder"
>     set NouveauFichier to make new file at desktop with properties  
> {name:"Toto.txt"}
>     tell NouveauFichier to set its label index to 4
>     end tell
> EOF
> #--SCRIPT



Comme il n'y a pas foule pour te répondre...
Il y a peut-être un outil CLI qui traîne quelque part à installer.
osxutils certainement. Mais ce truc ne m'avait pas du tout emballé à
l'époque (mauvaise gestion des paths avec accentués entre autres).
En attendant, je propose ce script/fonction shell qui passe par...
osascript ...

----
#! /bin/bash

## @(#) $Id: changeFinderLabel.sh 0M 2009-03-19T08:26:39Z dan $ v1.0.0     
(Bourne-Again shell script text executable)


## Usage: changeFinderLabel.sh <label> <file>

## Test: for n in 0 1 2 3 4 5 6 7; do d="tôtô ${n}"; mkdir -p "$d";
changeFinderLabel.sh $n "${d}"; done
## Finder sometimes don't display all the new directories created.
Kill and relaunch it: ça lui fera les pieds.

## Exit immediately on error
set -o errexit # set -e

# Modifie l'étiquette d'un fichier [0..7]
function changeFinderLabel ()
{
    local z="$1" f="$2"


    # Test existence fichier
    [[ -e "$f" ]] || { printf "$f: No such file or directory\n" >&2; exit  
1; }


    # Path complet (absolute path)
    cd "$(dirname -- "$f")"
    f="$(pwd)/$(basename -- "$f")"
    cd -


    /usr/bin/osascript <<-EOF
    set f to "$f"
    set f to POSIX file f as alias
    set z to $z as integer
    tell application "Finder" to set label index of f to z
    EOF
} >/dev/null


changeFinderLabel "$1" "$2"

----

Remplacer le bloubiboulga cd-dirname-pwd-basename par realpath(1), si
enfin disponible pour Mac OS X.

Avec Leopard , il *semble* qu'osascript se soit amélioré pour la
conversion d'encodage de texte (ici le path du fichier).
Avant, je devais passer par une conversion spéciale.

--
Daniel

_______________________________________________
archives :
http://listes.patpro.net/list/sshfr.fr.html
http://listes.patpro.net/mailman/listinfo/script_shell_fr