Bạn đã bao giờ rơi vào tình huống đang quản trị một VPS từ xa qua SSH nhưng bỗng nhiên bàn phím phản hồi rất lạ, hoặc các phím tắt đặc biệt đột ngột không hoạt động đúng như mong đợi chưa nhỉ? Với kinh nghiệm của một Senior System Admin, mình hiểu rằng việc kiểm soát cấu hình thiết bị đầu cuối là cực kỳ quan trọng để duy trì sự ổn định khi làm việc với hệ thống. Vậy thực chất stty là gì và làm thế nào để chúng ta làm chủ nó? stty là một công cụ mạnh mẽ cho phép bạn điều chỉnh các thiết lập của terminal. Trong bài viết này, mình sẽ hướng dẫn bạn cách dùng stty để cấu hình lại các thông số dòng (line settings) một cách nhanh chóng. Tìm hiểu về stty Linux sẽ giúp bạn biết cách điều chỉnh terminal một cách chuyên nghiệp nhất. Hãy cùng mình khám phá cách thiết lập terminal chuẩn xác nhất ngay sau đây nhé!
Cần chuẩn bị gì trước khi dùng lệnh stty?
- Quyền user: Người dùng có thể chạy lệnh với quyền user thường để thay đổi các thiết lập thiết bị đầu cuối hiện tại. Tuy nhiên, việc thay đổi cấu hình của các cổng serial hoặc thiết bị phần cứng hệ thống yêu cầu quyền root hoặc sử dụng sudo.
- Hệ điều hành hỗ trợ: Lệnh này khả dụng trên hầu hết các hệ điều hành dựa trên Unix, bao gồm Linux (Ubuntu, Debian, CentOS, Fedora...) và macOS.
- Package dependencies: Lệnh stty thường nằm trong gói coreutils hoặc util-linux đã được cài đặt sẵn mặc định trên hầu hết các bản phân phối Linux.
Cú pháp lệnh stty là gì?
Lệnh stty hỗ trợ nhiều dạng cú pháp khác nhau để cấu hình các tham số của terminal trên Linux.
stty [OPTIONS] [SETTINGS]
stty [OPTIONS] -a
Các tùy chọn của lệnh stty là gì?
Lệnh stty cung cấp các tùy chọn để kiểm tra và thay đổi cài đặt thiết bị terminal, bao gồm các chế độ nhập/xuất, điều khiển tín hiệu và các thông số truyền thông.
| Tùy chọn ngắn | Tùy chọn dài | Mô tả |
|---|---|---|
| -a | --all | stty -a hiển thị tất cả các cài đặt hiện tại của terminal dưới dạng có thể đọc được. |
| -g | --save | stty -g xuất các cài đặt terminal dưới dạng mã hóa, có thể lưu trữ và khôi phục sau này. |
| -F | --file | stty -F /dev/ttyS0 áp dụng các cài đặt cho thiết bị terminal được chỉ định thay vì terminal tiêu chuẩn. |
| --help | stty --help hiển thị thông báo trợ giúp và danh sách các tùy chọn có sẵn. | |
| --version | stty --version hiển thị số phiên bản của lệnh stty. | |
| stty rows 30 cols 100 đặt số hàng và cột cho terminal (không có dấu gạch ngang). | ||
| stty speed hiển thị tốc độ truyền hiện tại của kết nối serial. | ||
| stty size hiển thị kích thước hiện tại của terminal dưới dạng "hàng cột". | ||
| stty raw bật chế độ raw, cho phép xử lý từng ký tự nhập vào mà không chờ Enter. | ||
| stty -raw tắt chế độ raw và quay lại chế độ canonical (bình thường). | ||
| stty echo bật lặp lại ký tự nhập vào trên màn hình. | ||
| stty -echo tắt lặp lại ký tự, hữu ích để ẩn nhập mật khẩu. | ||
| stty icanon bật chế độ canonical, cho phép chỉnh sửa dòng trước khi gửi. | ||
| stty -icanon tắt chế độ canonical, xử lý từng ký tự ngay khi nhập. | ||
| stty min 0 đặt số lượng ký tự tối thiểu cần để hoàn tất đọc (trong chế độ non-canonical). | ||
| stty time 10 đặt thời gian chờ tối đa (tính bằng 0,1 giây) cho việc đọc dữ liệu nhập. | ||
| stty intr ^C thiết lập ký tự ngắt chương trình (thường là Ctrl+C). | ||
| stty quit ^\\ thiết lập ký tự kết thúc (thường là Ctrl+Backslash). | ||
| stty erase ^H thiết lập ký tự xóa (thường là Ctrl+H hoặc Backspace). | ||
| stty kill ^U thiết lập ký tự xóa toàn bộ dòng (thường là Ctrl+U). | ||
| stty eof ^D thiết lập ký tự kết thúc tệp (thường là Ctrl+D). | ||
| stty onlcr chuyển đổi ký tự xuống dòng thành ký tự trở về đầu dòng + xuống dòng khi xuất. | ||
| stty -onlcr tắt chuyển đổi xuống dòng tự động. | ||
| stty parenb bật kiểm tra chẵn lẻ trong truyền thông serial. | ||
| stty -parenb tắt kiểm tra chẵn lẻ. | ||
| stty cs8 đặt kích thước ký tự thành 8 bit (chuẩn cho các hệ thống hiện đại). | ||
| stty cs7 đặt kích thước ký tự thành 7 bit (cho các hệ thống cũ hoặc ASCII tiêu chuẩn). |
xem thêm: System Configuration and Settings
Cách sử dụng lệnh stty trong các tình huống thực tế?
Dưới đây là các kịch bản cấu hình thiết bị đầu cuối (terminal) phổ biến mà quản trị viên hệ thống thường gặp.
stty là gì? [Hiển thị cấu hình terminal hiện tại]
$ stty -a stty size 24 80 speed 9600 baud; line disc; echo; cs8; sline; wcol 0;
Lệnh hiển thị toàn bộ các thiết lập hiện tại của terminal bao gồm kích thước dòng, cột và các thuộc tính điều khiển. Trong thực tế, lệnh này giúp kiểm tra nhanh trạng thái của session trước khi thực hiện thay đổi.
stty -echo là gì? [Ẩn ký tự nhập vào màn hình]
$ stty -echo $ mypassword123 $ stty echo
Tham số -echo vô hiệu hóa việc hiển thị các ký tự khi người dùng nhập từ bàn phím. Trong thực tế, kỹ thuật này được sử dụng trong các script yêu cầu người dùng nhập mật khẩu hoặc thông tin nhạy cảm để đảm bảo tính bảo mật.
stty rows và cols là gì? [Thay đổi kích thước màn hình giả lập]
$ stty rows 40 cols 120 $ stty rows 40 cols 120
Lệnh cho phép thiết lập thủ công số lượng dòng và cột cho terminal. Trên môi trường production, việc này thường được dùng khi điều hướng các ứng dụng giao diện dòng lệnh (TUI) hoạt động không chính xác do sai lệch kích thước cửa sổ.
stty -icanon là gì? [Chuyển sang chế độ nhập liệu không đệm]
$ stty -icanon $ stty echo
Tham số -icanon vô hiệu hóa chế độ canonic, cho phép đọc dữ liệu ngay lập tức khi nhấn phím mà không cần đợi phím Enter. Trong thực tế, cấu hình này là bắt buộc khi viết các script automation để lắng nghe các phím điều khiển hoặc tạo các menu tương tác nhanh.
stty raw là gì? [Chuyển terminal sang chế độ dữ liệu thô]
$ stty raw $ stty cooked
Lệnh chuyển terminal sang chế độ raw, nơi mọi ký tự được truyền trực tiếp đến ứng dụng mà không qua xử lý của driver terminal. Trên môi trường production, lệnh này thường kết hợp với các lệnh xử lý stream để xây dựng các công cụ quản lý thiết bị hoặc trình soạn thảo văn bản tùy chỉnh.
Lệnh stty gặp lỗi gì khi cấu hình terminal?
Trong quá trình quản trị hệ thống, các lỗi phát sinh khi sử dụng stty thường liên quan đến quyền truy cập thiết bị hoặc sai lệch thông số cấu hình terminal.
Lỗi không có quyền truy cập thiết bị terminal (Permission denied)
stty echo stty: Permission denied
Lỗi xảy ra khi người dùng hiện tại không có đủ quyền hạn để thay đổi các thiết lập cấu hình của tty hiện tại.
Lỗi không tìm thấy thiết bị đầu vào (No such device or address)
stty -f /dev/ttyS1 9600 stty: cannot open /dev/ttyS1: No such device or address
Lỗi xuất hiện khi tên thiết bị được chỉ định không tồn tại trong hệ thống hoặc thiết bị chưa được kết nối.
Lỗi tham số không hợp lệ (Invalid argument)
stty rows 999999 stty: invalid argument
Lỗi phát sinh khi giá trị truyền vào cho các tham số cấu hình vượt quá giới hạn cho phép của driver terminal.
Lỗi khi cấu hình trên môi trường không phải terminal (Not a tty)
echo "test" | stty echo stty: Inappropriate ioctl for device
Lỗi xảy ra khi lệnh stty được thực thi thông qua một pipe hoặc một tiến trình không có thiết bị điều khiển terminal (controlling terminal) đi kèm.
Quy trình thực tế dùng stty trong quản trị terminal Linux?
Trong kịch bản cấu hình các thiết bị nhúng hoặc quản lý kết nối qua cổng Serial (Console) để thiết lập môi trường tương tác dòng lệnh.
Bước 1: Kiểm tra cấu hình hiện tại của terminal
stty -a
Hiển thị toàn bộ các thiết lập hiện tại của dòng terminal, bao gồm tốc độ baud, kích thước ký tự và các trạng thái điều khiển.
Bước 2: Điều chỉnh tốc độ truyền dữ liệu (Baud rate)
stty speed 9600
Thiết lập tốc độ truyền dữ liệu của cổng kết nối về mức 9600 baud để đảm bảo đồng bộ với thiết bị ngoại vi.
Bước 3: Vô hiệu hóa tính năng kiểm soát dòng bằng phím tắt
stty -ixon
Ngăn chặn việc sử dụng tổ hợp phím Ctrl+S và Ctrl+Q để tạm dừng hoặc tiếp tục truyền dữ liệu, tránh gây gián đoạn luồng thông tin.
Bước 4: Cấu hình chế độ hiển thị ký tự đặc biệt
stty echo
Kích hoạt chế độ hiển thị các ký tự được nhập vào màn hình, giúp người dùng quan sát được nội dung đang gõ trong quá trình cấu hình.
Việc cấu hình stty trên VPS đòi hỏi sự chính xác về các thông số điều khiển terminal. Trong các trường hợp quản trị VPS từ xa qua SSH, việc thiết lập sai các ký tự điều khiển như Ctrl+C hoặc Ctrl+Z dẫn đến tình trạng terminal không thể ngắt lệnh hoặc treo phiên làm việc. Một sai sót phổ biến là cấu hình không tương thích giữa terminal client (như PuTTY hoặc iTerm2) và shell trên VPS, gây ra lỗi hiển thị ký tự lạ hoặc không nhận diện được phím Enter. Để kiểm tra và khôi phục cài đặt mặc định, lệnh stty sane cho phép khôi phục các thiết lập terminal về trạng thái chuẩn. Người dùng cần lưu ý rằng các thay đổi thực hiện qua stty chỉ có hiệu lực trong phiên làm việc hiện tại trừ khi được ghi vào các tệp cấu hình shell như .bashrc hoặc .zshrc.
Những câu hỏi thường gặp về lệnh stty?
Dưới đây là các thắc mắc phổ biến nhất của người dùng khi cấu hình các thông số của thiết bị đầu cuối (terminal) thông qua lệnh stty.
Làm thế nào để xem toàn bộ các thiết lập hiện tại của terminal?
Để kiểm tra tất cả các thông số cấu hình hiện tại của terminal, bạn sử dụng lệnh stty mà không kèm theo tham số nào.
stty -a stty size 1920x1080
Làm sao để kiểm tra kích thước dòng và cột của cửa sổ terminal?
Bạn có thể sử dụng tham số -a để xem nhanh hoặc dùng lệnh stty cụ thể để lấy số dòng và số cột.
stty size 24 80
Làm thế nào để thay đổi tốc độ baud cho kết nối serial?
Trong các trường hợp kết nối qua cổng serial, bạn có thể thiết lập tốc độ truyền dữ liệu bằng cách chỉ định tốc độ sau lệnh stty.
stty speed 9600
Cách vô hiệu hóa chế độ echo để ẩn ký tự khi nhập mật khẩu?
Để ngăn terminal hiển thị các ký tự vừa nhập lên màn hình, bạn sử dụng tùy chọn -echo.
stty -echo Enter password: (không hiển thị ký tự)
Làm thế nào để khôi phục lại các thiết lập mặc định của terminal?
Nếu việc cấu hình sai gây ra lỗi hiển thị, bạn có thể sử dụng lệnh reset để đưa terminal về trạng thái ban đầu.
reset
Cách thiết lập terminal để nhận diện phím Enter (newline) chuẩn xác?
Bạn có thể cấu hình lại ký tự kết thúc dòng bằng cách gán lại giá trị cho tham số onlcr.
stty onlcr
Lệnh stty là một công cụ mạnh mẽ giúp bạn cấu hình và hiển thị các thiết lập của dòng điều khiển terminal trong hệ thống Linux. Việc nắm vững cách sử dụng các tham số như -a để xem toàn bộ cấu hình hiện tại, hay erase để tùy chỉnh ký tự xóa sẽ giúp bạn kiểm soát giao diện dòng lệnh một cách linh hoạt hơn rất nhiều, đúng không nhỉ? Tất nhiên, việc làm chủ được những tùy chỉnh này sẽ giúp quá trình làm việc với terminal của bạn trở nên mượt mà và cá nhân hóa hơn vô cùng. Hy vọng những kiến thức trên sẽ hỗ trợ bạn thật tốt trong công việc. Chúc bạn thành công!