Co polecenie „dotyka” po zastosowaniu do katalogu?
$ mkdir test
$ ls -l test
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
$ touch test
$ ls -l
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
Co polecenie „dotyka” po zastosowaniu do katalogu?
$ mkdir test
$ ls -l test
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
$ touch test
$ ls -l
drwxrwxr-x 2 dragos dragos 4096 Oct 27 18:08 test
Odpowiedzi:
Jak podano na stronie podręcznika , podstawowym zastosowaniem touch
jest:
Zaktualizuj czasy dostępu i modyfikacji każdego PLIKU do bieżącego czasu.
Dlatego aktualizuje czasy dostępu i modyfikacji katalogu.
Przykład u góry nie wyjaśnia, że „dotyk” ustawia czas katalogu (nowy czas na liście był taki sam jak oryginał, po prostu dlatego, że dotknięcie nastąpiło wkrótce po utworzeniu katalogu). Tak, definicja „PLIKU” w dokumentacji obejmuje katalogi, więc możesz użyć dotyku, aby zmienić ich znaczniki czasu, ALE ...
Istnieją sytuacje, w których nie można zmienić znacznika czasu katalogu (w przypadku niektórych typów katalogów montowanych zdalnie), nawet jeśli użytkownik ma uprawnienia do wykonywania innych czynności. np. to podłączenie NFS:
$ touch -d "2014-07-02 12:15" /public/test.dir
touch: setting times of ‘/public/test.dir’: Operation not permitted
Ponadto możesz mieć problemy z tym, że niektóre stare daty nie są obsługiwane na niektórych serwerach, np .:
$ mkdir /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Mar 11 17:40 /Acer/kopies/test.dir
To działa:
$ touch "2014-04-01 00:00" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Apr 1 2014 /Acer/kopies/test.dir
Działa to na lokalnym katalogu, ale podaje dziwną datę pod montażami Samby:
$ touch -d "1955-07-02 12:15" /Acer/kopies/test.dir
$ ls -ald /Acer/kopies/test.dir
drwxr-xr-x 2 mark aitchison 0 Nov 26 60410 /Acer/kopies/test.dir
~~~~~~~~~~~~~
touch
jest standardowym programem uniksowym używanym do zmiany znaczników czasu dostępu i modyfikacji pliku. Służy również do tworzenia nowego pustego pliku.Pojedyncza specyfikacja uniksowa (SUS) określa, że dotyk powinien zmienić czas dostępu, czas modyfikacji lub oba te ustawienia dla pliku. Plik jest identyfikowany przez nazwę ścieżki podaną jako pojedynczy argument. Określa również, że jeśli zidentyfikowany plik nie istnieje, plik jest tworzony, a czasy dostępu i modyfikacji są ustawiane zgodnie z opisem. Jeśli nie określono żadnych nowych znaczników czasu, touch używa bieżącej godziny.
-Wikipedia
Możesz znaleźć bardziej szczegółowe informacje na temat touch
polecenia (lub dowolnego innego polecenia, o którym chciałbyś wiedzieć), używając man
polecenia takiego:
man touch
Bezpośrednim powodem tego pytania jest fakt, że domyślna rozdzielczość czasowa ls -l
wynosi w minutach, więc pozycja systemu plików dotknięta w tej samej minucie pojawi się dokładnie tak samo na domyślnym ls -l
wyjściu.
Rozwiązanie tego problemu jest opisane na stronie /superuser/355318/how-to-have-linux-ls-command-show-second-in-time-stamp
i zasadniczo wymaga uruchomienia ls -l --time-style=full-iso
zamiast tego.