Shell (điện toán)
Shell dòng lệnh

Giao diện dòng lệnh (CLI) là một shell hệ điều hành sử dụng các ký tự chữ-số được nhập từ bàn phím để cung cấp chỉ dẫn và dữ liệu tới hệ điều hành. Ví dụ, một chiếc máy đánh chữ từ xa ("teletypewriter") có thể gửi các mã đại diện cho các phím gõ tới một chương trình thông dịch lệnh chạy trên máy tính; trình thông dịch mã sẽ phân tích cú pháp chuỗi gõ phím đó và phản hồi bằng thông báo lỗi nếu không thể nhận dạng được chuỗi ký tự, hoặc nó có thể thực hiện một số hành động khác như tải chương trình ứng dụng, liệt kê các tập tin, đăng nhập tài khoản người dùng, v.v. Các hệ điều hành như UNIX có rất nhiều chương trình shell với các lệnh, cú pháp và chức năng khác nhau, trong đó shell POSIX được coi là tiêu chuẩn cơ bản. Một số hệ điều hành chỉ có một kiểu giao diện lệnh; các hệ điều hành thông dụng như MS-DOS đi kèm với một giao diện lệnh tiêu chuẩn (COMMAND.COM) nhưng các giao diện bên thư ba vẫn thường có sẵn, cung cấp thêm những tính năng hoặc chức năng như menu điều hướng hay chạy chương trình từ xa.
Các chương trình ứng dụng cũng có thể triển khai giao diện dòng lệnh. Ví dụ, trong các hệ thống tương tự Unix, chương trình telnet có một số lệnh để điều khiển liên kết tới hệ thống máy tính từ xa. Bởi các lệnh trong chương trình cũng được nhập từ các phím giống như khi gửi dữ liệu tới máy tính từ xa, chương trình cần có cách thức để phân biệt giữa hai kiểu nhập liệu trên. Một chuỗi thoát có thể được định nghĩa, sử dụng một phím đặc biệt không bao giờ được truyền đi nhưng luôn được hệ thống cục bộ thông dịch. Chương trình chuyển đổi qua lại giữa hai chế độ: thông dịch các lệnh được nhập từ bàn phím, hoặc truyền các phím đã nhập dưới dạng dữ liệu để xử lý.
Một tính năng xuất hiện trong nhiều shell dòng lệnh là khả năng lưu lại các chuỗi lệnh để tái sử dụng. Người dùng có thể lưu một chuỗi các lệnh trong tập tin dữ liệu, sau đó yêu cầu CLI đọc tập tin và thực thi các lệnh trong đó giống như khi người dùng nhập lệnh một cách thủ công. Các tính năng đặc biệt trong CLI có thể được áp dụng khi thực hiện những chỉ dẫn được lưu sẵn như vậy. Những tập tin batch (tập tin kịch bản) này có thể được sử dụng nhiều lần để tự động hóa các thao tác thường thực hiện như khởi tạo các chương trình khi hệ thống được khởi động lại. Chế độ sử dụng hàng loạt của các shell thường bao gồm các cấu trúc, điều kiện, biến và nhiều yếu tố khác của những ngôn ngữ lập trình; một số chỉ chứa những thành phần tối thiểu cho mục đích này, số khác lại mang bản chất của những ngôn ngữ lập trình rất phức tạp. Ngược lại, một số ngôn ngữ lập trình có thể được sử dụng để tương tác với hệ thống từ shell hệ điều hành hoặc một chương trình chuyên dụng.
Một số shell dòng lệnh như Xonsh, Bash, và Z shell cung cấp tính năng hoàn thành dòng lệnh, cho phép trình thông dịch tự động điền hoặc gợi ý toàn bộ câu lệnh dựa vào một vài ký tự ban đầu mà người dùng nhập vào.
Trình thông dịch dòng lệnh có thể cung cấp chức năng lịch sử để người dùng gọi, sửa đổi và chạy lại các lệnh đã từng ra trước đó cho hệ thống. Do tất cả câu lệnh tới hệ điều hành đều phải được người dùng nhập bằng tay, tên của các lệnh thường được đặt ngắn gọn và hệ thống trình bày các tùy chọn trong chương trình cũng được thiết kế nhỏ gọn. Tên gọi ngắn có thể khiến người dùng khó nhớ lệnh, trong khi các hệ thống ban đầu lại thiếu nguồn tài nguyên lưu trữ để cung cấp hướng dẫn sử dụng trực tuyến chi tiết cho người dùng.