0

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 コマンドを動作させることはできませんでした。これは、ターミナルでプログラムを起動できるようにするためのより良い方法があるかもしれないことを示唆しています。

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

4

2 に答える 2

2

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

しかし、これらの種類のデバッグを容易にする特定のテクニックがあります。人間が読めるリストではなく、パス名が必要なため、私が最初に行うことは、 から離れて代わりにls使用することです。find

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

多分....

于 2009-05-26T00:05:01.823 に答える
2

補完ではなくエイリアスについてどう思いますか? エイリアスはまだ完全なタブです。読みやすくするために行を分割しています...

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

1 つ目は各一致を独自の行に出力し、2 つ目はアプリのサブパッケージを削除し、最後はエイリアス コマンドを生成します。バッククォートを削除して、生成されたコマンドを表示および確認します。

[編集:] これにより、実行可能ファイルが直接実行されます。「open blah.app」メソッドを使用する場合は、sed コマンドの最後の部分を次のように変更できます。

#alias \2=\"open \1\2\3\"#
于 2009-05-26T12:44:46.513 に答える