Se pueden etiquetar archivos y carpetas con un color en el Finder de Mac OS X. ¿Hay alguna manera de hacer esto desde un script de shell?Etiquetado de archivos con colores en OS X Finder desde scripts de shell
Respuesta
Este script toma el nombre del archivo o carpeta como primer argumento y el índice de etiqueta (0 para sin etiqueta, 1 para rojo, ..., 7 para gris) como segundo argumento.
#!/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"
Más directamente, si $ nombre de archivo es una variable shell con el nombre de ruta absoluta del archivo o carpeta para ser etiquetados y $ etiqueta es una variable de shell con el número de índice etiqueta,
osascript -e "tell application \"Finder\" to set label index of alias POSIX file \"$filename\" to $label"
es un comando de shell para asignar la etiqueta al archivo o carpeta.
Una forma fea de hacer esto sería:
exec osascript <<\EOF
tell app "Finder"
-- [...]
-- selecting the file
-- [...]
-- 4 is Blue
set label index of thisItem to 4
end tell
lanzamiento Básicamente un AppleScript que utiliza el buscador para ajustar el color.
Me dieron los consejos de:
(color) http://www.macosxhints.com/article.php?story=20070602122413306
(Shell) http://www.macosxhints.com/article.php?story=20040617170055379
Sobre la base de las respuestas aquí y en los puestos mencionados, hice la siguiente función y añadido a mi ~/.bash_profile
archivo:
# 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
}
También existe la herramienta de línea de comandos 'setLabel' en el paquete osxutils. No requiere AppleScript ni que el Finder se esté ejecutando.
Esto usaría el mismo orden para los colores que el 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
estoy redirigir STDERR, porque me dieron advertencias como 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
en 10.8. STDOUT se redirige porque osascript imprime el valor de la última expresión.
Aquí hay un script en Python rápida escribí:
https://github.com/danthedeckie/finder_colors
que establece los colores de las carpetas y archivos desde la línea de comandos.
Uso:
finder_colors.py red /Users/daniel/src
establece el directorio/Usuarios/Daniel/src a ser de color rojo.
finder_colors.py /Users/daniel/src
devuelve el color (en este caso ahora, 'rojo'). Si está escribiendo una secuencia de comandos python, puede importar finder_colors como un módulo y usarlo directamente (finder_colors.get (...) y finder_colors.set (...).
Ayudaría más si explica cómo lo hace, por ejemplo, mediante ejemplos de código relevantes de su solución. – Pfitz
Gracias @Pfitz - He añadido información de uso. La forma en que funciona internamente es utilizar una biblioteca incorporada de python para editar los atributos extendidos del archivo. No pude encontrar una forma elegante de creación de scripts nativos para hacer esto, y no me gusta la manzana- soluciones de script. – Daniel
- 1. ¿Ejecutar scripts de shell desde el Dock OS X?
- 2. Los scripts de shell en Mac OS X se ejecutan desde el directorio de inicio?
- 3. Cliente SVN integrado con el Finder de OS X
- 4. ¿Cómo manejo varios archivos arrastrando/soltando desde Finder en Mac OS X 10.5?
- 5. Cómo escribir el complemento de OS X Finder
- 6. OS X: extraño -psn parámetro de línea de comando cuando se inicia desde Finder
- 7. Mac OS X colores vim destrozados
- 8. ¿Cómo puedo editar los metadatos de archivos en OS X?
- 9. ¿Cómo agrego elementos al menú contextual del Finder en Mac OS X?
- 10. ctags para scripts de shell sin extensiones
- 11. ¿Cómo ejecutar Clozure CL (Lisp) desde un script de shell en OS X?
- 12. Creación de scripts en shell: uso de bash con xargs
- 13. Impresión desde mono en OS X
- 14. TClientDataset en la aplicación OS X Firemonkey
- 15. Forma preferida de #! en scripts de shell
- 16. Llamando a métodos Java desde scripts de shell
- 17. Compilación cruzada a Linux desde OS X
- 18. Cómo detectar la configuración regional actual en Mac OS X desde el shell
- 19. Compiladores para scripts de shell
- 20. ¿Manejo de excepciones en scripts de shell?
- 21. propósito shell script de x en "x $ VARIABLE"
- 22. Cómo modificar los colores de los botones de la ventana en Mac OS X
- 23. desinstalar ipython mac os x
- 24. Pruebas unitarias para scripts de shell
- 25. Funciones anónimas en scripts de shell
- 26. ejecutan los scripts de shell en C++
- 27. Expresiones booleanas en scripts de shell
- 28. Buscar y reemplazar en scripts de shell
- 29. PyCharm - $ PATH en OS X
- 30. Edición de archivos grandes en Mac OS X
Esto fallará si el nombre de archivo contiene comillas dobles o termina con una barra invertida. –
@Kevin: ¿Alguna solución para eso? – Svish
@Kevin: Además ... ¿por qué tendría un nombre de archivo que contiene comillas dobles? Pensé que no era válido ...o tal vez solo en Windows ... – Svish