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 oflag=seek_bytes| yes | | 186 187df POSIX options 188 option | exists | compliant | remarks 189 -P | yes | yes | 190 -k | yes | yes | 191 -t | no | no | 192df Busybox specific options: 193 -a, -m, -B SIZE, -i, -h 194Remark: 195- It seems that GNU df does not round percents up in its output (thus its results are a bit different) 196 197diff POSIX options 198 option | exists | compliant | remarks 199 -C n | no | no | 200 -U n | yes | | 201 -b | yes | | 202 -c | no | no | 203 -e | no | no | 204 -f | no | no | 205 -r | yes | | 206 -u | no | no | 207diff Busybox specific options: 208 -d, -a, -s, -t, -L, -N, -i, -T, -w, -q, -S 209 210dirname POSIX options: None 211dirname Busybox specific options: None 212 213du POSIX options 214 option | exists | compliant | remarks 215 -H | yes | | 216 -L | yes | | 217 -a | yes | | 218 -k | yes | | 219 -s | yes | | 220 -x | yes | | 221du Busybox specific options: 222 -c, -m, -h, -d N, -l 223 224 225echo POSIX options: None 226 option | exists | compliant | remarks 227 -n | yes | yes | The result of -n is "implementation-defined" 228echo Busybox specific options: 229 -e, -E 230 231ed POSIX options 232 option | exists | compliant | remarks 233 -p string | no | no | 234 -s | no | no | 235ed Busybox specific options: None 236 237env POSIX options 238 option | exists | compliant | remarks 239 -i | no | no | 240env Busybox specific options: 241 -u, -, -i 242 243expand POSIX options 244 option | exists | compliant | remarks 245 -t tablist | yes | yes | 246expand Busybox specific options: 247 --tabs=N, -i, --initial 248 249expr POSIX operations: 250 option | exists | compliant | remarks 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 : | yes | yes | 265 (expr) | yes | yes | 266 integer | yes | yes | 267 string | yes | yes | 268expr Busybox specific operations: 269 match, substr, index, length, quote 270 271false POSIX options: None 272false Busybox specific options: None 273 274find POSIX options 275 option | exists | compliant | remarks 276 -H | no | no | 277 -L | no | no | 278find Busybox specific options: 279 -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] 280 281fold POSIX options 282 option | exists | compliant | remarks 283 -b | yes | yes | 284 -s | yes | yes | 285 -w width | yes | yes | 286fold Busybox specific options: None 287 288fuser POSIX options 289 option | exists | compliant | remarks 290 -c | no | no | 291 -f | no | no | 292 -u | no | no | 293fuser Busybox specific options: 294 -m, -k, -4, -SIGNAL, -6, -s 295 296grep POSIX options 297 option | exists | compliant | remarks 298 -E | yes | | 299 -F | yes | | 300 -c | yes | | 301 -e pattern_list | yes | | 302 -f pattern_file | yes | | 303 -i | yes | | 304 -l | yes | | 305 -n | yes | | 306 -q | yes | | 307 -s | yes | | 308 -v | yes | | 309 -x | no | no | 310grep Busybox specific options: 311 -A, -C, -B, -L, -H, -o, -h, -w, -r, -z, -m MAX 312 313head POSIX options 314 option | exists | compliant | remarks 315 -n number | yes | yes | 316head Busybox specific options: 317 -v, -c NUM, -q 318 319id POSIX options 320 option | exists | compliant | remarks 321 -G | yes | yes | 322 -g | yes | yes | 323 -n | yes | yes | 324 -r | yes | yes | 325 -u | yes | yes | 326id Busybox specific options: 327 -Z 328 329ipcrm POSIX options 330 option | exists | compliant | remarks 331 -M shmkey | no | no | 332 -Q msgkey | no | no | 333 -S semkey | no | no | 334 -m shmid | no | no | 335 -q msgid | no | no | 336 -s semid | no | no | 337ipcrm Busybox specific options: 338 -mM, -qQ, -sS 339 340ipcs POSIX options 341 option | exists | compliant | remarks 342 -a | yes | | 343 -b | no | no | 344 -c | yes | | 345 -m | yes | | 346 -o | no | no | 347 -p | yes | | 348 -q | yes | | 349 -s | yes | | 350 -t | yes | | 351ipcs Busybox specific options: 352 -l, -i, -u 353 354kill POSIX options 355 option | exists | compliant | remarks 356 -l | yes | yes | 357 -s signal_name | yes | yes | 358 -signal_name | yes | yes | 359 -signal_number | yes | yes | 360kill Busybox specific options: 361 -q, -o 362 363ln POSIX options 364 option | exists | compliant | remarks 365 -L | no | no | 366 -P | no | no | 367 -f | yes | yes | 368 -s | yes | yes | 369ln Busybox specific options: 370 -S suf, -n, -b 371 372logger POSIX options: None 373logger Busybox specific options: 374 -p PRIO, -t TAG, -s 375 376logname POSIX options: None 377logname Busybox specific options: None 378 379ls POSIX options 380 option | exists | compliant | remarks 381 -1 | yes | yes | 382 -A | yes | yes | 383 -C | yes | yes | 384 -F | yes | yes | And more: '=' for sockets (not defined by POSIX) 385 -H | no | no | 386 -L | yes | yes | But coloring may be wrong (at least POSIX does not require correct colors :) ) 387 -R | yes | yes | 388 -S | yes | yes | 389 -a | yes | yes | 390 -c | yes | no | Sorts output with '-l' (should only show ctime with '-l', and sort only with '-t') 391 -d | yes | no | When invoked together with '-L' should read symbolic links, and doesn't 392 -f | no | no | 393 -g | no | no | 394 -i | yes | yes | 395 -k | yes | no | Does something completely unrelated! (Lists security context instead of specifying block size) 396 -l | yes | yes | 397 -m | no | no | 398 -n | yes | no | Works correctly only together with '-l' (but POSIX requires '-l' to be implicitly assumed) 399 -o | no | no | 400 -p | yes | yes | 401 -q | no | no | 402 -r | yes | yes | 403 -s | yes | yes | 404 -t | yes | yes | 405 -u | yes | yes | 406 -x | yes | yes | 407ls Busybox specific options: 408 --color, -T NUM, -K, -X, -Z, -e, -h, -v, -w NUM 409 410man POSIX options 411 option | exists | compliant | remarks 412 -k | no | no | 413man Busybox specific options: 414 -a Display all pages 415 416 417mesg POSIX options: None 418mesg Busybox specific options: None 419 420mkdir POSIX options 421 option | exists | compliant | remarks 422 -m mode | yes | yes | 423 -p | yes | yes | 424mkdir Busybox specific options: 425 -Z 426 427mkfifo POSIX options 428 option | exists | compliant | remarks 429 -m mode | yes | yes | 430mkfifo Busybox specific options: 431 -Z 432 433more POSIX options 434 option | exists | compliant | remarks 435 -c | no | no | 436 -e | no | no | 437 -i | no | no | 438 -n number | no | no | 439 -p command | no | no | 440 -s | no | no | 441 -t tagstring | no | no | 442 -u | no | no | 443more Busybox specific options: None 444 445mv POSIX options 446 option | exists | compliant | remarks 447 -f | yes | yes | 448 -i | yes | yes | 449mv Busybox specific options: None 450 451nice POSIX options 452 option | exists | compliant | remarks 453 -n increment | yes | yes | 454nice Busybox specific options: None 455 456nohup POSIX options: None 457nohup Busybox specific options: None 458 459od POSIX options 460 option | exists | compliant | remarks 461 -A address_base | no | no | 462 -N count | no | no | 463 -b | no | no | 464 -c | no | no | 465 -d | no | no | 466 -j skip | no | no | 467 -o | no | no | 468 -s | no | no | 469 -t type_string | no | no | 470 -v | no | no | 471 -x | no | no | 472od Busybox specific options: None 473 474paste POSIX options 475 option | exists | compliant | remarks 476 -d list | yes | yes | 477 -s | yes | yes | 478paste Busybox specific options: None 479 480patch POSIX options 481 option | exists | compliant | remarks 482 -D define | no | no | 483 -N | no | no | 484 -R | yes | yes | 485 -b | no | no | 486 -c | no | no | 487 -d dir | no | no | 488 -e | no | no | 489 -i patchfile | yes | yes | 490 -l | no | no | 491 -n | no | no | 492 -o outfile | no | no | 493 -p num | yes | yes | 494 -r rejectfile | no | no | 495 -u | no | no | 496patch Busybox specific options: None 497 498printf POSIX options: None 499printf Busybox specific options: None 500 501ps POSIX options 502 option | exists | compliant | remarks 503 -A | no | no | 504 -G grouplist | no | no | 505 -U userlist | no | no | 506 -a | no | no | 507 -d | no | no | 508 -e | no | no | 509 -f | no | no | 510 -g grouplist | no | no | 511 -l | no | no | 512 -n namelist | no | no | 513 -o format | yes | no | not supported: ruser, group, rgroup, pcpu 514 -p proclist | no | no | 515 -t termlist | no | no | 516 -u userlist | no | no | 517ps Busybox specific options: None 518 519pwd POSIX options 520 option | exists | compliant | remarks 521 -L | no | no | 522 -P | no | no | 523pwd Busybox specific options: None 524 525renice POSIX options 526 option | exists | compliant | remarks 527 -g | yes | yes | 528 -n increment | yes | yes | Note POSIX allows only to run with this option (busybox also allows to run without '-n' and set niceness directly) 529 -p | yes | yes | 530 -u | yes | yes | 531renice Busybox specific options: None 532 533rm POSIX options 534 option | exists | compliant | remarks 535 -R | yes | yes | 536 -f | yes | yes | 537 -i | yes | yes | 538 -r | yes | yes | 539rm Busybox specific options: None 540 541rmdir POSIX options 542 option | exists | compliant | remarks 543 -p | yes | yes | 544rmdir Busybox specific options: 545 --parents 546 547sed POSIX options 548 option | exists | compliant | remarks 549 -e script | yes | | 550 -f script_file | yes | | 551 -n | yes | | 552sed Busybox specific options: 553 -i, -r 554 555sh POSIX options 556 option | exists | compliant | remarks 557 -c | no | no | 558 -i | no | no | 559 -s | no | no | 560sh Busybox specific options: None 561 562sleep POSIX options: None 563sleep Busybox specific options: None 564 565sort POSIX options 566 option | exists | compliant | remarks 567 -C | no | no | 568 -b | yes | yes | 569 -c | yes | yes | 570 -d | yes | yes | 571 -f | yes | yes | 572 -i | yes | yes | But is not like GNU sort, which isn't! (try to sort 'a\nA\nB\nb' with and without -f) 573 -k keydef | yes | | 574 -m | no | no | 575 -n | yes | yes | 576 -o output | yes | yes | 577 -r | yes | yes | 578 -t char | yes | | 579 -u | yes | yes | 580sort Busybox specific options: 581 -mST, -g, -M, -s, -z 582 583split POSIX options 584 option | exists | compliant | remarks 585 -a suffix_length | yes | yes | 586 -b n | yes | yes | 587 -b nk | yes | yes | 588 -b nm | yes | yes | 589 -l line_count | yes | yes | 590split Busybox specific options: None 591 592strings POSIX options 593 option | exists | compliant | remarks 594 -a | yes | yes | 595 -n number | yes | yes | 596 -t format | no | no | 597strings Busybox specific options: 598 -o, -f 599 600stty POSIX options 601 option | exists | compliant | remarks 602 -a | yes | yes | 603 -g | yes | yes | 604stty Busybox specific options: 605 -F DEVICE 606 607tail POSIX options 608 option | exists | compliant | remarks 609 -c number | yes | yes | 610 -f | yes | yes | 611 -n number | yes | yes | 612tail Busybox specific options: 613 -v, -q, -s SEC 614 615tee POSIX options 616 option | exists | compliant | remarks 617 -a | yes | yes | 618 -i | yes | yes | 619tee Busybox specific options: None 620 621test POSIX options: None 622test Busybox specific options: None 623 624time POSIX options 625 option | exists | compliant | remarks 626 -p | no | no | 627time Busybox specific options: 628 -v 629 630touch POSIX options 631 option | exists | compliant | remarks 632 -a | no | no | 633 -c | yes | yes | 634 -d date_time | no | no | 635 -m | no | no | 636 -r ref_file | no | no | 637 -t time | no | no | 638touch Busybox specific options: None 639 640tr POSIX options 641 option | exists | compliant | remarks 642 -C | no | no | 643 -c | yes | yes | 644 -d | yes | yes | 645 -s | yes | yes | 646tr Busybox specific options: None 647 648true POSIX options: None 649true Busybox specific options: None 650 651tty POSIX options: None 652tty Busybox specific options: 653 -s 654 655uname POSIX options 656 option | exists | compliant | remarks 657 -a | yes | yes | 658 -m | yes | yes | 659 -n | yes | yes | 660 -r | yes | yes | 661 -s | yes | yes | 662 -v | yes | yes | 663uname Busybox specific options: 664 -p 665 666uncompress POSIX options 667 option | exists | compliant | remarks 668 -c | yes | yes | 669 -f | yes | yes | 670 -v | no | no | 671uncompress Busybox specific options: None 672 673unexpand POSIX options 674 option | exists | compliant | remarks 675 -a | yes | no | POSIX requires converting two or more spaces to tabs, busybox converts one or more spaces 676 -t tablist | yes | yes | 677unexpand Busybox specific options: 678 --tabs=N, -f, --first-only, --all 679 680uniq POSIX options 681 option | exists | compliant | remarks 682 -c | yes | yes | 683 -d | yes | yes | 684 -f fields | yes | yes | 685 -s chars | yes | yes | 686 -u | yes | yes | 687uniq Busybox specific options: 688 -w N 689 690uudecode POSIX options 691 option | exists | compliant | remarks 692 -o outfile | no | no | 693uudecode Busybox specific options: None 694 695uuencode POSIX options 696 option | exists | compliant | remarks 697 -m | yes | yes | 698uuencode Busybox specific options: None 699 700vi POSIX options 701 option | exists | compliant | remarks 702 -R | yes | | 703 -c command | yes | | 704 -r | no | no | 705 -t tagstring | no | no | 706 -w size | no | no | 707vi Busybox specific options: 708 -H 709 710wc POSIX options 711 option | exists | compliant | remarks 712 -c | yes | yes | 713 -l | yes | yes | 714 -m | no | no | 715 -w | yes | yes | 716wc Busybox specific options: 717 -L 718 719who POSIX options 720 option | exists | compliant | remarks 721 -H | no | no | 722 -T | no | no | 723 -a | yes | no | just shows all 724 -b | no | no | 725 -d | no | no | 726 -l | no | no | 727 -m | no | no | 728 -p | no | no | 729 -q | no | no | 730 -r | no | no | 731 -s | no | no | 732 -t | no | no | 733 -u | no | no | 734who Busybox specific options: None 735 736xargs POSIX options 737 option | exists | compliant | remarks 738 -E eofstr | no | no | 739 -I replstr | no | no | 740 -L number | no | no | 741 -n number | yes | yes | 742 -p | yes | yes | 743 -s size | yes | yes | 744 -t | yes | yes | 745 -x | yes | yes | 746xargs Busybox specific options: 747 -e[STR], -0, -r 748 749zcat POSIX options: None 750zcat Busybox specific options: None 751