날짜: HP-UX에서는 잘못된 변환 오류가 발생하지만 Linux에서는 발생하지 않습니다.

날짜: HP-UX에서는 잘못된 변환 오류가 발생하지만 Linux에서는 발생하지 않습니다.

리눅스의 경우:

$ touch 1 12

문제 없습니다. 112.

SysV 또는 HP-UX 11.31의 경우:

$ touch 1 12
date: bad conversion

나는 LANG=C같은 오류를 시도했습니다. 왜?

답변1

이것원래 touch명령파일 수정 시간을 현재 시간으로 설정하는 것만 지원합니다.

[YY]MMDDhhmm과거 System V 시스템에서는 구문(선택적 연도, 월, 일, 시, 분)을 사용하여 시간을 첫 번째 인수로 지정하는 기능을 도입했습니다. 당시에는 대시와 문자 뒤에 선택적 매개변수 값(예: -t …)을 사용하는 관례가 아직 완전히 확립되지 않았습니다. 이로 인해 귀하와 같은 명령을 사용하여 이전 버전과의 비호환성이 발생했습니다. 원래는 touch 1 12및 라는 두 파일에 타임스탬프를 설정하는 것을 의미했지만 그 이후로 SysV unices는 변환을 시작했습니다(또는 첫 번째 매개변수로 구성된 모든 항목)는 타임스탬프로 해석됩니다.1121

HP-UX를 포함한 일부 최신 유니스는 이러한 SysV 버전과의 호환성을 유지하기로 선택했습니다. *BSD 및 최신 GNU 버전을 포함한 다른 버전에서는 이 구문에 대한 지원이 전혀 없거나 중단되었습니다.

POSIX의 초기 버전지정되어 있지만touch TIME FILEtouch [-t TIME] FILEPOSIX-2001-t, 이 옵션이 포함된 구문만 지원됩니다.

스크립트를 이식 가능하게 만들려면 touch첫 번째 인수가 숫자 또는 숫자와 점으로만 구성된 이름을 가진 파일일 수 있는 경우 파일 앞이나 --(POSIX 권장이므로 어디에서나 작동할 수 있기를 바랍니다) ./스크립트의 시작 부분 에 스크립트를 넣을 수 있습니다. 파일 이름:

touch -- 1 12

또는

case "$file" in
  /*) :;;
  *) file="./$file";;
esac
touch "$file"

답변2

이 HP Touch 매뉴얼 페이지에 따르면:http://h20565.www2.hp.com/hpsc/doc/public/display?docId=emr_na-c02273390

...이 명령에는 다음과 같은 형태의 터치가 필요합니다. touch time_str file_name

양식이 인식됩니다.when neither the -r option, the -t option, nor the -- option delimiter is specified, and the first operand consists of all decimal digits.

관련 정보