テクニカルノート041  


特殊文字の使用
特殊なシェル文字とp4コマンド


タスク

p4コマンドラインで特殊文字を取り扱うには、どのようにすればよいでしょうか

解決策

PERFORCEは * および #の文字をファイル指定において使用します。これらの文字は多くのコマンドシェルにおいて特別な意味があり、p4コマンドでは引用符を使用する必要がある場 合があります。(UNIXでは単一引用符を使用し、Windows MS-DOSシェルでは二重引用符を使用します。)

# シンボルの使用例
p4 sync #none
                  


このコマンドはすべてのディポファイルをワークスペースから削除するはずです。そうではなく、ワークスペース全体を最新リビジョンに同期するという処理が行われた場合は、コマンドシェルで # がコメント文字として解釈されたためです。このような場合、次のコマンドを実行してみましょう。
p4 sync '#none'
                  


アスタリスクの使用例

あるいは、例えば次のようなコマンドで、
p4 files stuff/*
                  


「ファイルが見つかりません」と出力される場合、コマンドシェルにおいてPERFORCEが感知するよりも前に * ワイルドカードを拡張しようとしている可能性があります。引用符の使用方法はいくつか考えられます。例を示します。
MS-DOS  p4 files "stuff/*"
        p4 files stuff/"*"

Unix    p4 files 'stuff/*'
        p4 files stuff/'*'
        p4 files stuff/*
                  


また、PERFORCEワイルドカードの %1 を使用することもできます。これは * と同じ意味ですが、ほとんどのシェルでは特殊な意味を持ちません。
p4 files stuff/%1
                  


(これは、%1 が特殊な意味を持つ MS-DOS バッチスクリプトでは機能しないことに注意してください。)

二重の順スラッシュに関する注意

PERFORCEでは、ファイルパスの参照の際に二重に組み合わせた順スラッシュ文字 "//" を使用することがよくあります。 //文字の組み合わせは、ディポまたはクライアント・ワークスペースのパスではなく、汎用命名規則(Universal Naming Convention:UNC)のパスを参照しているとシェルに解釈される可能性があります。 //depot または //clientnameの構文を使用したとき、PERFORCEコマンドから結果を取得するのに異常に長く時間がかかる場合は、パス文字列全体を引用符で囲んでみてください。一 般に、この問題の影響を受けやすいのはWindows環境でのUNIXシェルだけです。その他のネットワークの問題に関連する遅延については、NOTE040「ネットワークの問題の切り分け」を参照してください。
戻る