Echo (lệnh)

trong Unix
| author = Douglas McIlroy(AT&T Bell Laboratories)
| developer = Nhiều nhà phát triển mã nguồn mở và thương mại
| released =
| latest release version =
| latest release date =
| operating system = Multics, Unix, Unix-like, V, Plan 9, Inferno, FLEX, TRIPOS, Z80-RIO, OS-9, DOS, MSX-DOS, Panos, FlexOS, SISNE plus, OS/2, Windows, ReactOS, MPE/iX, KolibriOS, SymbOS
| platform = Đa nền tảng
| genre = Lệnh
| license =
| website =
}}
Trong điện toán, echo là một lệnh cho ra xâu được nhập vào. Đây là một lệnh có sẵn trong nhiều shell hệ điều hành và thường được dùng trong tập lệnh shell và file batch để in văn bản ra màn hình hoặc một tập tin, hoặc là một phần trong pipeline.

Triển khai
Dòng lệnh có trong các hệ điều hành Multics, FLEX của TSC, TRIPOS của MetaComCo, Z80-RIO của Zilog, OS-9 của Microware, DOS, Panos củaAcorn Computers, Digital Research FlexOS, OS/2 của IBM, Microsoft Windows, ReactOS, MPE/iX của HP, KolibriOS, SymbOS, Unix và các hệ điều hành tương tự Unix.

Nhiều shell, bao gồm các shell giống Bourne (như là bash hay zsh) và các shell giống Csh cũng như COMMAND.COM và cmd.exe đều có echo là lệnh có sẵn.

Dòng lệnh cũng có mặt trong shell EFI.

Lịch sử
echo có nguồn gốc từ Multics. Sau khi nó được viết bằng C bởi Doug McIlroy làm "bài tập luyện phím" và cho thấy công dụng, nó trở thành một phần của Version 2 Unix. echo -n được dùng trong Version 7 thay cho prompt, (hoạt động giống echo nhưng không kết thúc đầu ra bằng ký tự dòng mới).

Trên PWB/UNIX và sau này là Unix System III, echo bắt đầu mở rộng những chuỗi escape C như \n với một điểm khác biệt: các chuỗi escape bát phân được viết dưới dạng \0ooo thay vì \ooo trong C.

echo trong Research Unix chỉ mở rộng escape khi có flag -e, và hành vi đó được sao chép bởi một số triển khai khác như lệnh echo builtin của Bash hay zsh và GNU echo.

Trên MS-DOS, dòng lệnh có sẵn từ phiên bản 2 trở về sau.

Hiện nay, một số triển khai echo không tương thích tồn tại trong các hệ điều hành khác nhau, thậm chí trong cùng một hệ điều hành; một số mặc định mở rộng chuỗi escape, một số không, một số nhận lựa chọn, một số không.

Tiêu chuẩn POSIX quy định echo có hành vi không xác định nếu argument đầu tiên là -n hoặc bất kỳ argument nào chứa ký tự backslash trong khi tiêu chuẩn Unix yêu cầu mở rộng (một số) chuỗi escape và không cho phép xử lý lựa chọn. Trong thực tế, nhiều triển khai echo không tuân thủ tiêu chuẩn trong môi trường mặc định của chúng.

Vì những hành vi khác nhau này, echo được coi là lệnh bất khả chuyển trong các hệ thống giống Unix và lệnh printf (nếu có, xuất hiện trong Unix 9) là lựa chọn được khuyên dùng.

Ví dụ

C:\>echo Xin chào
Xin chào

Sử dụng mã escape ANSI chuỗi SGR, các terminal tương thích có thể in chữ có màu. Ví dụ, một triển khai kiểu UNIX System III:

BGRED=`echo "\033[41m"`
FGBLUE=`echo "\033[35m"`
BGGREEN=`echo "\033[42m"`

NORMAL=`echo "\033[m"`

Hoặc trong Unix Version 8:

BGRED=`echo -e "\033[41m"`
FGBLUE=`echo -e "\033[35m"`
BGGREEN=`echo -e "\033[42m"`

NORMAL=`echo -e "\033[m"`

sau đó

echo "${FGBLUE} Text in blue ${NORMAL}"
echo "Text normal"
echo "${BGRED} Background in red"
echo "${BGGREEN} Background in Green and back to Normal ${NORMAL}"

Sử dụng printf thay vì echo:

BGRED=`printf '\33[41m'`
NORMAL=`printf '\33[m'`
printf '%s\n' "${BGRED}Text on red background${NORMAL}"

Xem thêm
Danh sách lệnh Unix
Danh sách lệnh DOS

Tham khảo

Đọc thêm

Liên kết ngoài

Microsoft TechNet Echo article