touch
tworzy nowy, pusty plik, jeśli plik nie istnieje, ponieważ właśnie do tego został przeznaczony. Program narzędziowy musi zawierać kod, aby konkretnie obsługiwać tę sprawę. Narzędzie pojawiło się w Uniksie V7 ; w instrukcji opisano go następująco:
dotknij - data ostatniej modyfikacji pliku
touch
próbuje ustawić datę modyfikacji każdego pliku . Odbywa się to poprzez odczytanie znaku z pliku i ponowne zapisanie go. Jeśli ** plik * nie istnieje, zostanie podjęta próba jego utworzenia, chyba że -c
zostanie określona opcja.
(Nie wiem, co touch
się stało, jeśli plik był pusty. Podstawowe wywołanie systemowe przyszło później).
Nie wiem na pewno, dlaczego touch
powstał, aby plik istniał, ale podejrzewam, że to z tego powodu make
. Dlaczego chcesz ustawić czas modyfikacji pliku na aktualny czas? Są przypadki, w których przydatne może być ustawienie czasu modyfikacji na określony czas, ale ta umiejętność pojawiła się później, oryginał touch
mógł jedynie ustawić czas modyfikacji na bieżący czas. Powodem tego jest ponowne uruchomienie make
reguły zależnej od pliku.
Oznacza to, że masz plik foo
i Makefile, który deklaruje polecenie, aby wygenerować bar
z foo
. Podczas pisania make bar
polecenie jest wykonywane i bar
tworzone. Jeśli bar
istnieje i jest nowszy niż foo
, make bar
nic nie robi, ponieważ make
zakłada, że bar
został już wygenerowany. Jeśli jednak bar
jest starszy foo
, pomyśl, że bar
nie jest aktualny i musi zostać zregenerowany.
Ale co, jeśli reguły generowania bar
uległy zmianie? Masz dwie opcje:
rm bar; make bar
touch foo; make bar
foo
Aby wygenerować bar
, musisz istnieć, w przeciwnym razie polecenie zwykle nie działałoby.
Terminologia „dotykowa” była także obecna w make
narzędziu: make -t bar
udawałaby tylko, że uruchamia polecenia, to znaczy ustawiałaby czas modyfikacji bar
na bieżący czas bez uruchamiania polecenia generowania bar
(zrobiłbyś to, gdybyś pomyślał, że zmiany, które foo
nie powinny mieć wpływu bar
). touch
Narzędzie było zatem wersja standalone z make -t
funkcji.
touch /forcefsck
do utworzenia pustego pliku wywoływanego w/forcefsck
celu wymuszenia sprawdzenia systemów plików pod kątem błędów przy następnym ponownym uruchomieniu. Sam plik nie musi zawierać niczego, po prostu musi istnieć. Beztouch
tego musiałbym użyćvi
lubnano
zapisać pusty plik. Znacznie szybszy w użyciutouch
.