Dotykový příkaz v Linuxu
Dotykový příkaz v Linuxu se používá pro změnu časových razítek souborů, avšak jedno z nejběžnějších použití dotykového příkazu zahrnuje vytvoření nového prázdného souboru.
Pomocí dotykového příkazu můžete změnit přístup, upravit a změnit čas souborů a složek v Linuxu. Časová razítka můžete aktualizovat nebo je upravit na datum v minulosti.
Syntaxe dotykového příkazu je poměrně jednoduchá:
touch [option] file

Co jsou časová razítka souborů v Linuxu?
O časových razítkách v Linuxu jsem podrobně psal v dřívějším článku. Doporučuji přečíst pro lepší a jasnější pochopení. Pro rychlé připomenutí uvedu seznam časových razítek zde:
- čas přístupu – čas posledního přístupu k souboru
- čas úpravy – čas poslední úpravy souboru
- čas změny – čas poslední změny metadat souboru (oprávnění k souboru, vlastnictví atd.)
Časová razítka souboru můžete zobrazit pomocí příkazu stat následujícím způsobem:
stat abhi.txt
File: abhi.txt
Size: 10 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11940163 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 14:12:24.476483367 +0530
Modify: 2018-09-02 14:12:24.476483367 +0530
Change: 2018-09-02 14:12:24.476483367 +0530
Birth: -
Příkaz Stat dokonce zobrazuje číslo inodu souboru.
9 Praktické příklady dotykového příkazu v Linuxu
Nyní se podívejme, jak používat dotykový příkaz, na několika jednoduchých, ale užitečných příkladech.
1. Vytvořte prázdný soubor
Jak jsem již zmínil, toto je nejčastější použití dotykového příkazu. Jediné, co musíte udělat, je použít touch s názvem souboru.
touch <filename>
Pokud soubor neexistuje, vytvoří se prázdný soubor.
touch empty_file
ls -l empty_file
-rw-r--r-- 1 abhishek abhishek 0 Sep 2 14:37 empty_file
Ale co když soubor již existuje? V takovém případě aktualizuje všechna tři časová razítka souboru na aktuální čas.
2. Vytvořte více prázdných souborů
Pomocí dotyku můžete také vytvořit více než jeden prázdný soubor. Stačí zadat názvy souborů, které chcete vytvořit.
touch <file1> <file2> <file3>
Pokud si myslíte, že je únavné psát všechny názvy souborů, můžete automaticky generovat názvy souborů tímto způsobem:
touch new-file-{1..10}.txt
Tím se vytvoří nový-soubor-1.txt, nový-soubor-2.txt až nový-soubor-10.txt.
3. Vyhněte se vytváření souboru dotykem, pokud neexistuje
Touch aktualizuje časová razítka vstupního souboru, pokud existuje, a vytvoří prázdný soubor, pokud vstupní soubor neexistuje.
Ale co když nechcete dotykem vytvořit nový prázdný soubor? Chcete, aby aktualizoval časová razítka souboru, ale pokud soubor neexistuje, neměl by být vytvořen.
V takových případech můžete použít dotykový příkaz s volbou -c:
touch -c <filename>
Pamatujte si :Dotykem vytvoříte nový prázdný soubor, pokud neexistuje, jinak upraví časová razítka existujícího souboru. Vytváření nového souboru můžete zastavit volbou -c.
4. Změnit všechna časová razítka souboru
Pokud použijete dotyk na existující soubor, změní se přístup, upraví a změní čas tohoto souboru.
Mám například tento soubor s názvem sherlock.txt s následujícími časovými razítky:
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-08-25 09:44:56.092937000 +0530
Modify: 2018-08-09 09:41:05.028309000 +0530
Change: 2018-08-25 09:44:56.096937182 +0530
Pokud na tento příkaz použiji dotyk, všechna časová razítka se změní na aktuální časová razítka.
touch sherlock.txt
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 15:22:47.017037942 +0530
Modify: 2018-09-02 15:22:47.017037942 +0530
Change: 2018-09-02 15:22:47.017037942 +0530
Birth: -
Poznámka:Neměli byste se obtěžovat s ctime (čas změny). Je to vlastnost systému a uživatel ji nemůže/neměl ovládat. Měli byste se zaměřit na přístup a úpravu času.
5. Aktualizovat pouze přístupový čas souboru
Možná nebudete vždy chtít změnit všechna časová razítka souboru. Pokud chcete pouze změnit dobu přístupu k souboru, můžete dotykem použít volbu -a.
touch -a sherlock.txt
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 15:29:08.796926093 +0530
Modify: 2018-09-02 15:22:47.017037942 +0530
Change: 2018-09-02 15:29:08.796926093 +0530
Birth: -
6. Aktualizovat pouze změnit čas souboru
Pokud chcete pouze aktualizovat čas úpravy souboru na aktuální časové razítko, použijte volbu -m příkazu touch.
touch -m sherlock.txt
stat sherlock.txt
File: sherlock.txt
Size: 356 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928277 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-09-02 15:29:08.796926093 +0530
Modify: 2018-09-02 15:31:25.770866881 +0530
Change: 2018-09-02 15:31:25.770866881 +0530
Birth: -
7. Použijte časová razítka jiného souboru
Časová razítka jiného souboru můžete také použít jako referenci s volbou -r následujícím způsobem:
touch -r <source_file> <target_file>
Tím nastavíte čas přístupu a úpravy cílového souboru stejně jako čas přístupu a úpravy zdrojového souboru.
8. Nastavte konkrétní přístup a čas úprav
Možná jste si všimli, že téměř ve všech případech (kromě referenčního souboru) se časová razítka změní na aktuální.
S tím ale nejste vázáni. Dotyk umožňuje nastavit přístup a čas úprav na minulé nebo budoucí datum. Můžete použít volbu -t a časové razítko v následujícím formátu:
[[CC]YY]MMDDhhmm[.ss]
- CC – první dvě číslice roku
- YY – druhé dvě číslice roku
- MM – měsíc v roce (01-12)
- DD – den v měsíci (01-31)
- hh – hodina dne (00-23)
- mm – minuta v hodině (00-59)
- ss – sekundy (00-59)
Ve výše uvedeném případě je CC volitelná. Ve skutečnosti je CCYY také volitelná, v takovém případě bude trvat aktuální rok. Podobně jsou volitelné také sekundy, výchozí je 00.
Dovolte mi ukázat vám příklad změnou časového razítka na 12021301, tj. 12. měsíc, druhý den, 13. hodina a první minuta aktuálního roku:
touch -t 12021301 agatha.txt
stat agatha.txt
File: agatha.txt
Size: 457 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11928279 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-12-02 13:01:00.000000000 +0530
Modify: 2018-12-02 13:01:00.000000000 +0530
Change: 2018-09-02 15:59:47.588680901 +0530
Birth: -
Pokud se pokusíte zadat neplatné datum, zobrazí se chyba. Také si všimnete, že čas změny používá aktuální časové razítko, nikoli totéž jako přístup a úpravy. Je to proto, že je to vlastnost systému.
9. Změnit časové razítko symbolického odkazu
Můžete také použít dotykový příkaz se symbolickými odkazy. Při práci se symbolickými odkazy musíte použít volbu -h. Zbytek zůstává stejný jako u běžných souborů.
touch -h <symbolic_link>
Doufám, že vám tyto příklady dotykových příkazů v Linuxu budou užitečné. Pokud máte nějaké dotazy nebo návrhy, dejte mi vědět.