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.
Składnia
Dział zatytułowany „Składnia”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.).
Parametry
Dział zatytułowany „Parametry”Parametr | Opis |
---|---|
-n | Nie dodaje końcowego znaku nowej linii. |
-e | Interpretuje sekwencje escape (np. \n , \t , \033 ). |
-E | Wyłącza interpretację sekwencji escape (domyślne w Bash). |
--help | Wyświetla pomoc (dotyczy /bin/echo ). |
--version | Wersja programu (dotyczy /bin/echo ). |
POSIX: Opcje inne niż
-n
są nieokreślone; w skryptach przenośnych zaleca się użycieprintf
.
Przykłady użycia
Dział zatytułowany „Przykłady użycia”# 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 plikuecho -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
zamiastecho -e
oraz unikajecho -n
gdy wynik może zawierać-n
. - Zmienne i parametry:
echo "$HOME"
wypisuje ścieżkę domową; cytowanie zapobiega podziałowi na słowa przezIFS
. - Zero‑byte: Nie ma opcji zakończenia NUL (
\0
); do komunikacji zxargs -0
użyjprintf '%s\0'
.
Najczęściej spotykane błędy i jak je naprawić
Dział zatytułowany „Najczęściej spotykane błędy i jak je naprawić”Błąd / Zaskakujące zachowanie | Przyczyna | Rozwiązanie |
---|---|---|
-e ignorowane w niektórych powłokach | POSIX echo nie definiuje -e | Użyj printf , np. printf '\t%s\n' "Tekst" . |
Brak nowej linii mimo braku -n | Argument zaczyna się od -n i jest traktowany jako opcja | Dodaj -- , np. echo -- -n plik . |
Tekst \t wyświetlany dosłownie | Brak -e lub niekompatybilna implementacja | Dodaj -e lub zamień na printf . |
Linki i źródła
Dział zatytułowany „Linki i źródła”- Bash Reference Manual – echo – zachowanie w Bash.
- POSIX specification – echo – standard POSIX.
- GNU coreutils – echo – dokumentacja
/bin/echo
.