Thiết kế bởi | Douglas McIlroy (AT&T Bell Laboratories) |
---|---|
Phát triển bởi | Nhiều nhà phát triển mã nguồn mở và thương mại |
Hệ điều hành | 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 |
Nền tảng | Đa nền tảng |
Thể loại | 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.
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.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.[16]
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.
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}"