CLI, TUI và GUI

Định nghĩa

GUI

GUI a.k.a Graphical User Interface là giao diện đồ họa người dùng, nó là giao diện với đồ họa như hình ảnh, nút bấm, thanh tabs, thanh cuộn... Nó là loại giao diện xuất hiện ở mọi nơi, nói đúng hơn, nó là loại giao diện mặc định, sụ định nghĩa của giao diện luôn đấy. Tất cả các trang web, các giao diện trên điện thoại, file manager mặc định trên máy bạn đều sử dụng GUI.

(Đọc thêm trên Wikipedia)

TUI

TUI a.k.a Text-based User Interface cũng là giao diện người dùng nhưng thay vì có hình ảnh trực quan, tất mọi thứ đều hiển thị bằng chữ. Chữ có thể in đậm, in nghiêng, gạch chân, viết hoa, viết thường, nhấp nháy với bất kỳ màu chữ hoặc màu phông nào... Nhưng luôn phải là chữ mono (thẳng hàng, thẳng cột trên những đường lưới vô hình). Ta sẽ chủ yếu thấy loại giao diện này trên các phần mềm cho terminal nhử text editor, media player, task manager...

(Đọc thêm trên Wikipedia)

CLI

CLI a.k.a Command Line Interface là giao diện mà cách duy nhất để tương tác với nó là viết lệnh, sau đó phần mềm sẽ trả lại kết quả, rồi người dùng lại được phép gõ và gửi lệnh tiếp.

Những phần mềm sử dụng CLI tiêu biểu như các Shell như Bash, Zsh, Nushell ... Hay các REPL (read-eval-print loop) cho Python, Ruby, ... Một số phần mềm khác có thể kể đến như nmcli, bc, fend, clifm... Nhưng lưu ý là phần mềm sử dụng giao diện CLI để hiển thị nội dung bên trong nó không phải là phần mềm CLI, mà nó thường là TUI thì đúng hơn.

Phần mềm CLI là những phần mềm được chạy ở dưới dạng lệnh thưởng ở trong các shell, ví dụ như ls, cp, mv, rm, cal, neofetch, ... Các phần mềm này được khởi chạy với cấu trúc:

tên-phần-mềm cac-tham --flag

(Đọc thêm trên Wikipedia)

CLI > GUI (và TUI)

  • CLI trông có vẻ khó dùng, khó học. Nhưng một khi đã quen bạn có thể làm việc với máy tính một cách rất linh hoạt. Dùng CLI giống như vừa lập trình một phần mềm đơn giản, vừa chạy nó trong thời gian thực vậy.
  • Hầu hết phần mềm chạy trong môi trường CLI đều khởi động và chạy trong nháy mắt, giúp giữ flow khi làm việc.
  • Có rất nhiều công cụ CLI hay ho và hữu dụng cho phép bạn làm nhiều điều mà ít phần mềm GUI/TUI có thể làm được. Nhiều công cụ cho bạn tự do làm đủ mọi thứ với máy của bạn, muốn sửa, thay đổi hay làm sập cả hệ điều hành luôn cũng được.
  • Dùng CLI uy lực ở chỗ ta có thể kết nối các phần mềm riêng biệt vào để hoạt động cùng với nhau bằng cách lấy stdout (standard output: kết quả trả về) của phần mềm này làm stdin (standard input: dữ liệu đưa vào phần mềm) cho công cụ khác, ta gọi việc này là pipe, hai phần mềm trở lên kết nối với nhau kiểu này được gọi là pipeline.

Đây là một ví dụ về một pipeline (lệnh echo in chuỗi ký tự. rev đảo ngược thứ tự của dữ liệu đầu vào. figlet biến văn bản thành chữ ASCII lớn. tee vừa chuyển tiếp dữ liệu nó nhận vào, vừa viết dữ liệu đấy vào một địa chỉ, địa chỉ đấy có thể là cộng để in ra màn hình. Cuối cùng, lệnh cb cùng để sao chép dữ liệu vào clipboard):

$ echo '!dlroW ,olleH' | rev | figlet | tee /dev/tty | cb
 _   _      _ _         __        __         _     _ _
| | | | ___| | | ___    \ \      / /__  _ __| | __| | |
| |_| |/ _ \ | |/ _ \    \ \ /\ / / _ \| '__| |/ _` | |
|  _  |  __/ | | (_) |    \ V  V / (_) | |  | | (_| |_|
|_| |_|\___|_|_|\___( )    \_/\_/ \___/|_|  |_|\__,_(_)
                    |/
[✔] Copied 336B