Przejdź do głównej zawartości

echo


  • echo – prosta, wbudowana w większość powłok Unix/Linux komenda służąca do wyświetlania ciągów znaków, wartości zmiennych i wyników ekspresji na stdout.
  • Powszechnie stosowana w skryptach do komunikatów, budowania plików konfiguracyjnych, debugowania oraz przekazywania danych do innych narzędzi poprzez potok (|).
  • Dostępna jako builtin w sh, bash, zsh, ksh, a także jako zewnętrzne /bin/echo z pakietu coreutils; implementacje różnią się obsługą opcji.

Okno terminala
echo [opcje] [argumenty ...]
  • Każdy argument oddzielony spacją jest wypisywany w kolejności z pojedynczą spacją pomiędzy, a domyślnie zakończony znakiem nowej linii (\n).
  • W powłokach POSIX echo jest special builtin i dziedziczy zmienną IFS (separator arg.).

ParametrOpis
-nNie dodaje końcowego znaku nowej linii.
-eInterpretuje sekwencje escape (np. \n, \t, \033).
-EWyłącza interpretację sekwencji escape (domyślne w Bash).
--helpWyświetla pomoc (dotyczy /bin/echo).
--versionWersja programu (dotyczy /bin/echo).

POSIX: Opcje inne niż -n są nieokreślone; w skryptach przenośnych zaleca się użycie printf.


Okno terminala
# 1. Prosty komunikat z nową linią
echo "Hello, world!"
# 2. Wypisanie bez końcowego \n (np. dla progresu)
echo -n "Przetwarzam..."
# 3. Kolorowanie tekstu z sekwencją ANSI (wymaga -e)
echo -e "\e[32mOK\e[0m"
# 4. Zapisywanie wielowierszowego tekstu do pliku
echo -e "Linia 1\nLinia 2" > output.txt

  • Builtin vs /bin/echo: Powłoka preferuje builtin; aby wymusić wersję z coreutils użyj pełnej ścieżki (/bin/echo).
  • Sekwencje escape: Flaga -e w Bash/Zsh umożliwia \n, \t, \xHH, \0NNN; w POSIX nie gwarantowane – rozważ printf.
  • Portability: Dla skryptów wieloplatformowych używaj printf zamiast echo -e oraz unikaj echo -n gdy wynik może zawierać -n.
  • Zmienne i parametry: echo "$HOME" wypisuje ścieżkę domową; cytowanie zapobiega podziałowi na słowa przez IFS.
  • Zero‑byte: Nie ma opcji zakończenia NUL (\0); do komunikacji z xargs -0 użyj printf '%s\0'.

Błąd / Zaskakujące zachowaniePrzyczynaRozwiązanie
-e ignorowane w niektórych powłokachPOSIX echo nie definiuje -eUżyj printf, np. printf '\t%s\n' "Tekst".
Brak nowej linii mimo braku -nArgument zaczyna się od -n i jest traktowany jako opcjaDodaj --, np. echo -- -n plik.
Tekst \t wyświetlany dosłownieBrak -e lub niekompatybilna implementacjaDodaj -e lub zamień na printf.