Impossible d'avoir « programmes protégés 0700' amorçable lors de la connexion à zsh

StackOverflow https://stackoverflow.com/questions/908333

  •  05-09-2019
  •  | 
  •  

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?

Était-ce utile?

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 ....

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top