Defcrypt

Ejecutar Finder desde Terminal en MacOS X

por dGil el 31/12/2008, en MacOS X, Programación, Python

Una de las cosas que mas me molestó cuando migré a MacOS X hace ya algunos años es que a diferencia de otros sistemas operativos, como GNU/Linux con GNOME, no pudiera ejecutar el gestor de archivos (Finder) desde la consola. Hasta hoy, nunca me preocupé de buscar una solución, pero hoy me harté e intenté solucionarlo.

Para ello he creado un pequeño programa en Python que nos permite ejecutar desde la Terminal el Finder.

Sobre el programa

El programa es el siguiente y lo podéis descargar aquí: finderv01.zip

El programa está liberado bajo la GPLv3. El código es el siguiente:

#!/usr/bin/python
# 
#	Autor: Gil Casadevall
# 	Website: http://defcrypt.ixde.net
#	Relased: 12/31/08
#	Version: 0.1
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as published
# by the Free Software Foundation  (GPLv3) or later. It is distributed in the 
# hope that it will be useful, but WITHOUT ANY WARRANTY; without even the 
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
# See http://www.gnu.org/licenses/quick-guide-gplv3.html for more details.
 
 
import sys
import subprocess
 
if(len(sys.argv) > 1):
	choice = sys.argv[1]
	if choice == "now":
		subprocess.call("open /System/Library/CoreServices/Finder.app $PWD",shell=True)
	elif choice == "home":
		subprocess.call("open /System/Library/CoreServices/Finder.app $HOME",shell=True)
	else:
		subprocess.call("open /System/Library/CoreServices/Finder.app "+sys.argv[1],shell=True)
else:
	subprocess.call("open /System/Library/CoreServices/Finder.app",shell=True)

Instalación

Para instalarlo sigue los siguientes pasos:

# Suponiendo que estamos en el directorio dónde hemos descargado el zip
# Descomprimimos
$ unzip finder.zip
# Damos permisos de ejecución
$ chmod +x finder.py
# podemos ejecutalo con la siguiente instrucción
$ ./finder

Bueno, ahora ya podemos lanzar el Finder desde la Terminal, eso está muy bien. Pero lo que nos interesa es poder lanzarlo desde cualquier directorio y no especificando la ruta del programa. Para eso, tenemos que instalarlo en el PATH. Podemos consultar con la siguiente instrucción que directorios tenemos en el PATH:

$ env | grep ^PATH

Comprobamos que /usr/bin/local está ahí. Sino, podéis incluir la dirección en el archivo .profile o .bash_profile en vuestro directorio home, o escoger otro directorio en el siguiente apartado.

Para instalar el programa en el path, hacemos lo siguiente:

mv finder.py /usr/local/bin 
cd /usr/local/bin
ln -s finder.py finder

¿Qué hemos hecho? Bueno, primero lo hemos copiado en el PATH, y luego hemos añadido un enlace simbólico para poder lanzar el Finder con la instrucción ‘finder’ y no ‘finder.py’ (ambas funcionan). Simplemente es para mayor comodidad.

Cómo funciona

Como habéis podido observar en el código, no hace muchas cosas, pero lo explicaremos por si alguien tiene dudas.

Si tecleamos ‘finder’ en el Terminal podemos pasar como argumento:

# sin argumentos: se abrirá el finder en el directorio por defecto (en principio home)
$ finder
 
# con el argumento home: se abrirá el finder en el directorio home
$ finder home
 
# con el argumento now: se abrirá el finder en el directorio dónde nos encontramos
$ finder now
 
# con el argumento "directorio": se lanzara el finder abriendo el "directorio"
$ finder /Volumes

Si introducimos un directorio incorrecto, el programa retornará un error de que el directorio no existe.

Si alguien detecta algún error, o sugiere nuevas ideas, estaré encantado de corregir o implementarlas.

:, , , ,
3 comentarios:
  1. juandesant

    Bueno, yo suelo usar una solución más simple: usar el comando open para abrir una carpeta lanza el Finder, y abre una ventana con esa carpeta (si no existe):

    open /System/Library/

    El comando anterior abriría una nueva ventana del Finder con el contenido de /System/Library

    Otra un poquito más “elaborada”: usar el comando osascript para abrir (o cerrar) el Finder:

    osascript -e “tell application \”Finder\” to activate”
    osascript -e “tell application \”Finder\” to quit”

  2. dGil

    Muy cierto, no hace falta llamar al script del finder. Aun así lo hice para que pudiera hacer “un poco más”, como la opción del ‘now’, que es lo mas cómodo. De todas formas, era una prueba para poder -si un día quiero hacerlo- un script para lanzar cualquier aplicación a través de la Terminal sin tener que especificar toda la ruta.
    Saludos y gracias por el aporte!

  3. MBlanc

    ‘finder now’ ?
    ‘open .’ !

    Y, si estais aburridos, probad ‘open -na Finder’

Deja un comentario

¿Buscando algo?

Utiliza este formulario para buscar: