5

ファイル名に含まれる非ASCII文字の場合、Gitはそれらを8進表記で出力します。例えば:

> git ls-files
"\337.txt"

そのようなバイトシーケンスが(コマンドラインの現在のエンコーディングの)正当なエンコーディングを表していない場合、コマンドラインに対応する文字列を入力できません。これらのファイルでGitコマンドを呼び出すにはどうすればよいですか?明らかに、によって表示される文字列を使用することはgit ls-files機能しません:

> git rm "\337.txt"
fatal: pathspec '337.txt' did not match any files

Windowsでテスト済み、msysgit 1.7.10(gitバージョン1.7.10.msysgit.1)

4

1 に答える 1

9

printfBashでは、次のような目的で使用できます。

$ printf "\337.txt"
▒.txt

$ git rm `printf "\337.txt"`  # this would pass the awkward filename to git

問題は、明らかに、シェルが8進数のエスケープを実行せず、gitも実行しないことです。しかし、printfそうです。


また、echo -e8進数のエスケープを実行できます。

$ echo -e '\0337.txt'
▒.txt

しかし、その使用法は少しお勧めできません。できる限り優先printfする必要があります。

于 2012-05-21T14:56:20.923 に答える