Impossible d'avoir « programmes protégés 0700' amorçable lors de la connexion à zsh
Question
Je le code suivant qui devrait mettre les programmes amorçable dans 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
Toutefois, il ne fonctionne pas dans mon zsh du tout. Je ne peux ouvrir aucun programme avec.
Un autre bug dont il a est qu'il ouvre tous les programmes. Je veux avoir des programmes que les autorisations amorçable 700.
Je sais que vous pouvez rechercher ces programmes plutôt bien par
find -perm 700 -type f *.app
Cependant, je ne pouvais pas trouver mon -command fonctionne exactement pour chaque fichier de programme. Cela me donne à penser qu'il pourrait y avoir une meilleure façon de rendre les programmes amorçable dans le terminal.
Comment pouvez-vous faire des programmes amorçable dans zsh Mac / Ubuntu?
La solution
Comment vous sentez-vous sur les alias au lieu de la fin? Les alias encore onglet complet. Le travail à travers des lignes pour le rendre plus facile à lire ...
`print -l /Applications/**/MacOS/*(*f:700:) |
grep -v "Contents.*Contents" |
sed -e "s#\(.*/\)\([^./]*\)\(\.app\)\(.*\)#alias \2=\"\1\2\3\4\"#g"`
Les premières impressions chaque match sur sa propre ligne, la deuxième sous-paquets supprime d'une application, et la dernière génère la commande alias. Retirez les guillemets obliques pour voir et confirmer les commandes qui sont générés.
[Edit:] Cela va l'exécutable directement - si vous préférez utiliser la méthode « blah.app ouverte », vous pouvez changer la dernière partie de la commande sed à:
#alias \2=\"open \1\2\3\"#
Autres conseils
Oh, zsh. Cela fait toujours les choses intéressantes.
Mais il y a certaines techniques pour faire du débogage ce genre de choses plus faciles. La première chose que je voudrais donc se déplacer loin de ls
, et utiliser find
à la place, puisque vous voulez, pas d'énumérations noms de fichiers lisibles par l'homme:
find . -executable -a -name \*.app
peut-être ....