2009-05-25 8 views
0

私はプログラムをBashで起動可能にする次のコードを持っています。Zshのログイン時に '0700'で保護されたプログラムを起動できない

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ではまったく動作しません。私はそれでプログラムを開くことはできません。

もう1つのバグは、すべてのプログラムを開くことです。 私はしかし、私は私の発見を得ることができませんでした-command各プログラムファイルに対して正確に動作し、私はあなたが

find -perm 700 -type f *.app 

ではなく、同様にこれらのプログラムを検索することができることを知っている700

ある権限始動可能なプログラムだけを持って欲しいです。 これは、端末でプログラムを起動可能にする良い方法があるかもしれないことを示唆しています。

Mac/UbuntuのZshでプログラムを起動するにはどうすればいいですか?

+0

あなたがより多くを説明することができますあなたが望むものを明確に?あなたはコマンドラインから 'open'で任意のアプリを起動できますが、これを自動化しようとしていますか?つまり、「iTunes」と入力してシェルを「open /Applications/iTunes.app」にしたいのですが、iTunes/Contents/MacOS/iTunesに700の権限がある場合のみですか? – JimG

+0

@ジム:はい、したいです。 –

答えて

2

完了の代わりに?エイリアスはまだタブが完成しています。読みやすくするために行に渡って分割...

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

独自の行の最初の印刷物の各試合、第二には、アプリのサブパッケージを削除し、そして最後には、aliasコマンドを生成します。バックティックを削除して、生成されたコマンドを確認してください。

[編集:]これは、直接実行可能ファイルを実行します - あなたは「オープンblah.app」メソッドを使用することを好む場合は、へのsedコマンドの最後の部分を変更することができます:

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

ああ、zsh。それは常に物事を面白くします。

しかし、これらの種類のデバッグを容易にする特定の手法があります。私はそうですlsから離れると、あなたはパス名、判読できません出品したいため、代わりにfindを使用する最初の事:おそらく

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

を....あなたは別名についてどう思いますどのように

関連する問題