1 2Busybox POSIX conformance table 3 4See POSIX documentation (1003.1-2008) here: 5http://www.opengroup.org/onlinepubs/9699919799/ 6And the complete list of all utilities that POSIX covers: 7http://www.opengroup.org/onlinepubs/9699919799/idx/utilities.html 8 9This listing is a work in progress, and currently only covers 10tool options (not operands, environment variables, return codes, etc..). 11For each option it is set if it (a) exists and (b) compliant to POSIX 2008. 12Some options exist but there is no value in the 'compliant' column: that 13means no one has yet bothered to make sure that the option does what it is 14required to do. 15 16----------------------------------------------- 17 18POSIX Tools supported only as shell built-ins (ash shell): 19 alias, bg, cd, fg, getopts, hash, jobs, read, type, umask, ulimit, 20 unalias, wait, write 21 22POSIX Tools not supported: 23 asa, at, batch, bc, c99, command, compress, csplit, ex, fc, file, 24 gencat, getconf, iconv, join, link, locale, localedef, lp, m4, 25 mailx, newgrp, nl, pathchk, pax, pr, qalter, qdel, qhold, qmove, 26 qmsg, qrerun, qrls, qselect, qsig, qstat, qsub, tabs, talk, tput, 27 tsort, unlink, uucp, uustat, uux 28 29POSIX Tools not supported (DEVELOPMENT): 30 admin, cflow, ctags, cxref, delta, fort77, get, lex, make, nm, prs, rmdel, 31 sact, sccs, strip, unget, val, what, yacc 32 33 34POSIX Tools supported: 35 36Note: echo, printf, kill, pwd documented here as stand-alone applets, 37 not as ash built-ins. 38 39 40ar POSIX options ********************* Failed to recognize zip & tar (did not compare to regular ar) 41 option | exists | compliant | remarks 42 -C | no | no | 43 -T | no | no | 44 -a | no | no | 45 -b | no | no | 46 -c | no | no | 47 -d | no | no | 48 -i | no | no | 49 -m | no | no | 50 -p | yes | | 51 -q | no | no | 52 -r | no | no | 53 -s | no | no | 54 -t | yes | | 55 -u | no | no | 56 -v | yes | | 57 -x | yes | | 58ar Busybox specific options: 59 -o 60 61awk POSIX options 62 option | exists | compliant | remarks 63 -F ERE | yes | | 64 -f progfile | yes | | 65 -v assignment | yes | | 66awk Busybox specific options: None 67 68basename POSIX options: None 69basename Busybox specific options: None 70 71cal POSIX options: None 72cal Busybox specific options: 73 -y, -j 74 75cat POSIX options 76 option | exists | compliant | remarks 77 -u | yes | no | option is ignored 78cat Busybox specific options: None 79 80chgrp POSIX options 81 option | exists | compliant | remarks 82 -H | yes | | 83 -L | yes | | 84 -P | yes | | 85 -R | yes | | 86 -h | yes | | 87chgrp Busybox specific options: 88 -f, -c, -v 89 90chmod POSIX options 91 option | exists | compliant | remarks 92 -R | yes | yes | 93chmod Busybox specific options: 94 -f, -v, -c 95 96chown POSIX options ********************************************* 97 option | exists | compliant | remarks 98 -H | yes | | It seems like all flags are supported (according to printout), but 99 -L | yes | | it fails to work on my machine 100 -P | yes | | 101 -R | yes | | 102 -h | yes | | 103chown Busybox specific options: 104 -f, -c, -v 105 106cksum POSIX options: None 107cksum Busybox specific options: None 108 109cmp POSIX options 110 option | exists | compliant | remarks 111 -l | yes | yes | 112 -s | yes | yes | 113cmp Busybox specific options: 114 115 116comm POSIX options 117 option | exists | compliant | remarks 118 -1 | yes | yes | 119 -2 | yes | yes | 120 -3 | yes | yes | 121comm Busybox specific options: None 122 123cp POSIX options 124 option | exists | compliant | remarks 125 -H | yes | yes | 126 -L | yes | yes | 127 -P | yes | yes | 128 -R | yes | yes | 129 -f | yes | yes | 130 -i | yes | yes | 131 -p | yes | yes | 132cp Busybox specific options: 133 -d, -a, -s, -c, -r, -l 134 135crontab POSIX options 136 option | exists | compliant | remarks 137 -e | yes | | 138 -l | yes | | 139 -r | yes | | 140crontab Busybox specific options: 141 -u, -c 142 143cut POSIX options 144 option | exists | compliant | remarks 145 -b list | yes | yes | 146 -c list | yes | yes | 147 -d delim | yes | yes | 148 -f list | yes | yes | 149 -n | yes | yes | 150 -s | yes | yes | 151cut Busybox specific options: None 152 153date POSIX options 154 option | exists | compliant | remarks 155 -u | yes | yes | 156date Busybox specific options: 157 -I[SPEC], -d TIME, -r FILE, -R, -D FMT 158 159dd POSIX options: 160 option | exists | compliant | remarks 161 if | yes | | 162 of | yes | | 163 ibs | yes | | 164 obs | yes | | 165 bs | yes | | 166 cbs | no | no | 167 skip | yes | | 168 seek | yes | | 169 count | yes | | 170 conv=ascii | no | no | 171 conv=ebcdic | no | no | 172 conv=ibm | no | no | 173 conv=block | no | no | 174 conv=unblock | no | no | 175 conv=lcase | no | no | 176 conv=ucase | no | no | 177 conv=swap | no | no | 178 conv=noerror | yes | | 179 conv=notrunc | yes | | 180 conv=sync | yes | | 181dd compatibility options: 182 conv=fsync | yes | | 183 iflag=skip_bytes| yes | | 184 iflag=fullblock | yes | | 185 186df POSIX options 187 option | exists | compliant | remarks 188 -P | yes | yes | 189 -k | yes | yes | 190 -t | no | no | 191df Busybox specific options: 192 -a, -m, -B SIZE, -i, -h 193Remark: 194- It seems that GNU df does not round percents up in its output (thus its results are a bit different) 195 196diff POSIX options 197 option | exists | compliant | remarks 198 -C n | no | no | 199 -U n | yes | | 200 -b | yes | | 201 -c | no | no | 202 -e | no | no | 203 -f | no | no | 204 -r | yes | | 205 -u | no | no | 206diff Busybox specific options: 207 -d, -a, -s, -t, -L, -N, -i, -T, -w, -q, -S 208 209dirname POSIX options: None 210dirname Busybox specific options: None 211 212du POSIX options 213 option | exists | compliant | remarks 214 -H | yes | | 215 -L | yes | | 216 -a | yes | | 217 -k | yes | | 218 -s | yes | | 219 -x | yes | | 220du Busybox specific options: 221 -c, -m, -h, -d N, -l 222 223 224echo POSIX options: None 225 option | exists | compliant | remarks 226 -n | yes | yes | The result of -n is "implementation-defined" 227echo Busybox specific options: 228 -e, -E 229 230ed POSIX options 231 option | exists | compliant | remarks 232 -p string | no | no | 233 -s | no | no | 234ed Busybox specific options: None 235 236env POSIX options 237 option | exists | compliant | remarks 238 -i | no | no | 239env Busybox specific options: 240 -u, -, -i 241 242expand POSIX options 243 option | exists | compliant | remarks 244 -t tablist | yes | yes | 245expand Busybox specific options: 246 --tabs=N, -i, --initial 247 248expr POSIX operations: 249 option | exists | compliant | remarks 250 | | yes | yes | 251 & | yes | yes | 252 = | yes | yes | 253 > | yes | yes | 254 >= | yes | yes | 255 <= | yes | yes | 256 < | yes | yes | 257 != | yes | yes | 258 + | yes | yes | 259 - | yes | yes | 260 * | yes | yes | 261 / | yes | yes | 262 % | yes | yes | 263 : | yes | yes | 264 (expr) | yes | yes | 265 integer | yes | yes | 266 string | yes | yes | 267expr Busybox specific operations: 268 match, substr, index, length, quote 269 270false POSIX options: None 271false Busybox specific options: None 272 273find POSIX options 274 option | exists | compliant | remarks 275 -H | no | no | 276 -L | no | no | 277find Busybox specific options: 278 -group NAME, -mtime DAYS, -print, -maxdepth N, -exec CMD ARG ;, -newer FILE, -context, -iname PATTERN, -follow, -depth, -xdev, -inum N, -type X, -print0, -mindepth N, -mmin MINS, -regex PATTERN, -prune, -path PATTERN, -user NAME, -delete, -perm NNN, -name PATTERN, -size N[bck] 279 280fold POSIX options 281 option | exists | compliant | remarks 282 -b | yes | yes | 283 -s | yes | yes | 284 -w width | yes | yes | 285fold Busybox specific options: None 286 287fuser POSIX options 288 option | exists | compliant | remarks 289 -c | no | no | 290 -f | no | no | 291 -u | no | no | 292fuser Busybox specific options: 293 -m, -k, -4, -SIGNAL, -6, -s 294 295grep POSIX options 296 option | exists | compliant | remarks 297 -E | yes | | 298 -F | yes | | 299 -c | yes | | 300 -e pattern_list | yes | | 301 -f pattern_file | yes | | 302 -i | yes | | 303 -l | yes | | 304 -n | yes | | 305 -q | yes | | 306 -s | yes | | 307 -v | yes | | 308 -x | no | no | 309grep Busybox specific options: 310 -A, -C, -B, -L, -H, -o, -h, -w, -r, -z, -m MAX 311 312head POSIX options 313 option | exists | compliant | remarks 314 -n number | yes | yes | 315head Busybox specific options: 316 -v, -c NUM, -q 317 318id POSIX options 319 option | exists | compliant | remarks 320 -G | yes | yes | 321 -g | yes | yes | 322 -n | yes | yes | 323 -r | yes | yes | 324 -u | yes | yes | 325id Busybox specific options: 326 -Z 327 328ipcrm POSIX options 329 option | exists | compliant | remarks 330 -M shmkey | no | no | 331 -Q msgkey | no | no | 332 -S semkey | no | no | 333 -m shmid | no | no | 334 -q msgid | no | no | 335 -s semid | no | no | 336ipcrm Busybox specific options: 337 -mM, -qQ, -sS 338 339ipcs POSIX options 340 option | exists | compliant | remarks 341 -a | yes | | 342 -b | no | no | 343 -c | yes | | 344 -m | yes | | 345 -o | no | no | 346 -p | yes | | 347 -q | yes | | 348 -s | yes | | 349 -t | yes | | 350ipcs Busybox specific options: 351 -l, -i, -u 352 353kill POSIX options 354 option | exists | compliant | remarks 355 -l | yes | yes | 356 -s signal_name | yes | yes | 357 -signal_name | yes | yes | 358 -signal_number | yes | yes | 359kill Busybox specific options: 360 -q, -o 361 362ln POSIX options 363 option | exists | compliant | remarks 364 -L | no | no | 365 -P | no | no | 366 -f | yes | yes | 367 -s | yes | yes | 368ln Busybox specific options: 369 -S suf, -n, -b 370 371logger POSIX options: None 372logger Busybox specific options: 373 -p PRIO, -t TAG, -s 374 375logname POSIX options: None 376logname Busybox specific options: None 377 378ls POSIX options 379 option | exists | compliant | remarks 380 -1 | yes | yes | 381 -A | yes | yes | 382 -C | yes | yes | 383 -F | yes | yes | And more: '=' for sockets (not defined by POSIX) 384 -H | no | no | 385 -L | yes | yes | But coloring may be wrong (at least POSIX does not require correct colors :) ) 386 -R | yes | yes | 387 -S | yes | yes | 388 -a | yes | yes | 389 -c | yes | no | Sorts output with '-l' (should only show ctime with '-l', and sort only with '-t') 390 -d | yes | no | When invoked together with '-L' should read symbolic links, and doesn't 391 -f | no | no | 392 -g | no | no | 393 -i | yes | yes | 394 -k | yes | no | Does something completely unrelated! (Lists security context instead of specifying block size) 395 -l | yes | yes | 396 -m | no | no | 397 -n | yes | no | Works correctly only together with '-l' (but POSIX requires '-l' to be implicitly assumed) 398 -o | no | no | 399 -p | yes | yes | 400 -q | no | no | 401 -r | yes | yes | 402 -s | yes | yes | 403 -t | yes | yes | 404 -u | yes | yes | 405 -x | yes | yes | 406ls Busybox specific options: 407 --color, -T NUM, -K, -X, -Z, -e, -h, -v, -w NUM 408 409man POSIX options 410 option | exists | compliant | remarks 411 -k | no | no | 412man Busybox specific options: 413 -a Display all pages 414 415 416mesg POSIX options: None 417mesg Busybox specific options: None 418 419mkdir POSIX options 420 option | exists | compliant | remarks 421 -m mode | yes | yes | 422 -p | yes | yes | 423mkdir Busybox specific options: 424 -Z 425 426mkfifo POSIX options 427 option | exists | compliant | remarks 428 -m mode | yes | yes | 429mkfifo Busybox specific options: 430 -Z 431 432more POSIX options 433 option | exists | compliant | remarks 434 -c | no | no | 435 -e | no | no | 436 -i | no | no | 437 -n number | no | no | 438 -p command | no | no | 439 -s | no | no | 440 -t tagstring | no | no | 441 -u | no | no | 442more Busybox specific options: None 443 444mv POSIX options 445 option | exists | compliant | remarks 446 -f | yes | yes | 447 -i | yes | yes | 448mv Busybox specific options: None 449 450nice POSIX options 451 option | exists | compliant | remarks 452 -n increment | yes | yes | 453nice Busybox specific options: None 454 455nohup POSIX options: None 456nohup Busybox specific options: None 457 458od POSIX options 459 option | exists | compliant | remarks 460 -A address_base | no | no | 461 -N count | no | no | 462 -b | no | no | 463 -c | no | no | 464 -d | no | no | 465 -j skip | no | no | 466 -o | no | no | 467 -s | no | no | 468 -t type_string | no | no | 469 -v | no | no | 470 -x | no | no | 471od Busybox specific options: None 472 473paste POSIX options 474 option | exists | compliant | remarks 475 -d list | yes | yes | 476 -s | yes | yes | 477paste Busybox specific options: None 478 479patch POSIX options 480 option | exists | compliant | remarks 481 -D define | no | no | 482 -N | no | no | 483 -R | yes | yes | 484 -b | no | no | 485 -c | no | no | 486 -d dir | no | no | 487 -e | no | no | 488 -i patchfile | yes | yes | 489 -l | no | no | 490 -n | no | no | 491 -o outfile | no | no | 492 -p num | yes | yes | 493 -r rejectfile | no | no | 494 -u | no | no | 495patch Busybox specific options: None 496 497printf POSIX options: None 498printf Busybox specific options: None 499 500ps POSIX options 501 option | exists | compliant | remarks 502 -A | no | no | 503 -G grouplist | no | no | 504 -U userlist | no | no | 505 -a | no | no | 506 -d | no | no | 507 -e | no | no | 508 -f | no | no | 509 -g grouplist | no | no | 510 -l | no | no | 511 -n namelist | no | no | 512 -o format | yes | no | not supported: ruser, group, rgroup, pcpu 513 -p proclist | no | no | 514 -t termlist | no | no | 515 -u userlist | no | no | 516ps Busybox specific options: None 517 518pwd POSIX options 519 option | exists | compliant | remarks 520 -L | no | no | 521 -P | no | no | 522pwd Busybox specific options: None 523 524renice POSIX options 525 option | exists | compliant | remarks 526 -g | yes | yes | 527 -n increment | yes | yes | Note POSIX allows only to run with this option (busybox also allows to run without '-n' and set niceness directly) 528 -p | yes | yes | 529 -u | yes | yes | 530renice Busybox specific options: None 531 532rm POSIX options 533 option | exists | compliant | remarks 534 -R | yes | yes | 535 -f | yes | yes | 536 -i | yes | yes | 537 -r | yes | yes | 538rm Busybox specific options: None 539 540rmdir POSIX options 541 option | exists | compliant | remarks 542 -p | yes | yes | 543rmdir Busybox specific options: 544 --parents 545 546sed POSIX options 547 option | exists | compliant | remarks 548 -e script | yes | | 549 -f script_file | yes | | 550 -n | yes | | 551sed Busybox specific options: 552 -i, -r 553 554sh POSIX options 555 option | exists | compliant | remarks 556 -c | no | no | 557 -i | no | no | 558 -s | no | no | 559sh Busybox specific options: None 560 561sleep POSIX options: None 562sleep Busybox specific options: None 563 564sort POSIX options 565 option | exists | compliant | remarks 566 -C | no | no | 567 -b | yes | yes | 568 -c | yes | yes | 569 -d | yes | yes | 570 -f | yes | yes | 571 -i | yes | yes | But is not like GNU sort, which isn't! (try to sort 'a\nA\nB\nb' with and without -f) 572 -k keydef | yes | | 573 -m | no | no | 574 -n | yes | yes | 575 -o output | yes | yes | 576 -r | yes | yes | 577 -t char | yes | | 578 -u | yes | yes | 579sort Busybox specific options: 580 -mST, -g, -M, -s, -z 581 582split POSIX options 583 option | exists | compliant | remarks 584 -a suffix_length | yes | yes | 585 -b n | yes | yes | 586 -b nk | yes | yes | 587 -b nm | yes | yes | 588 -l line_count | yes | yes | 589split Busybox specific options: None 590 591strings POSIX options 592 option | exists | compliant | remarks 593 -a | yes | yes | 594 -n number | yes | yes | 595 -t format | no | no | 596strings Busybox specific options: 597 -o, -f 598 599stty POSIX options 600 option | exists | compliant | remarks 601 -a | yes | yes | 602 -g | yes | yes | 603stty Busybox specific options: 604 -F DEVICE 605 606tail POSIX options 607 option | exists | compliant | remarks 608 -c number | yes | yes | 609 -f | yes | yes | 610 -n number | yes | yes | 611tail Busybox specific options: 612 -v, -q, -s SEC 613 614tee POSIX options 615 option | exists | compliant | remarks 616 -a | yes | yes | 617 -i | yes | yes | 618tee Busybox specific options: None 619 620test POSIX options: None 621test Busybox specific options: None 622 623time POSIX options 624 option | exists | compliant | remarks 625 -p | no | no | 626time Busybox specific options: 627 -v 628 629touch POSIX options 630 option | exists | compliant | remarks 631 -a | no | no | 632 -c | yes | yes | 633 -d date_time | no | no | 634 -m | no | no | 635 -r ref_file | no | no | 636 -t time | no | no | 637touch Busybox specific options: None 638 639tr POSIX options 640 option | exists | compliant | remarks 641 -C | no | no | 642 -c | yes | yes | 643 -d | yes | yes | 644 -s | yes | yes | 645tr Busybox specific options: None 646 647true POSIX options: None 648true Busybox specific options: None 649 650tty POSIX options: None 651tty Busybox specific options: 652 -s 653 654uname POSIX options 655 option | exists | compliant | remarks 656 -a | yes | yes | 657 -m | yes | yes | 658 -n | yes | yes | 659 -r | yes | yes | 660 -s | yes | yes | 661 -v | yes | yes | 662uname Busybox specific options: 663 -p 664 665uncompress POSIX options 666 option | exists | compliant | remarks 667 -c | yes | yes | 668 -f | yes | yes | 669 -v | no | no | 670uncompress Busybox specific options: None 671 672unexpand POSIX options 673 option | exists | compliant | remarks 674 -a | yes | no | POSIX requires converting two or more spaces to tabs, busybox converts one or more spaces 675 -t tablist | yes | yes | 676unexpand Busybox specific options: 677 --tabs=N, -f, --first-only, --all 678 679uniq POSIX options 680 option | exists | compliant | remarks 681 -c | yes | yes | 682 -d | yes | yes | 683 -f fields | yes | yes | 684 -s chars | yes | yes | 685 -u | yes | yes | 686uniq Busybox specific options: 687 -w N 688 689uudecode POSIX options 690 option | exists | compliant | remarks 691 -o outfile | no | no | 692uudecode Busybox specific options: None 693 694uuencode POSIX options 695 option | exists | compliant | remarks 696 -m | yes | yes | 697uuencode Busybox specific options: None 698 699vi POSIX options 700 option | exists | compliant | remarks 701 -R | yes | | 702 -c command | yes | | 703 -r | no | no | 704 -t tagstring | no | no | 705 -w size | no | no | 706vi Busybox specific options: 707 -H 708 709wc POSIX options 710 option | exists | compliant | remarks 711 -c | yes | yes | 712 -l | yes | yes | 713 -m | no | no | 714 -w | yes | yes | 715wc Busybox specific options: 716 -L 717 718who POSIX options 719 option | exists | compliant | remarks 720 -H | no | no | 721 -T | no | no | 722 -a | yes | no | just shows all 723 -b | no | no | 724 -d | no | no | 725 -l | no | no | 726 -m | no | no | 727 -p | no | no | 728 -q | no | no | 729 -r | no | no | 730 -s | no | no | 731 -t | no | no | 732 -u | no | no | 733who Busybox specific options: None 734 735xargs POSIX options 736 option | exists | compliant | remarks 737 -E eofstr | no | no | 738 -I replstr | no | no | 739 -L number | no | no | 740 -n number | yes | yes | 741 -p | yes | yes | 742 -s size | yes | yes | 743 -t | yes | yes | 744 -x | yes | yes | 745xargs Busybox specific options: 746 -e[STR], -0, -r 747 748zcat POSIX options: None 749zcat Busybox specific options: None 750