Ви описуєте tailутиліту GNU . Різниця між цими двома прапорами полягає в тому, що якщо я відкрию файл, наприклад, файл журналу, наприклад, такий:
$ tail -f /var/log/messages
... і якщо засіб обертання журналу на моїй машині вирішить повернути цей файл журналу під час перегляду записуваних до нього повідомлень ("поворот" означає видалення або переміщення в інше місце тощо), результат, який я бачу, буде просто Стоп.
Якщо я відкрию файл tailтаким чином:
$ tail -F /var/log/messages
... і знову файл повертається, вихід буде продовжувати надходити в мою консоль, тому що він tailби відкрив файл, як тільки він знову став доступним, тобто коли програма (и) запису до журналу почала писати до нового /var/log/messages .
У безкоштовних системах BSD немає -Fваріантів, але він tail -fбуде вести себе так, як tail -Fце робиться в системах GNU, з тією різницею, що ви отримаєте повідомлення
tail: file has been replaced, reopening.
у виході, коли файл, який ви відстежуєте, зникає і знову з’являється.
МОЖЕТЕ ТЕСТИТИ ЦЕ
За один сеанс оболонки зробіть
$ cat >myfile
Тепер ви будете чекати, коли ви наберете речі. Просто продовжуйте і введіть декілька рядків, кілька рядків. Це все буде збережено у файл myfile.
В іншому сеансі оболонки (можливо, в іншому терміналі, не перебиваючиcat ):
$ tail -f myfile
Це покаже (кінець) вмісту myfileконсолі. Якщо ви повернетесь до першого сеансу оболонки і введете щось більше, цей результат негайно буде показаний tailна другому сеансі оболонки.
Тепер вийдіть cat, натиснувши Ctrl+Dі видалити в myfileфайл:
$ rm myfile
Потім знову запустіть кота:
$ cat >myfile
... і введіть щось, кілька рядків.
З GNU tailці рядки не відображатимуться у другому сеансі оболонки (де tail -fвсе ще запущено).
Повторіть вправу з tail -Fі спостерігайте за різницею.