在其它系統,像DOS上面,一個命令的參數順序可能不重要,但是在FreeBSD中,很多命令都要求參數的順序,順序錯了,命令可能就會執行出錯。
Man一下tcpdump:
tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ]
[ -C file_size ] [ -F file ]
[ -i interface ] [ -m module ] [ -M secret ]
[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ]
[ -E spi@ipaddr algo:secret,... ]
[ -y datalinktype ] [ -Z user ]
[ -y datalinktype ]
[ expression ]
發現選項-w file應該在expression之前。如果把-w file放在後面,則執行就會出錯。
同樣還有ssh和scp。
ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
[-D port] [-e escape_char] [-F configfile] [-i identity_file] [-L
port:host:hostport] [-l login_name] [-m mac_spec] [-o option]
[-p port] [-R port:host:hostport] [-S ctl] [user@]hostname [command]
如果把-P 等參數放在hostname後面,命令同樣執行出錯。
其實,最簡單的ls命令也要求順序。不信就輸入個命令:ls -A a* 和ls a* -A 試試,後面命令肯定會報錯。
對系統內部工作機制不是很了解,所以具體是不是一定有順序,還不敢下斷論。
但是一般的規律,好象應該符合對命令解釋的一般規則:“[]”內的不用考慮順序,“[]”間要考慮順序。