Це не марно - це спеціалізована форма >оператора простого перенаправлення (і, можливо, заплутано, нічого спільного з трубами). bashі більшість інших сучасних оболонок мають можливість noclobber, яка не дозволяє перенаправлення перезаписати або знищити файл, який вже існує. Наприклад, якщо noclobberце правда, а файл /tmp/output.txtвже існує, то це має бути невдалим:
$ some-command > /tmp/output.txt
Тим НЕ менше, ви можете явно перевизначити налаштування noclobberз >|перенаправленням оператора - перенаправлення буде працювати, навіть якщо noclobberвстановлений.
Ви можете дізнатися, чи noclobberвстановлено це у вашому поточному середовищі set -o.
Для історичної примітки, як опція "noclobber", так і його обхідні функції походять csh(кінець 70-х). kshскопіював його (на початку 80-х), але використовував >|замість цього >!. POSIX вказав kshсинтаксис (тому всі оболонки POSIX, включаючи bash, нові похідні золи, що використовуються як sh у деяких системах, підтримують його). Zsh підтримує обидва синтаксиси. Я не думаю, що він був доданий до будь-якого варіанту оболонки Борна, але я можу помилитися.
>|на: stackoverflow.com/questions/818255/in-the-bash-shell-what-is-21 / ...