Đối với các tiện ích GNU, tài liệu đầy đủ có trong infotrang, nơi bạn có thể đọc:
-f
Làm ngơ; để tương thích với các phiên bản BSD của 'touch'.
Xem các trang người đàn ông BSD lịch sử để liên lạc , nơi -fđể buộc liên lạc.
Nếu bạn nhìn vào nguồn của các BSD cũ đó, không có utimes()cuộc gọi hệ thống, vì vậy touchsẽ mở tệp ở chế độ đọc + ghi, đọc một byte, tìm lại và viết lại để cập nhật lần truy cập cuối cùng và thời gian sửa đổi lần cuối .
Rõ ràng, bạn cần cả quyền đọc và ghi ( touchsẽ tránh cố gắng làm điều đó nếu bị access(W_OK|R_OK)trả về sai ). -fđã cố gắng khắc phục điều đó bằng cách tạm thời thay đổi các quyền tạm thời thành 0666 !
0666 có nghĩa là đọc và viết cho phép mọi người. Nó phải là như vậy (như với một sự cho phép hạn chế hơn như 0600 vẫn có thể cho phép chạm ) có thể có nghĩa là trong cửa sổ ngắn đó, các quy trình có thể đọc hoặc ghi quyền vào tệp không thể nữa , phá vỡ chức năng .
Tuy nhiên, điều đó có nghĩa là các quy trình không có quyền truy cập vào tệp bây giờ có cơ hội ngắn để mở tệp, phá vỡ bảo mật .
Đó không phải là một điều rất hợp lý để làm. touchTriển khai hiện đại không làm điều đó. Kể từ đó, utime()cuộc gọi hệ thống đã được giới thiệu, cho phép thay đổi thời gian sửa đổi và truy cập riêng biệt mà không phải trộn lẫn với nội dung của các tệp (có nghĩa là nó cũng hoạt động với các tệp không thường xuyên) và chỉ cần truy cập ghi cho điều đó.
GNU touchvẫn không thất bại nếu thông qua -ftùy chọn, mà chỉ bỏ qua cờ. Theo cách đó, các tập lệnh được viết cho các phiên bản BSD cũ đó không bị lỗi khi được chuyển sang các hệ thống GNU. Ngày nay không có nhiều liên quan.
-ftùy chọn chỉ là bỏ qua. Có thể đọc qua trình phân tích cú pháp đối số và đó là nó.