0

まず最初に、私は Mac 全体が大嫌いだということを述べさせてください。Objective-C でのプログラミングを除いて、私はそれらの経験がほとんどありません。

問題: ポータブル Firefox のインストールをフラッシュ ドライブのディレクトリの下で起動できるようにする必要があります。

[Drive root]/.assets/port/Firefox Portable.app

私はいくつかの助けを得ることができます:

  1. シェルスクリプトがフォルダー名のスペースとピリオドを受け入れることを確認する
  2. シェルスクリプトがファイル名にスペースを受け入れることを確認する
  3. Windows マシンの先頭の「/」と同様に、ドライブのルートを変更できるようにします。

前もって感謝します。

4

2 に答える 2

2

これでうまくいくはずです。

cmd=$(ls -d /Volumes/*/.assets/port/Firefox\ Portable.app 2>/dev/null | head -1) && open "$cmd"

ls/Volumes にマウントされているすべてのドライブですべての Firefoxを試し、最初のドライブを起動します。(Firefox が見つからない場合は何もしません。)

説明:

  • ls -dディレクトリモードでリストを試してください(コンテンツではなくディレクトリ名をリストします)
  • -のバックスラッシュはFirefox\ Portable、次の文字をエスケープすることを意味します (ここではspace)
  • 2>/dev/null- エラーを表示しない (または試してみることもでき2>&-ます)
  • |head -1- 結果から最初の行のみを表示します (ここにさらに行がある場合)
  • 上記のすべてが変数に割り当てられますcmd-したがって、ここにコマンドがある場合、変数にはパス名が含まれます
  • && open "$cmd"- 前のコマンドが成功したときに、変数 $cmd に格納されているパスでアプリケーションを開きます (ここにコマンドがあります)。
于 2011-06-08T22:13:22.583 に答える
2

OS X ではopen(1)、コマンド ラインからアプリを起動するために使用されます。

open "[/Volumes/[Drive file system name]/.assets/port/Firefox Portable.app"

標準の Unix シェルと同様に、パスを引用符で囲むと、" "スペースやピリオドから保護されます。

特定のフラッシュ ドライブのボリューム ファイル システム名は、変更しない限り常に同じです。ファイル システム名が事前にわからない場合は、マウントされたボリュームを検索して推測する必要があります。

より正確には、OS X はデフォルトで、マウント ポイントが同じ名前の別のファイル システムによって使用されていない限り/Volumes/[Drive file system name]、マウント ポイントで同じファイル システムを使用して USB ドライブをマウントしようとします。通常、何かを追加して使用します。または、ユーザーまたは一部のプログラムが任意のマウント ポイントに手動でマウントすることもできます。したがって、最も一般的なケースでは、検索する必要があります。それはあなたがしようとしていることに依存します。

于 2011-06-08T21:42:10.950 に答える