Uno può taggare file e cartelle con un colore nel Finder di Mac OS X. C'è un modo per farlo da uno script di shell?Tagging di file con colori in OS X Finder da script di shell
risposta
Questo script di shell prende il nome del file o della cartella come primo argomento e l'indice di etichetta (0 per nessuna etichetta, 1 per rosso, ..., 7 per grigio) come secondo argomento.
#!/bin/sh
osascript -e "tell application \"Finder\" to set label index of alias POSIX file \"`cd -P -- "$(dirname -- "$1")" && printf '%s\n' "$(pwd -P)/$(basename -- "$1")"`\" to $2"
Più direttamente, se $ nome è una variabile shell con il nome di percorso assoluto del file o cartelle da etichettare e $ etichetta è una variabile shell con il numero di indice etichetta,
osascript -e "tell application \"Finder\" to set label index of alias POSIX file \"$filename\" to $label"
è un comando shell per assegnare l'etichetta al file o alla cartella.
Un brutto modo per farlo potrebbe essere:
exec osascript <<\EOF
tell app "Finder"
-- [...]
-- selecting the file
-- [...]
-- 4 is Blue
set label index of thisItem to 4
end tell
Fondamentalmente il lancio di un AppleScript che utilizza Finder per impostare il colore.
ho avuto i suggerimenti da:
(a colori) http://www.macosxhints.com/article.php?story=20070602122413306
(Shell) http://www.macosxhints.com/article.php?story=20040617170055379
Sulla base delle risposte qui e nei post di riferimento, ho fatto la seguente funzione e ha aggiunto al mio ~/.bash_profile
lima:
# Set Finder label color
label(){
if [ $# -lt 2 ]; then
echo "USAGE: label [0-7] file1 [file2] ..."
echo "Sets the Finder label (color) for files"
echo "Default colors:"
echo " 0 No color"
echo " 1 Orange"
echo " 2 Red"
echo " 3 Yellow"
echo " 4 Blue"
echo " 5 Purple"
echo " 6 Green"
echo " 7 Gray"
else
osascript - "[email protected]" << EOF
on run argv
set labelIndex to (item 1 of argv as number)
repeat with i from 2 to (count of argv)
tell application "Finder"
set theFile to POSIX file (item i of argv) as alias
set label index of theFile to labelIndex
end tell
end repeat
end run
EOF
fi
}
C'è anche la linea di comando strumento 'setLabel' nel pacchetto osxutils. Non richiede AppleScript o che il Finder sia in esecuzione.
Questo userebbe lo stesso ordine per i colori come Finder.
#!/bin/bash
if [[ $# -le 1 || ! "$1" =~ ^[0-7]$ ]]; then
echo "Usage: labelfile ..." 1>&2
exit 1
fi
colors=(0 2 1 3 6 4 5 7)
n=${colors[$1]}
shift
osascript - "[email protected]" <<END > /dev/null 2>&1
on run arguments
tell application "Finder"
repeat with f in arguments
set f to (posix file (contents of f) as alias)
set label index of f to $n
end repeat
end tell
end
END
sto reindirizzando STDERR, perché ho avuto avvertimenti come 2012-09-06 13:50:00.965 osascript[45254:707] CFURLGetFSRef was passed this URL which has no scheme (the URL may not work with other CFURL routines): test.txt
su 10,8. STDOUT viene reindirizzato perché osascript stampa il valore dell'ultima espressione.
Ecco uno script python rapida che ho scritto:
https://github.com/danthedeckie/finder_colors
che definisce i colori delle cartelle e file da linea di comando.
Usage:
finder_colors.py red /Users/daniel/src
imposta la directory/Users/Daniel/src essere rosso.
finder_colors.py /Users/daniel/src
restituisce il colore (in questo caso ora 'rosso'). Se stai scrivendo uno script python, puoi importare finder_colors come modulo e usarlo direttamente (finder_colors.get (...) e finder_colors.set (...).
Sarebbe di aiuto se spiegassi come farlo ad esempio tramite esempi di codice rilevanti della tua soluzione – Pfitz
Grazie a @Pfitz - Ho aggiunto informazioni di utilizzo.Il modo in cui funziona internamente è l'utilizzo di una libreria python integrata per modificare gli attributi estesi del file. Non ho trovato un elegante modo di script shell nativo per fare questo, e non mi piace la mela- soluzioni di script. – Daniel
- 1. OS X: strano -psn parametro di riga di comando quando lanciato da Finder
- 2. Gli script di shell in Mac OS X vengono eseguiti dalla home directory?
- 3. Come scrivere il plug-in OS X Finder
- 4. scopo script di shell di x in "x $ VARIABILE"
- 5. Come eseguire Clozure CL (Lisp) da uno script di shell su OS X?
- 6. Come gestisco il trascinamento di più file dal Finder in Mac OS X 10.5?
- 7. Comando di shell per ottenere l'indirizzo mac in OS X
- 8. Script di shell Linux per eliminare vecchi file da ftp
- 9. Come creare uno script per mostrare/nascondere i file nascosti in Mac OS X?
- 10. Creazione di file con alcuni contenuti con script di shell
- 11. l'ordinamento in script di shell
- 12. Chiamata rscript da script di shell linux
- 13. Creare file con contenuti di script di shell
- 14. Esecuzione di shell-script con parametri da java
- 15. variabili d'ambiente carico da uno script di shell
- 16. Emacs, Come cambiare alcuni colori nella shell M-x?
- 17. Loop dalla data di inizio alla data di fine nello script di shell di Mac OS X
- 18. Chiamare makefile da Shell Script
- 19. script di shell non funziona con nohup
- 20. Come eseguire script di shell da LaTeX?
- 21. Come posso modificare i metadati dei file in OS X?
- 22. file di spaziatura doppia utilizzando sed in script di shell
- 23. Utilizzo di uno script Linker su Mac OS X
- 24. Shell array di script
- 25. Scrivi su Mac OS X Registri della console dallo script di shell o dalla riga di comando
- 26. script di shell: if
- 27. Tagging query con group_concat
- 28. Script di shell con file jar alla fine
- 29. Come posso implementare i riconoscitori di gesti in OS X?
- 30. Debug degli script di shell con numeri di riga
Questo fallirà se il nome file contiene doppie virgolette o termina con una barra rovesciata. –
@Kevin: Qualsiasi soluzione a questo? – Svish
@Kevin: Inoltre ... perché dovresti avere un nome file contenente virgolette doppie? Ho pensato che non fosse valido ...o forse solo in Windows ... – Svish