Вы описываете 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и наблюдайте разницу.