`touch`의 -f 옵션의 용도는 무엇입니까?

`touch`의 -f 옵션의 용도는 무엇입니까?

에서 man touch:

-f     (ignored)

하지만 그게 무슨 뜻인지 이해가 안 돼요무시당하다.

나는 다음을 시도했습니다 :

$ ls -l file
-rw-rw-r-- 1 pandya pandya 0 Mar 20 16:17 file

$ touch -f file
$ ls -l file
-rw-rw-r-- 1 pandya pandya 0 Mar 20 16:18 file

그리고 참고 하세요 -f.

그렇다면 -f그것이 무엇을 의미하는지, 어떤 역할을 하는지 궁금합니다.

답변1

GNU 유틸리티의 경우 전체 문서는 info다음 페이지에 있습니다.

-f
무시됩니다. "터치"의 BSD 버전과 호환됩니다.

바라보다역사적인 BSD 터치 매뉴얼 페이지, -f어디로 가야만지다.

그 옛날 BSD의 소스코드를 보면 utimes()시스템 콜이 없기 때문에touch읽기+쓰기 모드로 파일을 열고, 1바이트를 읽고, 역추적하고 다시 쓰기하여 마지막 액세스 및 마지막 수정 시간을 업데이트합니다..

분명히 둘 다 필요합니다.읽다그리고쓰다권한(touchaccess(W_OK|R_OK)false를 반환하면 이 작업을 수행하지 않아도 됩니다.). -f이 문제를 해결하려고일시적으로 권한을 0666으로 변경합니다.!

0666은 모든 사람이 읽기 및 쓰기 권한을 가지고 있음을 의미합니다. 그렇지 않으면 (0600과 같이 더 제한적인 권한을 사용하는 것처럼 여전히 허용됩니다)만지다) 이는 이 짧은 기간 동안 파일에 대한 읽기 또는 쓰기 액세스 권한이 있는 프로세스가 더 이상 액세스할 수 없게 되어 손상을 입힐 수 있음을 의미할 수 있습니다.특징.

그러나 이는 파일에 액세스할 수 없었던 프로세스가 이제 파일을 열 수 있는 짧은 기회를 가지게 되어 파일을 파기한다는 의미입니다.안전.

이것은 별로 현명한 일이 아닙니다. 현대 touch구현에서는 이를 수행하지 않습니다. 그때부터,utime()시스템 호출파일 내용과 섞이지 않고(비정규 파일에도 작동함을 의미) 수정 및 액세스 시간을 독립적으로 변경할 수 있도록 하기 위해 도입되었으며 쓰기 액세스만 필요합니다.

이 옵션이 전달되면 GNU는 touch여전히 실패하지 않고 -f플래그를 무시합니다. 이렇게 하면 이전 버전의 BSD용으로 작성된 스크립트를 GNU 시스템으로 이식할 때 실패하지 않습니다. 요즘은 별로 관련성이 없습니다.

답변2

-f아무것도 하지 않았습니다. 이는 기록 호환성( touch및 참조에 따르면 BSD와의 호환성 info touch)을 위해 유지되므로 해당 존재를 기대하는 응용 프로그램은 이를 통과하지 못하고 존재하지 않는다는 오류 메시지를 반환합니다. 이것이 GNU coreutils라고 가정하면 다음을 볼 수 있습니다.소스 코드에서이는 break옵션 처리 스위치 외부의 작업만 수행합니다.

무시되는 옵션으로 -f1992년에 추가된 GNU 명령의 첫 번째 버전 이후부터 존재했습니다 touch(차이점 보기). 적어도 FreeBSD v9에서는 -f"파일 권한이 현재 허용하지 않더라도 강제로 업데이트를 시도"하는 것 같습니다(Sukmininder가 발견했습니다. 감사합니다).

답변3

언제든지--help 출력 또는 맨페이지에 "옵션 X 무시됨"이 표시됩니다. 이는 다음을 의미합니다.수용하다옵션 X - 구문 오류가 발생하지 않지만 효과는 없습니다. 프로그램은 이 옵션이 없을 때와 동일한 작업을 수행합니다.

다른 답변에서 알 수 있듯이 이는 이전 버전과의 호환성을 위해 수행됩니다. 옵션사용된어떤 효과를 내기 위해서는 그것이 무엇이든 더 이상 유용하지 않으며 옵션에 관계없이 동일한 작업을 수행하는 것이 올바른 호환성 동작입니다.

답변4

댓글을 읽으면서과거 소스 코드, 22행:

  22   -f                     (ignored)\n\

-f 옵션은 Jim Meyering의 초기 릴리스 이후로 무시됩니다.

아무 작업도 수행하지 않는 옵션을 처리하는 스위치 문의 명시적인 경우(150/151행)가 있습니다.

 150         case 'f':
 151           break;

다음 저자들이 1992년 이후 이 옵션을 무시하게 된 이유는 주목할 가치가 있습니다. -f 옵션이 필요한 사용 사례가 있거나 중단될 수 있습니까?

관련 정보