Не удается запустить программы с защитой «0700» при входе в систему через Zsh - PullRequest
0 голосов
/ 26 мая 2009

У меня есть следующий код, который должен запускать программы в 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

Однако, это не работает в моем Zsh вообще. Я не могу открыть никаких программ с ним.

Еще одна ошибка, которая есть в том, что он открывает все программы. Я хочу, чтобы только программы запускались с разрешением 700.

Я знаю, что вы можете довольно хорошо искать эти программы по

 find -perm 700 -type f *.app

Однако я не смог заставить работать команду find точно для каждого файла программы. Это говорит о том, что может быть лучший способ сделать программы запускаемыми в терминале.

Как сделать так, чтобы программы запускались в Zsh в Mac / Ubuntu?

Ответы [ 2 ]

2 голосов
/ 26 мая 2009

Как вы относитесь к псевдонимам вместо завершений? Псевдонимы по-прежнему вкладка завершена. Разделение между строками для удобства чтения ...

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

Первый выводит каждое совпадение на отдельной строке, второй удаляет подпакеты приложения, а последний генерирует команду псевдонима. Снимите галочки, чтобы увидеть и подтвердить сгенерированные команды.

[Edit:] Это запускает исполняемый файл напрямую - если вы предпочитаете использовать метод 'open blah.app', вы можете изменить последнюю часть команды sed на:

#alias \2=\"open \1\2\3\"#
2 голосов
/ 26 мая 2009

О, зш. Это всегда делает вещи интересными.

Но есть определенные приемы, облегчающие отладку такого рода вещей. Первое, что я хотел бы сделать, это отойти от ls и использовать вместо него find, поскольку вам нужны пути, а не читабельные списки:

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

возможно ....

...