touch
створює новий, порожній файл, якщо файл не існує, тому що це було призначено. Утиліта повинна містити код для конкретного оброблення цього випадку. Утиліта з'явилася в Unix V7 ; його керівництво описав його наступним чином:
touch - дата оновлення останньої модифікації файлу
touch
спроби встановити змінену дату кожного файлу . Це робиться шляхом зчитування символу з файлу та запису його назад. Якщо ** файлу * не існує, буде зроблена спроба його створити, якщо -c
не вказана опція.
(Я не знаю, що touch
було, якщо файл був порожнім. Основний виклик системи прийшов пізніше.)
Я точно не знаю, чому touch
було створено так, щоб файл існував, але я підозрюю, що це через make
. Чому ви хочете встановити час модифікації файлу на поточний час? Бувають випадки, коли може бути корисно встановити час модифікації на певний час, але ця здатність з’явилася пізніше, оригінал touch
міг лише встановити час модифікації на поточний час. Причиною цього є повторне запуск make
правила, яке залежить від файлу.
Тобто, припустимо , що у вас є файл foo
, а також файл , який оголошує команду для створення bar
з foo
. Під час введення make bar
команда виконується і bar
створюється. Якщо bar
існує і новіше foo
, make bar
нічого не робить, так як make
передбачається , що bar
вже були створені. Однак, якщо bar
вона старша foo
, думайте, що bar
це не сучасне і потребує відновлення.
Але що робити, якщо змінити правила для генерації bar
? Тоді у вас є два варіанти:
rm bar; make bar
touch foo; make bar
Вам потрібно foo
існувати для того, щоб генерувати bar
, інакше команда зазвичай не працює.
Терміналогія "touch" також була присутня в make
утиліті: вона make -t bar
буде робити вигляд лише, що запускає команди, тобто вона встановлює час модифікації bar
до поточного часу, не фактично виконуючи команду для генерації bar
(ви б це зробили, якби ви думали, що зміни не foo
повинні впливати bar
). Таким чином, touch
утиліта була окремою версією make -t
функції.
touch /forcefsck
щоб створити порожній файл, покликаний/forcefsck
змусити перевіряти файлові системи на наявність помилок при наступному перезавантаженні. Сам файл не повинен містити нічого, він просто повинен існувати. Без цьогоtouch
мені потрібно використовуватиvi
чиnano
зберегти порожній файл. Набагато швидше використовуватиtouch
.