
1: GNU coreutils NEWS -*- outline -*- 2: 3: * Noteworthy changes in release 6.9 (2007-03-22) [stable] 4: 5: ** Bug fixes 6: 7: cp -x (--one-file-system) would fail to set mount point permissions 8: 9: The default block size and output format for df -P are now unaffected by 10: the DF_BLOCK_SIZE, BLOCK_SIZE, and BLOCKSIZE environment variables. It 11: is still affected by POSIXLY_CORRECT, though. 12: 13: Using pr -m -s (i.e. merging files, with TAB as the output separator) 14: no longer inserts extraneous spaces between output columns. 15: 16: 17: * Noteworthy changes in release 6.8 (2007-02-24) [not-unstable] 18: 19: ** Bug fixes 20: 21: chgrp, chmod, and chown now honor the --preserve-root option. 22: Before, they would warn, yet continuing traversing and operating on /. 23: 24: chmod no longer fails in an environment (e.g., a chroot) with openat 25: support but with insufficient /proc support. 26: 27: "cp --parents F/G D" no longer creates a directory D/F when F is not 28: a directory (and F/G is therefore invalid). 29: 30: "cp --preserve=mode" would create directories that briefly had 31: too-generous permissions in some cases. For example, when copying a 32: directory with permissions 777 the destination directory might 33: temporarily be setgid on some file systems, which would allow other 34: users to create subfiles with the same group as the directory. Fix 35: similar problems with 'install' and 'mv'. 36: 37: cut no longer dumps core for usage like "cut -f2- f1 f2" with two or 38: more file arguments. This was due to a double-free bug, introduced 39: in coreutils-5.3.0. 40: 41: dd bs= operands now silently override any later ibs= and obs= 42: operands, as POSIX and tradition require. 43: 44: "ls -FRL" always follows symbolic links on Linux. Introduced in 45: coreutils-6.0. 46: 47: A cross-partition "mv /etc/passwd ~" (by non-root) now prints 48: a reasonable diagnostic. Before, it would print this: 49: "mv: cannot remove `/etc/passwd': Not a directory". 50: 51: pwd and "readlink -e ." no longer fail unnecessarily when a parent 52: directory is unreadable. 53: 54: "rm -rf /etc/passwd" (run by non-root) now prints a diagnostic. 55: Before it would print nothing. 56: 57: "rm --interactive=never F" no longer prompts for an unwritable F 58: 59: ** New features 60: 61: sort's new --compress-program=PROG option specifies a compression 62: program to use when writing and reading temporary files. 63: This can help save both time and disk space when sorting large inputs. 64: 65: sort accepts the new option -C, which acts like -c except no diagnostic 66: is printed. Its --check option now accepts an optional argument, and 67: --check=quiet and --check=silent are now aliases for -C, while 68: --check=diagnose-first is an alias for -c or plain --check. 69: 70: 71: * Noteworthy changes in release 6.7 (2006-12-08) [stable] 72: 73: ** Bug fixes 74: 75: When cp -p copied a file with special mode bits set, the same bits 76: were set on the copy even when ownership could not be preserved. 77: This could result in files that were setuid to the wrong user. 78: To fix this, special mode bits are now set in the copy only if its 79: ownership is successfully preserved. Similar problems were fixed 80: with mv when copying across file system boundaries. This problem 81: affects all versions of coreutils through 6.6. 82: 83: cp --preserve=ownership would create output files that temporarily 84: had too-generous permissions in some cases. For example, when 85: copying a file with group A and mode 644 into a group-B sticky 86: directory, the output file was briefly readable by group B. 87: Fix similar problems with cp options like -p that imply 88: --preserve=ownership, with install -d when combined with either -o 89: or -g, and with mv when copying across file system boundaries. 90: This bug affects coreutils 6.0 through 6.6. 91: 92: du --one-file-system (-x) would skip subdirectories of any directory 93: listed as second or subsequent command line argument. This bug affects 94: coreutils-6.4, 6.5 and 6.6. 95: 96: 97: * Noteworthy changes in release 6.6 (2006-11-22) [stable] 98: 99: ** Bug fixes 100: 101: ls would segfault (dereference a NULL pointer) for a file with a 102: nameless group or owner. This bug was introduced in coreutils-6.5. 103: 104: A bug in the latest official m4/gettext.m4 (from gettext-0.15) 105: made configure fail to detect gettext support, due to the unusual 106: way in which coreutils uses AM_GNU_GETTEXT. 107: 108: ** Improved robustness 109: 110: Now, du (and the other fts clients: chmod, chgrp, chown) honor a 111: trailing slash in the name of a symlink-to-directory even on 112: Solaris 9, by working around its buggy fstatat implementation. 113: 114: 115: * Major changes in release 6.5 (2006-11-19) [stable] 116: 117: ** Bug fixes 118: 119: du (and the other fts clients: chmod, chgrp, chown) would exit early 120: when encountering an inaccessible directory on a system with native 121: openat support (i.e., linux-2.6.16 or newer along with glibc-2.4 122: or newer). This bug was introduced with the switch to gnulib's 123: openat-based variant of fts, for coreutils-6.0. 124: 125: "ln --backup f f" now produces a sensible diagnostic 126: 127: ** New features 128: 129: rm accepts a new option: --one-file-system 130: 131: 132: * Major changes in release 6.4 (2006-10-22) [stable] 133: 134: ** Bug fixes 135: 136: chgrp and chown would malfunction when invoked with both -R and -H and 137: with one or more of the following: --preserve-root, --verbose, --changes, 138: --from=o:g (chown only). This bug was introduced with the switch to 139: gnulib's openat-based variant of fts, for coreutils-6.0. 140: 141: cp --backup dir1 dir2, would rename an existing dir2/dir1 to dir2/dir1~. 142: This bug was introduced in coreutils-6.0. 143: 144: With --force (-f), rm no longer fails for ENOTDIR. 145: For example, "rm -f existing-non-directory/anything" now exits 146: successfully, ignoring the error about a nonexistent file. 147: 148: 149: * Major changes in release 6.3 (2006-09-30) [stable] 150: 151: ** Improved robustness 152: 153: pinky no longer segfaults on Darwin 7.9.0 (MacOS X 10.3.9) due to a 154: buggy native getaddrinfo function. 155: 156: rm works around a bug in Darwin 7.9.0 (MacOS X 10.3.9) that would 157: sometimes keep it from removing all entries in a directory on an HFS+ 158: or NFS-mounted partition. 159: 160: sort would fail to handle very large input (around 40GB) on systems with a 161: mkstemp function that returns a file descriptor limited to 32-bit offsets. 162: 163: ** Bug fixes 164: 165: chmod would fail unnecessarily in an unusual case: when an initially- 166: inaccessible argument is rendered accessible by chmod's action on a 167: preceding command line argument. This bug also affects chgrp, but 168: it is harder to demonstrate. It does not affect chown. The bug was 169: introduced with the switch from explicit recursion to the use of fts 170: in coreutils-5.1.0 (2003-10-15). 171: 172: cp -i and mv -i occasionally neglected to prompt when the copy or move 173: action was bound to fail. This bug dates back to before fileutils-4.0. 174: 175: With --verbose (-v), cp and mv would sometimes generate no output, 176: or neglect to report file removal. 177: 178: For the "groups" command: 179: 180: "groups" no longer prefixes the output with "user :" unless more 181: than one user is specified; this is for compatibility with BSD. 182: 183: "groups user" now exits nonzero when it gets a write error. 184: 185: "groups" now processes options like --help more compatibly. 186: 187: shuf would infloop, given 8KB or more of piped input 188: 189: ** Portability 190: 191: Versions of chmod, chown, chgrp, du, and rm (tools that use openat etc.) 192: compiled for Solaris 8 now also work when run on Solaris 10. 193: 194: 195: * Major changes in release 6.2 (2006-09-18) [stable candidate] 196: 197: ** Changes in behavior 198: 199: mkdir -p and install -d (or -D) now use a method that forks a child 200: process if the working directory is unreadable and a later argument 201: uses a relative file name. This avoids some race conditions, but it 202: means you may need to kill two processes to stop these programs. 203: 204: rm now rejects attempts to remove the root directory, e.g., `rm -fr /' 205: now fails without removing anything. Likewise for any file name with 206: a final `./' or `../' component. 207: 208: tail now ignores the -f option if POSIXLY_CORRECT is set, no file 209: operand is given, and standard input is any FIFO; formerly it did 210: this only for pipes. 211: 212: ** Infrastructure changes 213: 214: Coreutils now uses gnulib via the gnulib-tool script. 215: If you check the source out from CVS, then follow the instructions 216: in README-cvs. Although this represents a large change to the 217: infrastructure, it should cause no change in how the tools work. 218: 219: ** Bug fixes 220: 221: cp --backup no longer fails when the last component of a source file 222: name is "." or "..". 223: 224: "ls --color" would highlight other-writable and sticky directories 225: no differently than regular directories on a file system with 226: dirent.d_type support. 227: 228: "mv -T --verbose --backup=t A B" now prints the " (backup: B.~1~)" 229: suffix when A and B are directories as well as when they are not. 230: 231: mv and "cp -r" no longer fail when invoked with two arguments 232: where the first one names a directory and the second name ends in 233: a slash and doesn't exist. E.g., "mv dir B/", for nonexistent B, 234: now succeeds, once more. This bug was introduced in coreutils-5.3.0. 235: 236: 237: * Major changes in release 6.1 (2006-08-19) [unstable] 238: 239: ** Changes in behavior 240: 241: df now considers BSD "kernfs" file systems to be dummies 242: 243: ** New features 244: 245: printf now supports the 'I' flag on hosts whose underlying printf 246: implementations support 'I', e.g., "printf %Id 2". 247: 248: ** Bug fixes 249: 250: cp --sparse preserves sparseness at the end of a file, even when 251: the file's apparent size is not a multiple of its block size. 252: [introduced with the original design, in fileutils-4.0r, 2000-04-29] 253: 254: df (with a command line argument) once again prints its header 255: [introduced in coreutils-6.0] 256: 257: ls -CF would misalign columns in some cases involving non-stat'able files 258: [introduced in coreutils-6.0] 259: 260: * Major changes in release 6.0 (2006-08-15) [unstable] 261: 262: ** Improved robustness 263: 264: df: if the file system claims to have more available than total blocks, 265: report the number of used blocks as being "total - available" 266: (a negative number) rather than as garbage. 267: 268: dircolors: a new autoconf run-test for AIX's buggy strndup function 269: prevents malfunction on that system; may also affect cut, expand, 270: and unexpand. 271: 272: fts no longer changes the current working directory, so its clients 273: (chmod, chown, chgrp, du) no longer malfunction under extreme conditions. 274: 275: pwd and other programs using lib/getcwd.c work even on file systems 276: where dirent.d_ino values are inconsistent with those from stat.st_ino. 277: 278: rm's core is now reentrant: rm --recursive (-r) now processes 279: hierarchies without changing the working directory at all. 280: 281: ** Changes in behavior 282: 283: basename and dirname now treat // as different from / on platforms 284: where the two are distinct. 285: 286: chmod, install, and mkdir now preserve a directory's set-user-ID and 287: set-group-ID bits unless you explicitly request otherwise. E.g., 288: `chmod 755 DIR' and `chmod u=rwx,go=rx DIR' now preserve DIR's 289: set-user-ID and set-group-ID bits instead of clearing them, and 290: similarly for `mkdir -m 755 DIR' and `mkdir -m u=rwx,go=rx DIR'. To 291: clear the bits, mention them explicitly in a symbolic mode, e.g., 292: `mkdir -m u=rwx,go=rx,-s DIR'. To set them, mention them explicitly 293: in either a symbolic or a numeric mode, e.g., `mkdir -m 2755 DIR', 294: `mkdir -m u=rwx,go=rx,g+s' DIR. This change is for convenience on 295: systems where these bits inherit from parents. Unfortunately other 296: operating systems are not consistent here, and portable scripts 297: cannot assume the bits are set, cleared, or preserved, even when the 298: bits are explicitly mentioned. For example, OpenBSD 3.9 `mkdir -m 299: 777 D' preserves D's setgid bit but `chmod 777 D' clears it. 300: Conversely, Solaris 10 `mkdir -m 777 D', `mkdir -m g-s D', and 301: `chmod 0777 D' all preserve D's setgid bit, and you must use 302: something like `chmod g-s D' to clear it. 303: 304: `cp --link --no-dereference' now works also on systems where the 305: link system call cannot create a hard link to a symbolic link. 306: This change has no effect on systems with a Linux-based kernel. 307: 308: csplit and nl now use POSIX syntax for regular expressions, not 309: Emacs syntax. As a result, character classes like [[:print:]] and 310: interval expressions like A\{1,9\} now have their usual meaning, 311: . no longer matches the null character, and \ must precede the + and 312: ? operators. 313: 314: date: a command like date -d '2006-04-23 21 days ago' would print 315: the wrong date in some time zones. (see the test for an example) 316: 317: df changes: 318: 319: df now considers "none" and "proc" file systems to be dummies and 320: therefore does not normally display them. Also, inaccessible file 321: systems (which can be caused by shadowed mount points or by 322: chrooted bind mounts) are now dummies, too. 323: 324: df now fails if it generates no output, so you can inspect the 325: exit status of a command like "df -t ext3 -t reiserfs DIR" to test 326: whether DIR is on a file system of type "ext3" or "reiserfs". 327: 328: expr no longer complains about leading ^ in a regular expression 329: (the anchor is ignored), or about regular expressions like A** (the 330: second "*" is ignored). expr now exits with status 2 (not 3) for 331: errors it detects in the expression's values; exit status 3 is now 332: used only for internal errors (such as integer overflow, which expr 333: now checks for). 334: 335: install and mkdir now implement the X permission symbol correctly, 336: e.g., `mkdir -m a+X dir'; previously the X was ignored. 337: 338: install now creates parent directories with mode u=rwx,go=rx (755) 339: instead of using the mode specified by the -m option; and it does 340: not change the owner or group of parent directories. This is for 341: compatibility with BSD and closes some race conditions. 342: 343: ln now uses different (and we hope clearer) diagnostics when it fails. 344: ln -v now acts more like FreeBSD, so it generates output only when 345: successful and the output is easier to parse. 346: 347: ls now defaults to --time-style='locale', not --time-style='posix-long-iso'. 348: However, the 'locale' time style now behaves like 'posix-long-iso' 349: if your locale settings appear to be messed up. This change 350: attempts to have the default be the best of both worlds. 351: 352: mkfifo and mknod no longer set special mode bits (setuid, setgid, 353: and sticky) with the -m option. 354: 355: nohup's usual diagnostic now more precisely specifies the I/O 356: redirections, e.g., "ignoring input and appending output to 357: nohup.out". Also, nohup now redirects stderr to nohup.out (or 358: $HOME/nohup.out) if stdout is closed and stderr is a tty; this is in 359: response to Open Group XCU ERN 71. 360: 361: rm --interactive now takes an optional argument, although the 362: default of using no argument still acts like -i. 363: 364: rm no longer fails to remove an empty, unreadable directory 365: 366: seq changes: 367: 368: seq defaults to a minimal fixed point format that does not lose 369: information if seq's operands are all fixed point decimal numbers. 370: You no longer need the `-f%.f' in `seq -f%.f 1048575 1024 1050623', 371: for example, since the default format now has the same effect. 372: 373: seq now lets you use %a, %A, %E, %F, and %G formats. 374: 375: seq now uses long double internally rather than double. 376: 377: sort now reports incompatible options (e.g., -i and -n) rather than 378: silently ignoring one of them. 379: 380: stat's --format=FMT option now works the way it did before 5.3.0: 381: FMT is automatically newline terminated. The first stable release 382: containing this change was 5.92. 383: 384: stat accepts the new option --printf=FMT, where FMT is *not* 385: automatically newline terminated. 386: 387: stat: backslash escapes are interpreted in a format string specified 388: via --printf=FMT, but not one specified via --format=FMT. That includes 389: octal (\ooo, at most three octal digits), hexadecimal (\xhh, one or 390: two hex digits), and the standard sequences (\a, \b, \f, \n, \r, \t, 391: \v, \", \\). 392: 393: With no operand, 'tail -f' now silently ignores the '-f' only if 394: standard input is a FIFO or pipe and POSIXLY_CORRECT is set. 395: Formerly, it ignored the '-f' when standard input was a FIFO, pipe, 396: or socket. 397: 398: ** Scheduled for removal 399: 400: ptx's --copyright (-C) option is scheduled for removal in 2007, and 401: now evokes a warning. Use --version instead. 402: 403: rm's --directory (-d) option is scheduled for removal in 2006. This 404: option has been silently ignored since coreutils 5.0. On systems 405: that support unlinking of directories, you can use the "unlink" 406: command to unlink a directory. 407: 408: Similarly, we are considering the removal of ln's --directory (-d, 409: -F) option in 2006. Please write to <bug-coreutils@gnu.org> if this 410: would cause a problem for you. On systems that support hard links 411: to directories, you can use the "link" command to create one. 412: 413: ** New programs 414: 415: base64: base64 encoding and decoding (RFC 3548) functionality. 416: sha224sum: print or check a SHA224 (224-bit) checksum 417: sha256sum: print or check a SHA256 (256-bit) checksum 418: sha384sum: print or check a SHA384 (384-bit) checksum 419: sha512sum: print or check a SHA512 (512-bit) checksum 420: shuf: Shuffle lines of text. 421: 422: ** New features 423: 424: chgrp now supports --preserve-root, --no-preserve-root (default), 425: as it was documented to do, and just as chmod, chown, and rm do. 426: 427: New dd iflag= and oflag= flags: 428: 429: 'directory' causes dd to fail unless the file is a directory, on 430: hosts that support this (e.g., Linux kernels, version 2.1.126 and 431: later). This has limited utility but is present for completeness. 432: 433: 'noatime' causes dd to read a file without updating its access 434: time, on hosts that support this (e.g., Linux kernels, version 435: 2.6.8 and later). 436: 437: 'nolinks' causes dd to fail if the file has multiple hard links, 438: on hosts that support this (e.g., Solaris 10 and later). 439: 440: ls accepts the new option --group-directories-first, to make it 441: list directories before files. 442: 443: rm now accepts the -I (--interactive=once) option. This new option 444: prompts once if rm is invoked recursively or if more than three 445: files are being deleted, which is less intrusive than -i prompting 446: for every file, but provides almost the same level of protection 447: against mistakes. 448: 449: shred and sort now accept the --random-source option. 450: 451: sort now accepts the --random-sort (-R) option and `R' ordering option. 452: 453: sort now supports obsolete usages like "sort +1 -2" unless 454: POSIXLY_CORRECT is set. However, when conforming to POSIX 455: 1003.1-2001 "sort +1" still sorts the file named "+1". 456: 457: wc accepts a new option --files0-from=FILE, where FILE contains a 458: list of NUL-terminated file names. 459: 460: ** Bug fixes 461: 462: cat with any of the options, -A -v -e -E -T, when applied to a 463: file in /proc or /sys (linux-specific), would truncate its output, 464: usually printing nothing. 465: 466: cp -p would fail in a /proc-less chroot, on some systems 467: 468: When `cp -RL' encounters the same directory more than once in the 469: hierarchy beneath a single command-line argument, it no longer confuses 470: them with hard-linked directories. 471: 472: fts-using tools (chmod, chown, chgrp, du) no longer fail due to 473: a double-free bug -- it could be triggered by making a directory 474: inaccessible while e.g., du is traversing the hierarchy under it. 475: 476: fts-using tools (chmod, chown, chgrp, du) no longer misinterpret 477: a very long symlink chain as a dangling symlink. Before, such a 478: misinterpretation would cause these tools not to diagnose an ELOOP error. 479: 480: ls --indicator-style=file-type would sometimes stat a symlink 481: unnecessarily. 482: 483: ls --file-type worked like --indicator-style=slash (-p), 484: rather than like --indicator-style=file-type. 485: 486: mv: moving a symlink into the place of an existing non-directory is 487: now done atomically; before, mv would first unlink the destination. 488: 489: mv -T DIR EMPTY_DIR no longer fails unconditionally. Also, mv can 490: now remove an empty destination directory: mkdir -p a b/a; mv a b 491: 492: rm (on systems with openat) can no longer exit before processing 493: all command-line arguments. 494: 495: rm is no longer susceptible to a few low-probability memory leaks. 496: 497: rm -r no longer fails to remove an inaccessible and empty directory 498: 499: rm -r's cycle detection code can no longer be tricked into reporting 500: a false positive (introduced in fileutils-4.1.9). 501: 502: shred --remove FILE no longer segfaults on Gentoo systems 503: 504: sort would fail for large inputs (~50MB) on systems with a buggy 505: mkstemp function. sort and tac now use the replacement mkstemp 506: function, and hence are no longer subject to limitations (of 26 or 32, 507: on the maximum number of files from a given template) on HP-UX 10.20, 508: SunOS 4.1.4, Solaris 2.5.1 and OSF1/Tru64 V4.0F&V5.1. 509: 510: tail -f once again works on a file with the append-only 511: attribute (affects at least Linux ext2, ext3, xfs file systems) 512: 513: * Major changes in release 5.97 (2006-06-24) [stable] 514: * Major changes in release 5.96 (2006-05-22) [stable] 515: * Major changes in release 5.95 (2006-05-12) [stable] 516: * Major changes in release 5.94 (2006-02-13) [stable] 517: 518: [see the b5_9x branch for details] 519: 520: * Major changes in release 5.93 (2005-11-06) [stable] 521: 522: ** Bug fixes 523: 524: dircolors no longer segfaults upon an attempt to use the new 525: STICKY_OTHER_WRITABLE (OWT) attribute. 526: 527: du no longer overflows a counter when processing a file larger than 528: 2^31-1 on some 32-bit systems (at least some AIX 5.1 configurations). 529: 530: md5sum once again defaults to using the ` ' non-binary marker 531: (rather than the `*' binary marker) by default on Unix-like systems. 532: 533: mkdir -p and install -d no longer exit nonzero when asked to create 534: a directory like `nonexistent/.' 535: 536: rm emits a better diagnostic when (without -r) it fails to remove 537: a directory on e.g., Solaris 9/10 systems. 538: 539: tac now works when stdin is a tty, even on non-Linux systems. 540: 541: "tail -c 2 FILE" and "touch 0101000000" now operate as POSIX 542: 1003.1-2001 requires, even when coreutils is conforming to older 543: POSIX standards, as the newly-required behavior is upward-compatible 544: with the old. 545: 546: The documentation no longer mentions rm's --directory (-d) option. 547: 548: ** Build-related bug fixes 549: 550: installing .mo files would fail 551: 552: 553: * Major changes in release 5.92 (2005-10-22) [stable] 554: 555: ** Bug fixes 556: 557: chmod now diagnoses an invalid mode string starting with an octal digit 558: 559: dircolors now properly quotes single-quote characters 560: 561: 562: * Major changes in release 5.91 (2005-10-17) [stable candidate] 563: 564: ** Bug fixes 565: 566: "mkdir -p /a/b/c" no longer fails merely because a leading prefix 567: directory (e.g., /a or /a/b) exists on a read-only file system. 568: 569: ** Removed options 570: 571: tail's --allow-missing option has been removed. Use --retry instead. 572: 573: stat's --link and -l options have been removed. 574: Use --dereference (-L) instead. 575: 576: ** Deprecated options 577: 578: Using ls, du, or df with the --kilobytes option now evokes a warning 579: that the long-named option is deprecated. Use `-k' instead. 580: 581: du's long-named --megabytes option now evokes a warning. 582: Use -m instead. 583: 584: 585: * Major changes in release 5.90 (2005-09-29) [unstable] 586: 587: ** Bring back support for `head -NUM', `tail -NUM', etc. even when 588: conforming to POSIX 1003.1-2001. The following changes apply only 589: when conforming to POSIX 1003.1-2001; there is no effect when 590: conforming to older POSIX versions. 591: 592: The following usages now behave just as when conforming to older POSIX: 593: 594: date -I 595: expand -TAB1[,TAB2,...] 596: fold -WIDTH 597: head -NUM 598: join -j FIELD 599: join -j1 FIELD 600: join -j2 FIELD 601: join -o FIELD_NAME1 FIELD_NAME2... 602: nice -NUM 603: od -w 604: pr -S 605: split -NUM 606: tail -[NUM][bcl][f] [FILE] 607: 608: The following usages no longer work, due to the above changes: 609: 610: date -I TIMESPEC (use `date -ITIMESPEC' instead) 611: od -w WIDTH (use `od -wWIDTH' instead) 612: pr -S STRING (use `pr -SSTRING' instead) 613: 614: A few usages still have behavior that depends on which POSIX standard is 615: being conformed to, and portable applications should beware these 616: problematic usages. These include: 617: 618: Problematic Standard-conforming replacement, depending on 619: usage whether you prefer the behavior of: 620: POSIX 1003.2-1992 POSIX 1003.1-2001 621: sort +4 sort -k 5 sort ./+4 622: tail +4 tail -n +4 tail ./+4 623: tail - f tail f [see (*) below] 624: tail -c 4 tail -c 10 ./4 tail -c4 625: touch 12312359 f touch -t 12312359 f touch ./12312359 f 626: uniq +4 uniq -s 4 uniq ./+4 627: 628: (*) "tail - f" does not conform to POSIX 1003.1-2001; to read 629: standard input and then "f", use the command "tail -- - f". 630: 631: These changes are in response to decisions taken in the January 2005 632: Austin Group standardization meeting. For more details, please see 633: "Utility Syntax Guidelines" in the Minutes of the January 2005 634: Meeting <http://www.opengroup.org/austin/docs/austin_239.html>. 635: 636: ** Binary input and output are now implemented more consistently. 637: These changes affect only platforms like MS-DOS that distinguish 638: between binary and text files. 639: 640: The following programs now always use text input/output: 641: 642: expand unexpand 643: 644: The following programs now always use binary input/output to copy data: 645: 646: cp install mv shred 647: 648: The following programs now always use binary input/output to copy 649: data, except for stdin and stdout when it is a terminal. 650: 651: head tac tail tee tr 652: (cat behaves similarly, unless one of the options -bensAE is used.) 653: 654: cat's --binary or -B option has been removed. It existed only on 655: MS-DOS-like platforms, and didn't work as documented there. 656: 657: md5sum and sha1sum now obey the -b or --binary option, even if 658: standard input is a terminal, and they no longer report files to be 659: binary if they actually read them in text mode. 660: 661: ** Changes for better conformance to POSIX 662: 663: cp, ln, mv, rm changes: 664: 665: Leading white space is now significant in responses to yes-or-no questions. 666: For example, if "rm" asks "remove regular file `foo'?" and you respond 667: with " y" (i.e., space before "y"), it counts as "no". 668: 669: dd changes: 670: 671: On a QUIT or PIPE signal, dd now exits without printing statistics. 672: 673: On hosts lacking the INFO signal, dd no longer treats the USR1 674: signal as if it were INFO when POSIXLY_CORRECT is set. 675: 676: If the file F is non-seekable and contains fewer than N blocks, 677: then before copying "dd seek=N of=F" now extends F with zeroed 678: blocks until F contains N blocks. 679: 680: fold changes: 681: 682: When POSIXLY_CORRECT is set, "fold file -3" is now equivalent to 683: "fold file ./-3", not the obviously-erroneous "fold file ./-w3". 684: 685: ls changes: 686: 687: -p now marks only directories; it is equivalent to the new option 688: --indicator-style=slash. Use --file-type or 689: --indicator-style=file-type to get -p's old behavior. 690: 691: nice changes: 692: 693: Documentation and diagnostics now refer to "nicenesses" (commonly 694: in the range -20...19) rather than "nice values" (commonly 0...39). 695: 696: nohup changes: 697: 698: nohup now ignores the umask when creating nohup.out. 699: 700: nohup now closes stderr if it is a terminal and stdout is closed. 701: 702: nohup now exits with status 127 (not 1) when given an invalid option. 703: 704: pathchk changes: 705: 706: It now rejects the empty name in the normal case. That is, 707: "pathchk -p ''" now fails, and "pathchk ''" fails unless the 708: current host (contra POSIX) allows empty file names. 709: 710: The new -P option checks whether a file name component has leading "-", 711: as suggested in interpretation "Austin-039:XCU:pathchk:pathchk -p" 712: <http://www.opengroup.org/austin/interps/doc.tpl?gdid=6232>. 713: It also rejects the empty name even if the current host accepts it; see 714: <http://www.opengroup.org/austin/interps/doc.tpl?gdid=6233>. 715: 716: The --portability option is now equivalent to -p -P. 717: 718: ** Bug fixes 719: 720: chmod, mkdir, mkfifo, and mknod formerly mishandled rarely-used symbolic 721: permissions like =xX and =u, and did not properly diagnose some invalid 722: strings like g+gr, ug,+x, and +1. These bugs have been fixed. 723: 724: csplit could produce corrupt output, given input lines longer than 8KB 725: 726: dd now computes statistics using a realtime clock (if available) 727: rather than the time-of-day clock, to avoid glitches if the 728: time-of-day is changed while dd is running. Also, it avoids 729: using unsafe code in signal handlers; this fixes some core dumps. 730: 731: expr and test now correctly compare integers of unlimited magnitude. 732: 733: expr now detects integer overflow when converting strings to integers, 734: rather than silently wrapping around. 735: 736: ls now refuses to generate time stamps containing more than 1000 bytes, to 737: foil potential denial-of-service attacks on hosts with very large stacks. 738: 739: "mkdir -m =+x dir" no longer ignores the umask when evaluating "+x", 740: and similarly for mkfifo and mknod. 741: 742: "mkdir -p /tmp/a/b dir" no longer attempts to create the `.'-relative 743: directory, dir (in /tmp/a), when, after creating /tmp/a/b, it is unable 744: to return to its initial working directory. Similarly for "install -D 745: file /tmp/a/b/file". 746: 747: "pr -D FORMAT" now accepts the same formats that "date +FORMAT" does. 748: 749: stat now exits nonzero if a file operand does not exist 750: 751: ** Improved robustness 752: 753: Date no longer needs to allocate virtual memory to do its job, 754: so it can no longer fail due to an out-of-memory condition, 755: no matter how large the result. 756: 757: ** Improved portability 758: 759: hostid now prints exactly 8 hexadecimal digits, possibly with leading zeros, 760: and without any spurious leading "fff..." on 64-bit hosts. 761: 762: nice now works on Darwin 7.7.0 in spite of its invalid definition of NZERO. 763: 764: `rm -r' can remove all entries in a directory even when it is on a 765: file system for which readdir is buggy and that was not checked by 766: coreutils' old configure-time run-test. 767: 768: sleep no longer fails when resumed after being suspended on linux-2.6.8.1, 769: in spite of that kernel's buggy nanosleep implementation. 770: 771: ** New features 772: 773: chmod -w now complains if its behavior differs from what chmod a-w 774: would do, and similarly for chmod -r, chmod -x, etc. 775: 776: cp and mv: the --reply=X option is deprecated 777: 778: date accepts the new option --rfc-3339=TIMESPEC. The old --iso-8601 (-I) 779: option is deprecated; it still works, but new applications should avoid it. 780: date, du, ls, and pr's time formats now support new %:z, %::z, %:::z 781: specifiers for numeric time zone offsets like -07:00, -07:00:00, and -07. 782: 783: dd has new iflag= and oflag= flags "binary" and "text", which have an 784: effect only on nonstandard platforms that distinguish text from binary I/O. 785: 786: dircolors now supports SETUID, SETGID, STICKY_OTHER_WRITABLE, 787: OTHER_WRITABLE, and STICKY, with ls providing default colors for these 788: categories if not specified by dircolors. 789: 790: du accepts new options: --time[=TYPE] and --time-style=STYLE 791: 792: join now supports a NUL field separator, e.g., "join -t '\0'". 793: join now detects and reports incompatible options, e.g., "join -t x -t y", 794: 795: ls no longer outputs an extra space between the mode and the link count 796: when none of the listed files has an ACL. 797: 798: md5sum --check now accepts multiple input files, and similarly for sha1sum. 799: 800: If stdin is a terminal, nohup now redirects it from /dev/null to 801: prevent the command from tying up an OpenSSH session after you logout. 802: 803: "rm -FOO" now suggests "rm ./-FOO" if the file "-FOO" exists and