W systemie Linux polecenie touch służy do
A. przeniesienia lub zmiany nazwy pliku.
B. obliczenia liczby wierszy, słów i znaków w pliku.
C. utworzenia pliku lub zmiany daty modyfikacji lub daty ostatniego dostępu.
D. wyszukania podanego wzorca w tekście pliku.
Pytanie z egzaminu CKE, czerwiec 2018 (arkusz EE.08-X-18.06).
Polecenie touch w Linuksie służy głównie do utworzenia pustego pliku albo do zmiany znaczników czasu istniejącego pliku, czyli daty modyfikacji oraz daty ostatniego dostępu. To jest bardzo praktyczne narzędzie administracyjne, zgodne z typowym zachowaniem narzędzi POSIX/Unix. Jeśli wpiszesz na przykład touch raport.txt, a plik raport.txt nie istnieje, system utworzy nowy pusty plik o rozmiarze 0 bajtów. Jeśli taki plik już istnieje, jego zawartość się nie zmieni, ale zostanie odświeżony czas modyfikacji i dostępu. Z mojego doświadczenia touch często przydaje się w skryptach powłoki, przy tworzeniu plików tymczasowych, znaczników wykonania zadania, albo podczas testowania działania mechanizmów zależnych od czasu, np. make, rsync czy prostych backupów. Warto też znać opcje: touch -a zmienia tylko czas dostępu, touch -m tylko czas modyfikacji, a touch -t pozwala ustawić konkretną datę. Dobra praktyka jest taka, żeby pamiętać, że touch nie służy do edycji treści pliku, tylko do pracy z metadanymi systemu plików.
W tym pytaniu łatwo pomylić kilka podstawowych poleceń linuksowych, bo wszystkie dotyczą pracy z plikami w terminalu. Polecenie touch nie analizuje zawartości pliku i nie wykonuje operacji na tekście. Do obliczania liczby wierszy, słów oraz znaków lub bajtów używa się polecenia wc, na przykład wc plik.txt albo wc -l plik.txt, gdy interesuje nas tylko liczba linii. To narzędzie czyta dane wejściowe i podaje statystyki, więc działa zupełnie inaczej niż touch, które zwykle nawet nie zagląda do treści pliku. Wyszukiwanie wzorca w tekście jest zadaniem dla grep, np. grep error log.txt. grep filtruje linie pasujące do podanego wyrażenia i jest podstawowym narzędziem diagnostycznym przy analizie logów. Z kolei przenoszenie lub zmiana nazwy pliku to rola mv, na przykład mv stara_nazwa.txt nowa_nazwa.txt. Typowy błąd myślowy polega na tym, że ktoś kojarzy touch ogólnie z plikami i zakłada, że skoro polecenie działa na pliku, to może służy do jego przenoszenia albo sprawdzania zawartości. W praktyce touch operuje przede wszystkim na metadanych systemu plików, takich jak czas modyfikacji i ostatniego dostępu, a przy braku pliku tworzy nowy pusty obiekt. Moim zdaniem warto zapamiętać prosty podział: wc liczy, grep szuka, mv przenosi lub zmienia nazwę, a touch tworzy pusty plik albo poprawia znaczniki czasu. Taki schemat naprawdę pomaga podczas pracy w konsoli.