Pregunta

Tengo el siguiente código que debe poner programas iniciable en Bash.

if [ "`uname`" = "Darwin" ]; then
   compctl -f -x 'p[2]' -s "`/bin/ls -d1 /Applications/*/*.app
/Application:/*.app | sed 's|^.*/\([^/]*\)\.app.*|\\1|;s/ /\\\\ /g'`"                 
-- open
   alias run='open -a' 
fi

Sin embargo, no funciona en mi Zsh en absoluto. Puedo abrir ningún programa con ella.

Otro fallo que tiene es que abre todos los programas. Quiero tener sólo los programas iniciable qué permisos es de 700.

Sé que usted puede buscar estos programas bastante bien por

 find -perm 700 -type f *.app

Sin embargo, no pude conseguir mi hallazgo -command trabajar exactamente para cada archivo de programa. Esto me sugiere que puede haber una mejor manera de hacer que los programas iniciable en la terminal.

¿Cómo se puede hacer que los programas iniciable en Zsh en Mac / Ubuntu?

¿Fue útil?

Solución

¿Cómo se siente acerca de los alias en lugar de finalización? Los alias todavía pestaña completa. La división a través de líneas para que sea más fácil de leer ...

`print -l /Applications/**/MacOS/*(*f:700:) | 
grep -v "Contents.*Contents" | 
sed -e "s#\(.*/\)\([^./]*\)\(\.app\)\(.*\)#alias \2=\"\1\2\3\4\"#g"`

Las primeras impresiones de cada uno de los partidos en su propia línea, la segunda elimina sub-paquetes de una aplicación, y el último genera el comando alias. Quitar los acentos abiertos para ver y confirmar los comandos que se generan.

[Editar:] Esto ejecuta el ejecutable directamente - si usted prefiere utilizar el método 'abierto blah.app', podría cambiar la parte final del comando sed a:

#alias \2=\"open \1\2\3\"#

Otros consejos

Oh, zsh. Que siempre hace las cosas interesantes.

Sin embargo, hay ciertas técnicas para hacer la depuración de este tipo de cosas más fáciles. Lo primero que haría es por lo aleje de ls, y utilizar find lugar, ya que desea que los nombres de ruta, los listados no por seres humanos:

find . -executable -a -name \*.app

quizás ....

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top