IEEE Standards Interpretation for IEEE Std 1003.1™-2001 IEEE Standard Standard for Information Technology -- Portable Operating System Interface (POSIX®)
Copyright © 2006 by the Institute of Electrical and Electronics Engineers, Inc. 3 Park Avenue New York, New York 10016-5997 USA All Rights Reserved.
Interpretations are issued to explain and clarify the intent of a standard and do not constitute an alteration to the original standard. In addition, interpretations are not intended to supply consulting information. Permission is hereby granted to download and print one copy of this document. Individuals seeking permission to reproduce and/or distribute this document in its entirety or portions of this document must contact the IEEE Standards Department for the appropriate license. Use of the information contained in this document is at your own risk.
IEEE Standards Department Copyrights and Permissions 445 Hoes Lane, Piscataway, New Jersey 08855-1331, USA
Interpretation Request #100
Topic: tail -c 0, -n 0 Relevant Sections: XCU tail
The standard does not explicitly specify what happens if the "number" argument to the -c or -n option is 0. Historical implementations have handled this differently depending on whether the -f option was also given or not; "tail -0" usually resulted in no output at all, but "tail -0f" usually resulted in a dump of the complete file after a delay of one second. Some implementations have followed this for "tail -n 0" and "tail -f -n 0", some have not.
Either behavior may have been considered useful by application writers, so the standard might break existing applications if the behavior is not made implementation-defined. On the other hand, a perfectly defined way to make tail output all file contents before waiting with -f would be "tail -f -c +1", so it could also be decided that "tail -f -n 0" must not output any data initially.
The standard clearly states the requirements for the tail utility,and conforming implementations must conform to this. Concerns are being forwarded to the sponsor.
Rationale for Interpretation
The standard explicitly defines required behavior, except for tail -0f and tail -0 , which are unspecified. In particular, tail -n 0 and tail -f -n 0 are clearly specified. Implementations that treat tail -n 0 the same as tail -n +0 are not conforming.