Bước tới nội dung

echo (lệnh)

Bách khoa toàn thư mở Wikipedia
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

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 shellfile 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.

Triển khai

[sửa | sửa mã nguồn]

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ó echolệnh có sẵn.

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

Lịch sử

[sửa | sửa mã nguồn]

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]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}"

Tham khảo

[sửa | sửa mã nguồn]
  1. ^ Rügheimer, Hannes; Spanik, Christian (ngày 12 tháng 9 năm 1988). “AmigaDOS quick reference”. Grand Rapids, Mi: Abacus – qua Internet Archive.
  2. ^ “Multics Commands”. www.multicians.org.
  3. ^ “FLEX 9.0 User's Manual” (PDF).
  4. ^ “Manual” (PDF). www.pagetable.com. Truy cập ngày 12 tháng 9 năm 2020.
  5. ^ “Z80-RIO OPERATING SYSTEM USER'S MANUAL” (PDF). Bản gốc (PDF) lưu trữ ngày 28 tháng 1 năm 2022. Truy cập ngày 28 tháng 6 năm 2021.
  6. ^ Paul S. Dayan (1992). The OS-9 Guru - 1: The Facts. Galactic Industrial Limited. ISBN 0-9519228-0-7.
  7. ^ “Chris's Acorns: Panos”. chrisacorns.computinghistory.org.uk.
  8. ^ “Bản sao đã lưu trữ” (PDF). Bản gốc (PDF) lưu trữ ngày 25 tháng 9 năm 2019. Truy cập ngày 28 tháng 6 năm 2021.
  9. ^ “Bản sao đã lưu trữ”. Bản gốc lưu trữ ngày 14 tháng 4 năm 2019. Truy cập ngày 28 tháng 6 năm 2021.
  10. ^ “echo”. docs.microsoft.com.
  11. ^ “reactos/reactos”. GitHub.
  12. ^ “MPE/iX Command Reference Manual” (PDF). Bản gốc (PDF) lưu trữ ngày 21 tháng 10 năm 2018. Truy cập ngày 28 tháng 6 năm 2021.
  13. ^ “Shell - KolibriOS wiki”. wiki.kolibrios.org.
  14. ^ “Bash Builtins (Bash Reference Manual)”. www.gnu.org.
  15. ^ “zsh: 17 Shell Builtin Commands”. zsh.sourceforge.net.
  16. ^ “EFI Shells and Scripting”. Intel. Truy cập ngày 25 tháng 9 năm 2013.
  17. ^ McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Bản báo cáo kỹ thuật). CSTR. Bell Labs. 139.
  18. ^ Mascheck, Sven. “echo and printf behaviour”. Truy cập ngày 24 tháng 7 năm 2016.
  19. ^ “8th Edition Unix echo man page”. Truy cập ngày 24 tháng 7 năm 2016.
  20. ^ Wolverton, Van (2003). Running MS-DOS Version 6.22 (20th Anniversary Edition), 6th Revised edition. Microsoft Press. ISBN 0-7356-1812-7.
  21. ^ echo: write arguments to standard output – Commands & Utilities Reference, The Single UNIX® Specification, Issue 6 from The Open Group
  22. ^ “Autoconf documentation on echo portability”. Free Software Foundation. Truy cập ngày 24 tháng 7 năm 2016.

Đọc thêm

[sửa | sửa mã nguồn]

Liên kết ngoài

[sửa | sửa mã nguồn]