Linux Touch Directory Command

9

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
Dragos Rizescu
źródło

Odpowiedzi:

8

Jak podano na stronie podręcznika , podstawowym zastosowaniem touchjest:

Zaktualizuj czasy dostępu i modyfikacji każdego PLIKU do bieżącego czasu.

Dlatego aktualizuje czasy dostępu i modyfikacji katalogu.

Jorge Suárez de Lis
źródło
4

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
                              ~~~~~~~~~~~~~
użytkownik235510
źródło
2

touchjest 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 touchpolecenia (lub dowolnego innego polecenia, o którym chciałbyś wiedzieć), używając manpolecenia takiego:

man touch

Atari911
źródło
2

Bezpośrednim powodem tego pytania jest fakt, że domyślna rozdzielczość czasowa ls -lwynosi w minutach, więc pozycja systemu plików dotknięta w tej samej minucie pojawi się dokładnie tak samo na domyślnym ls -lwyjś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-isozamiast tego.

Josip Rodin
źródło