Przejdź do głównej zawartości

true

  • true – prosta komenda zwracająca zawsze powodzenie (kod wyjścia 0) i nie zapisująca nic na standardowe wyjście.
  • Stosowana w warunkach (if, until), pętlach (while), potokach oraz do neutralizowania błędów (|| true) w skryptach CI.
  • Dostępna w większości dystrybucji Linuksa jako część GNU coreutils; wiele powłok (bash, dash, busybox sh) oferuje także wbudowaną wersję true. Istnieje również odpowiednik w postaci wbudowanej komendy powłoki : (dwukropek).

Okno terminala
true [ARG...]
  • Argumenty (jeśli podane) są ignorowane.
  • Wspólne przełączniki globalne (GNU): --help, --version.

ParametrOpis
ARG...Dowolne argumenty, które są ignorowane — zachowanie pozostaje takie samo (zwraca 0, brak wyjścia).
--helpKrótka pomoc.
--versionInformacja o wersji (GNU coreutils).

Okno terminala
# 1) Pętla nieskończona (idiomatycznie używa się też wbudowanego ':')
while true; do
echo "Działa..."
sleep 1
done

Efekt: pętla wykonuje się bez końca, co sekundę wypisując komunikat.

Okno terminala
# 2) Ignorowanie błędu komendy (np. w CI)
make test || true

Efekt: nawet gdy make test zwróci błąd, skrypt zakończy się sukcesem (kod 0) i wykona kolejne kroki.

Okno terminala
# 3) Warunek zawsze spełniony
if true; then
echo "OK"
fi

Efekt: wypisze OK, ponieważ warunek zawsze jest prawdziwy.

Okno terminala
# 4) Zabezpieczenie potoku (uwaga na pipefail)
zapytanie | przetwarzanie || true

Efekt: bez set -o pipefail ewentualne błędy wcześniejszych poleceń w potoku mogą zostać „zamaskowane” przez true.


  • Wydajność: gdy zależy Ci na minimalnym koszcie wywołania w pętli, użyj wbudowanego dwukropka : zamiast zewnętrznego programu true (brak uruchamiania nowego procesu).
  • POSIX: true nie definiuje opcji ani operandów — wszystko jest ignorowane; gwarantuje tylko kod 0 i brak wyjścia.
  • Powłoka vs zewnętrzny program: type -a true pokaże, czy Twoja powłoka ma wbudowane true. W skryptach nie jest wymagane pełne /bin/true.
  • Pipefail: umieszczanie ... | true na końcu potoku może ukryć błędy wcześniejszych komend. Włącz set -o pipefail, jeśli chcesz, by niezerowe kody z wcześniejszych etapów nie zostały zignorowane.
  • Para do testów: komenda odwrotna to false (zwraca kod 1).

Błąd / KomunikatPrzyczynaRozwiązanie
Oczekiwano wyjścia na ekranie, a nic się nie pojawiatrue nic nie wypisuje – to normalneUżyj w if/pętli lub sprawdź kod wyjścia: echo $? po uruchomieniu.
Błędy w potokach „znikają”true na końcu potoku sprawia, że status całego potoku bywa 0Włącz set -o pipefail lub nie używaj true na końcu potoku, jeżeli chcesz propagować błędy.
Skrypt działa wolno w pętliWielokrotne uruchamianie zewnętrznego /bin/trueZastąp true wbudowanym : albo upewnij się, że używasz wbudowanej wersji powłoki.
command not found: true w bardzo minimalnym środowiskuBrak /bin/true i brak wbudowanej komendy w danej powłoceUżyj : (wbudowane w POSIX sh) lub zainstaluj pakiet coreutils/busybox.