cpエラーメッセージは、Ubuntu 12.04(?)とFedora 24で異なる参照を使用します。

cpエラーメッセージは、Ubuntu 12.04(?)とFedora 24で異なる参照を使用します。

F24で開発中でテストに合格しましたが、Travis CIで試してみると失敗します。 AFAIK、彼らは(Travis CI)Ubuntu 12.04 VMを使用しています。テストでは、実行出力を以前に収集された「ゴールデン」出力と比較し、違いがある場合は失敗としてマークします。

cpこの特別なケースでは、存在しないファイルに対してコマンドを呼び出すとエラーメッセージが生成されるため、違いが発生しますが、エラーメッセージは2つのシステム間で若干異なります。 Fedora 24では、次のようになります。

$ cp foo bar
cp: cannot stat 'foo': No such file or directory

Ubuntu 12.04 VM(Travis CI環境をシミュレートするように設定されている)では、次のようになります。

$ cp foo bar
cp: cannot stat `foo': No such file or directory

F24出力の一重引用符の代わりにUbuntu出力のバックティックを確認してください。

試してみましたが、export LC_ALL=Cどの出力にも効果はありません。 F24にはcoreutilsバージョン8.25があります(ls出力に悪名高い参照ファイル名の変更が含まれていますが、私の問題とは関係がないと思います)。 Ubuntu 12.04にはバージョン8.13があります。

私の質問:

1)これはcoreutils 8.13と8.25の間の変更ですか?それとも、FedoraとUbuntuはcoreutilを別々にコンパイルしますか?

2)最新のUbuntuバージョンでは、このエラーメッセージ(およびその他のエラーメッセージ)にバックティックを使用しますか?

3)エラーメッセージに使用される引用符を設定する方法はありますか?どのシステムで?

4)「gold」出力と比較する前に、コマンド出力を変更してすべてのバックティックを一重引用符に変更できます。より良いアプローチの提案はありますか?

編集:Travis CI環境で最新バージョンのUbuntuを実行できることを聞きました(「dist:trusty」を追加.travis.yml)。このバージョン(16.04)では、en_US.UTF-8環境でエラーメッセージの引用符を開閉するためにUnicode単一引用符(コードポイント#x2018)を使用します。 CロケールではASCIIアポストロフィを使用します。私の目的には十分です。

ベストアンサー1

[この情報を追加するために質問を編集しましたが、終了するために回答として追加しました。 12.04でバックティックを使用する理由はまだわかりませんが、最新バージョンが利用可能になっても問題は解決しないようです。 ]

Travis CI環境で最新バージョンのUbuntuを実行できることを聞きました(「dist:trusty」を追加.travis.yml)。このバージョン(16.04)では、en_US.UTF-8環境でエラーメッセージの引用符を開閉するためにUnicode単一引用符(コードポイント#x2018)を使用します。 CロケールではASCIIアポストロフィを使用します。私の目的には十分です。

おすすめ記事