Jeśli komunikat o użyciu wydrukowany jest np
command -?
polecenia uniksowego przejdź do stderr lub stdout i dlaczego? Czy powinien on trafić w to samo miejsce, jeśli użytkownik pomyli się z opcją?
Jeśli komunikat o użyciu wydrukowany jest np
command -?
polecenia uniksowego przejdź do stderr lub stdout i dlaczego? Czy powinien on trafić w to samo miejsce, jeśli użytkownik pomyli się z opcją?
touch -- -l; ls -?
- faktycznie dostajesz długą listę, jakbyś przeszedł-l
do ls.-h
opcję inną niż komunikat pomocy, to'-?'
(z cudzysłowami) lub-:
daj dobrą szansę na otrzymanie komunikatu o błędzie (i użyciu), ponieważ:
i?
nie mogą być poprawnymi opcjami do niczegogetopt(3)
.Odpowiedzi:
Powinien przejść na standardowe wyjście, więc możesz wpisać:
Jest to również zalecane przez normy kodowania Gnu na
--help
.Z drugiej strony komunikat o użytkowaniu, który otrzymujesz, gdy użyjesz niepoprawnej opcji lub pominiesz wymagany argument, powinien przejść do stderr, ponieważ jest to komunikat o błędzie i nie chcesz, aby był podawany do następnego polecenia w potoku.
Podczas
--help
używania komunikat o użyciu jest normalnym i oczekiwanym wynikiem działania polecenia. Dlatego przechodzi do standardowego wyjścia, więc można go potokować do innego polecenia, takiego jakless
lubgrep
.Kiedy mówisz
command --bogus-option | other-command
, nie chcesz, aby komunikat o użyciu został ustawiony na standardowe wyjście, ponieważ jest to nieoczekiwane wyjście, którego nie powinien przetwarzaćother-command
. Ponadto, jeśli wyjście--help
zawiera więcej niż garść wierszy, komunikat o błędzie użytkowania powinien zawierać tylko podsumowanie--help
wyniku i skierować użytkownika do--help
dodatkowych szczegółów.źródło
--help
jest większy niż kilka wierszy, komunikat o użyciu wygenerowany przez niepoprawną opcję powinien być tylko krótkim podsumowaniem z informacją, że należy użyć,--help
aby zobaczyć pełne informacje.