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