echo (lệnh)

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[1] hoặc một tập tin, hoặc là một phần trong pipeline.

echo
Thiết kế bởiDouglas McIlroy
(AT&T Bell Laboratories)
Phát triển bởiNhiều nhà phát triển mã nguồn mởthương mại
Hệ điều hànhMultics, 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
Nền tảngĐa nền tảng
Thể loạiLệnh

Triển khai

Dòng lệnh có trong các hệ điều hành Multics,[2] FLEX của TSC,[3] TRIPOS của MetaComCo,[4] Z80-RIO của Zilog,[5] OS-9 của Microware,[6] DOS, Panos củaAcorn Computers,[7] Digital Research FlexOS,[8] OS/2 của IBM,[9] Microsoft Windows,[10] ReactOS,[11] MPE/iX của HP,[12] KolibriOS,[13] 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[14] hay zsh[15]) và các shell giống Csh cũng như COMMAND.COMcmd.exe đều có echo là lệnh có sẵn.

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

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).[17]

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.[18]

echo trong Research Unix chỉ mở rộng escape khi có flag -e,[19] 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.[20]

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[21] 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[22] 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àoXin 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

  • echo: write arguments to standard output – Commands & Utilities Reference, The Single UNIX® Specification, Issue 6 from The Open Group
  • echo(1) – Plan 9 Programmer's Manual, Volume 1
  • echo(1) – Inferno General commands Manual
  • Microsoft TechNet Echo article