Вам навіть не потрібно користуватися :; можна просто > file(принаймні, в bashінших; снаряди можуть поводитися інакше).
На практиці, тут немає ніякої реальної різниці (хоча мінусовий накладний виклик /bin/touch- це річ).
touchоднак, також можна використовувати для зміни часових позначок у файлі, який вже існує, не змінюючи або стираючи вміст; далі > fileвибухне все, fileщо вже існує. Це можна вирішити, замість цього використовувати >> file.
Ще одна відмінність у touchтому, що ви можете змусити його створювати (або оновлювати часову позначку) декількох файлів одночасно (наприклад touch foo bar baz quux) з більш лаконічним синтаксисом, ніж при перенаправлення, де кожен файл потребує власного перенаправлення (наприклад >foo >bar >baz >quux).
Використання touch:
$ touch foo; stat -x foo; sleep 2; touch foo; stat -x foo
File: "foo"
Size: 0 FileType: Regular File
Mode: (0644/-rw-r--r--) Uid: (991148597/redacted) Gid: (1640268302/redacted)
Device: 1,5 Inode: 8597208698 Links: 1
Access: Fri May 25 10:55:19 2018
Modify: Fri May 25 10:55:19 2018
Change: Fri May 25 10:55:19 2018
File: "foo"
Size: 0 FileType: Regular File
Mode: (0644/-rw-r--r--) Uid: (991148597/redacted) Gid: (1640268302/redacted)
Device: 1,5 Inode: 8597208698 Links: 1
Access: Fri May 25 10:55:21 2018
Modify: Fri May 25 10:55:21 2018
Change: Fri May 25 10:55:21 2018
Використання перенаправлення:
$ > foo; stat -x foo; sleep 2; >> foo; stat -x foo
File: "foo"
Size: 0 FileType: Regular File
Mode: (0644/-rw-r--r--) Uid: (991148597/redacted) Gid: (1640268302/redacted)
Device: 1,5 Inode: 8597208698 Links: 1
Access: Fri May 25 10:55:21 2018
Modify: Fri May 25 10:56:25 2018
Change: Fri May 25 10:56:25 2018
File: "foo"
Size: 0 FileType: Regular File
Mode: (0644/-rw-r--r--) Uid: (991148597/redacted) Gid: (1640268302/redacted)
Device: 1,5 Inode: 8597208698 Links: 1
Access: Fri May 25 10:55:21 2018
Modify: Fri May 25 10:56:25 2018
Change: Fri May 25 10:56:25 2018
touchавтономна робота буде працювати так само, як би ви не використовували.