A página de manual responde à sua pergunta:
Options of different types may be freely mixed, but conflicts can appear. There are some synonymous options, which are functionally identical, due to the many standards and
ps
implementations that thisps
is compatible with.Note that
ps -aux
is distinct fromps aux
. The POSIX and UNIX standards require thatps -aux
print all processes owned by a user named "x", as well as printing all processes that would be selected by the-a
option. If the user named "x" does not exist, this ps may interpret the command asps aux
instead and print a warning. This behavior is intended to aid in transitioning old scripts and habits. It is fragile, subject to change, and thus should not be relied upon.
As bandeiras são diferentes, mas podem ser combinadas. Normalmente você escolhe um, por exemplo, ps aux
ou ps -ef
para ver detalhes de todos os processos, não uma mistura.
O único x
flag é o BSD, então ps x
e ps -x
produzem o mesmo resultado; mas isso não funciona para sinalizadores definidos em ambas as variantes.
Tudo isso é específico para procps
e procps-ng
. A equivalência de ps x
e ps -x
é o resultado de um estágio de análise de "segunda chance" que é chamado se uma primeira passagem não analisar completamente todos os argumentos; isso não está documentado na manpage, mas é mencionado em o arquivo HACKING
no código-fonte :
Unless the personality forces BSD parsing, parser.c tries to parse the command line as a mixed BSD+SysV+Gnu mess. On failure, BSD parsing is attempted. If BSD parsing fails after SysV parsing has been attempted, the error message comes from the original SysV parse.