Ed (Unix)

ed là một trình soạn thảo dòng cho hệ điều hành Unix và giống Unix. Nó là một trong những phần đầu tiên của hệ điều hành Unix được phát triển vào tháng 8 năm 1969. Nó vẫn là một phần của tiêu chuẩn POSIX và Open Group cho các hệ điều hành dựa trên Unix, bên cạnh trình soạn thảo toàn màn hình tinh vi hơn.

Lịch sử
Trình soạn thảo văn bản ed là một trong ba yếu tố chính đầu tiên của trình biên dịch, trình soạn thảo và trình biên dịch hệ điều hành Unix do Ken Thompson phát triển vào tháng 8 năm 1969 trên PDP-7 tại AT & T Bell Labs. Nhiều tính năng của ed đến từ trình soạn thảo văn bản qed được phát triển tại trường đại học của trường đại học bang California, Berkeley. Thompson rất quen thuộc với qed và đã thực hiện lại nó trên hệ thống CTSS và Multics. Các phiên bản qed của Thompson đáng chú ý là phiên bản đầu tiên thực hiện các biểu thức chính quy. Các biểu thức chính quy cũng được triển khai trong ed, mặc dù việc thực hiện chúng ít tổng quát hơn đáng kể so với qed.

Dennis M. Ritchie đã tạo ra những gì Doug McIlroy sau này được mô tả là ed "dứt khoát", và các khía cạnh của ed tiếp tục ảnh hưởng đến ex, từ đó sinh ra vi. Lệnh grep Unix không tương tác được lấy cảm hứng từ việc sử dụng đặc biệt phổ biến của qed và sau này ed, trong đó lệnh g / re / p có nghĩa là tìm kiếm trên toàn cầu cho biểu thức chính quy và in các dòng có chứa nó. Trình soạn thảo luồng Unix, sed đã triển khai nhiều tính năng kịch bản của qed không được ed hỗ trợ trên Unix.

Tính năng

Các tính năng của ed bao gồm:

 có sẵn trên tất cả các hệ thống Unix (và bắt buộc trên các hệ thống tuân thủ Thông số kỹ thuật Unix đơn).
 một trình soạn thảo phương thức hỗ trợ chế độ lệnh, chế độ văn bản và chế độ xem
 hỗ trợ cho các biểu thức chính quy
 tự động hóa mạnh mẽ có thể đạt được bằng cách cung cấp các lệnh từ đầu vào tiêu chuẩn

Nổi tiếng vì sự đơn sơ, ed hầu như không có phản hồi trực quan, và được Peter (Salus gọi là "trình soạn thảo thù địch nhất từng được tạo ra", ngay cả khi được so sánh với đương đại) TECO. Ví dụ: thông báo mà ed sẽ tạo trong trường hợp có lỗi hoặc khi muốn đảm bảo người dùng muốn thoát mà không lưu, là "?". Nó không báo cáo tên tệp hoặc số dòng hiện tại hoặc thậm chí hiển thị kết quả thay đổi văn bản, trừ khi được yêu cầu. Các phiên bản cũ hơn (c. 1981) thậm chí không yêu cầu xác nhận khi lệnh thoát được ban hành mà không có thay đổi lưu của người dùng. Sự đơn sơ này là phù hợp trong các phiên bản đầu tiên của Unix, khi các bảng điều khiển là teletype, modem chậm và bộ nhớ là quý giá. Khi công nghệ máy tính được cải thiện và những hạn chế này được nới lỏng, các biên tập viên với nhiều phản hồi trực quan hơn đã trở thành chuẩn mực.

Trong thực tế hiện nay, ed hiếm khi được sử dụng tương tác, nhưng không tìm thấy sử dụng trong một số tập lệnh shell. Để sử dụng tương tác, ed đã được các biên tập viên sam, vi và Emacs thay thế vào những năm 1980. ed có thể được tìm thấy trên hầu hết mọi phiên bản Unix và Linux có sẵn, và như vậy rất hữu ích cho những người phải làm việc với nhiều phiên bản Unix. Trên các hệ điều hành dựa trên Unix, một số tiện ích như SQL * Plus chạy ed làm trình chỉnh sửa nếu các biến môi trường EDITOR và VISUAL không được xác định.  Nếu có lỗi xảy ra, ed đôi khi là trình chỉnh sửa duy nhất có sẵn. Đây thường là lần duy nhất khi nó được sử dụng tương tác.

Các lệnh ed thường được bắt chước trong các trình soạn thảo dựa trên dòng khác. Ví dụ, EDLINE trong các phiên bản MS-DOS đầu tiên và các phiên bản Windows NT 32 bit có cú pháp tương tự nhau và các trình soạn thảo văn bản trong nhiều MUD (ví dụ LPMud và hậu duệ) sử dụng cú pháp giống ed. Những trình soạn thảo này, tuy nhiên, thường bị hạn chế hơn về chức năng.

Tham khảo