Linuxの場合:
$ touch 1 12
問題ありません。1
と12
。
SysVまたはHP-UX 11.31の場合:
$ touch 1 12
date: bad conversion
私はLANG=C
同じエラーを試しました。なぜ?
ベストアンサー1
これオリジナルtouch
コマンドファイル変更時間を現在時刻に設定することのみサポートします。
[YY]MMDDhhmm
過去のSystem Vシステムでは、構文(オプションの年、月、日、時、分)を使用して時間を最初の引数として指定する機能を導入しました。当時、ダッシュと文字の後にオプションのパラメータ値(例-t …
:)を使用する慣例はまだ完全に確立されていません。これにより、あなたと同じコマンドを使用して以前のバージョンとの互換性がなくなりました。もともとは、touch 1 12
という名前の2つのファイルにタイムスタンプを設定することを意味しましたが、それ以降、SysV unicesは変換を開始しました(または最初のパラメータで構成されたすべてのエントリ)がタイムスタンプとして解釈されます。1
12
1
HP-UXを含むいくつかの最新のユニスは、これらのSysVバージョンとの互換性を維持することを選択しました。 * BSDおよび最新のGNUバージョンを含む他のバージョンでは、この構文のサポートはまったくないか中断されました。
POSIXの初期バージョン指定されていますが、touch TIME FILE…
touch [-t TIME] FILE…
POSIX-2001-t
、このオプションを含む構文のみがサポートされます。
スクリプトを移植可能にするには、touch
最初の引数が数字または数字とドットのみで構成される名前を持つファイルである可能性がある場合は、ファイルの前または--
(POSIXを推奨するので、どこでも機能できることを願っています)スクリプトの先頭./
にスクリプトを入れることができます。ファイル名:
touch -- 1 12
または
case "$file" in
/*) :;;
*) file="./$file";;
esac
touch "$file"