[BASH] Zmiana wyłącznie Modify Time

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
ilu2112
Sędziwy Jeż
Sędziwy Jeż
Posty: 35
Rejestracja: 28 lut 2009, 20:31
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Łódź
Kontakt:

[BASH] Zmiana wyłącznie Modify Time

Post autor: ilu2112 »

Dzisiaj na kolokwium zaliczeniowym jednym z zadań było pokazanie sposobu, w jaki można zmienić access, change i modify time dla utworzonego katalogu. Podjętym działaniem należało jednorazowo zmienić tylko jeden czas. I tak:
  • chmod na katalogu zmienia tylko change time
  • find na katalogu zmienia tylko access time
W jaki sposób zmienić tylko i wyłącznie modify time? Jaka jest różnica między change a modify time?
Awatar użytkownika
cukier_lukier
Przyjaciel
Przyjaciel
Posty: 1250
Rejestracja: 14 cze 2006, 18:25
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: Brak
Architektura: x86

Re: [BASH] Zmiana wyłącznie Modify Time

Post autor: cukier_lukier »

Po pierwsze:

Kod: Zaznacz cały

man touch
Więc np:

Kod: Zaznacz cały

touch -m --date='jakas_data_lub_pusto' nazwa_pliku
Po drugie:
http://www.brandonhutchinson.com/ctime_atime_mtime.html

EDIT:
Byłbym zapomniał - jeszcze perl:

Kod: Zaznacz cały

perl -e 'utime $atime=(stat "nazwa_pliku")[10],$mtime,'nazwa_pliku';'
Awatar użytkownika
ilu2112
Sędziwy Jeż
Sędziwy Jeż
Posty: 35
Rejestracja: 28 lut 2009, 20:31
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Łódź
Kontakt:

Re: [BASH] Zmiana wyłącznie Modify Time

Post autor: ilu2112 »

Dzięki za odpowiedź :) Jednak to nie rozwiązuje postawionego przez egzaminującego problemu. Listing obrazujący zaproponowane przez Ciebie rozwiązanie:

Kod: Zaznacz cały

marcin@marcin-laptop:~/Pulpit$ mkdir katalog
marcin@marcin-laptop:~/Pulpit$ cd katalog
marcin@marcin-laptop:~/Pulpit/katalog$ stat .
  File: `.'
  Size: 4096      	Blocks: 8          IO Block: 4096   katalog
Device: 807h/2055d	Inode: 528037      Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 1000/  marcin)   Gid: ( 1000/  marcin)
Access: 2011-03-22 21:22:50.435089457 +0100
Modify: 2011-03-22 21:22:49.423177395 +0100
Change: 2011-03-22 21:22:49.423177395 +0100
marcin@marcin-laptop:~/Pulpit/katalog$ touch -m --date='' nazwa_pliku
marcin@marcin-laptop:~/Pulpit/katalog$ stat .
  File: `.'
  Size: 4096      	Blocks: 8          IO Block: 4096   katalog
Device: 807h/2055d	Inode: 528037      Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 1000/  marcin)   Gid: ( 1000/  marcin)
Access: 2011-03-22 21:22:50.435089457 +0100
Modify: 2011-03-22 21:23:17.092237975 +0100
Change: 2011-03-22 21:23:17.092237975 +0100
marcin@marcin-laptop:~/Pulpit/katalog$ touch -m --date='' nazwa_pliku
marcin@marcin-laptop:~/Pulpit/katalog$ stat .
  File: `.'
  Size: 4096      	Blocks: 8          IO Block: 4096   katalog
Device: 807h/2055d	Inode: 528037      Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 1000/  marcin)   Gid: ( 1000/  marcin)
Access: 2011-03-22 21:22:50.435089457 +0100
Modify: 2011-03-22 21:23:17.092237975 +0100
Change: 2011-03-22 21:23:17.092237975 +0100
marcin@marcin-laptop:~/Pulpit/katalog$ 
Jak widać po każdym działaniu Modify Time i Change Time się zmienia. Zadanie polegało na zmienieniu tylko Modify Time.
Awatar użytkownika
cukier_lukier
Przyjaciel
Przyjaciel
Posty: 1250
Rejestracja: 14 cze 2006, 18:25
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: Brak
Architektura: x86

Re: [BASH] Zmiana wyłącznie Modify Time

Post autor: cukier_lukier »

A podstawiłeś konkretną nazwę pliku, którego mtime chcesz zmienić, czy wklepałeś nazwa_pliku?
Np twój plik to 'test.pl' to polecenie będzie wyglądać tak:

Kod: Zaznacz cały

touch -m --date='jakas_data_lub_pusto' test.pl
Awatar użytkownika
ilu2112
Sędziwy Jeż
Sędziwy Jeż
Posty: 35
Rejestracja: 28 lut 2009, 20:31
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Łódź
Kontakt:

Re: [BASH] Zmiana wyłącznie Modify Time

Post autor: ilu2112 »

W treści zadania jest napisane, że chodzi o katalog, a nie można wykonać touch'a na katalogu :)
Awatar użytkownika
cukier_lukier
Przyjaciel
Przyjaciel
Posty: 1250
Rejestracja: 14 cze 2006, 18:25
Płeć: Mężczyzna
Wersja Ubuntu: 14.04
Środowisko graficzne: Brak
Architektura: x86

Re: [BASH] Zmiana wyłącznie Modify Time

Post autor: cukier_lukier »

Różnica między katalogiem a plikiem w Linuksie jest, można by rzec, umowna (np. http://tldp.org/LDP/intro-linux/html/sect_03_01.html )
Dlatego:

Kod: Zaznacz cały

$ mkdir test

Kod: Zaznacz cały

$ touch -m  --date= test

Kod: Zaznacz cały

$ stat test
  File: `test'
  Size: 4096      	Blocks: 8          IO Block: 4096   katalog
Device: 14h/20d	Inode: 406754      Links: 2
Access: 2011-03-24 21:43:19.400949000 +0100
Modify: 2011-03-24 00:00:00.000000000 +0100
Change: 2011-03-24 21:43:24.272949003 +0100
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 10 gości