Hướng dẫn cơ bản dòng lệnh Linux cho người mới bắt đầu (Phần 3)

Tổng hợp Hướng dẫn sử dụng dòng lệnh Linux

Chào mừng bạn trở lại với loạt bài học thú vị về dòng lệnh Linux! Trong phần này, chúng ta sẽ cùng khám phá thêm một số thao tác cực kỳ hữu ích – từ cách thiết lập bố cục bàn phím cho đến việc tìm kiếm tập tin trên hệ thống của bạn. Hy vọng rằng chuỗi bài này sẽ giúp bạn dần trở thành một “cao thủ” trong thế giới terminal và bàn phím.

Các thao tác – Phần Ba

Thiết lập bố cục bàn phím 

Khi bạn đang sử dụng một môi trường desktop hiện đại, việc thay đổi bố cục bàn phím thực sự rất dễ dàng – chỉ vài cú nhấp chuột là xong. Nhưng nếu bạn gặp phải tình huống chỉ có dòng lệnh (CLI) và bàn phím lại đang ở chế độ… tiếng Pháp? Mọi phím bạn gõ ra đều khác với những gì hiển thị trên phím, và mọi thứ trở nên hỗn loạn.

Hoặc đơn giản hơn, bạn vừa “chia tay” GNOME hay KDE nặng nề để đến với một trình quản lý cửa sổ nhẹ nhàng như Fluxbox? Khi ấy, việc thiết lập bố cục bàn phím sẽ phụ thuộc vào việc bạn có cài đặt X hay không. Trong bài viết này, chúng ta sẽ tập trung vào cách thực hiện trong môi trường terminal-only, không phụ thuộc vào công cụ đặc thù của bản phân phối. (Trong ví dụ, chúng ta sử dụng Ubuntu.)

Nếu bạn có cài X.org:

Công cụ bạn cần là setxkbmap. Tên đầy đủ của nó là set X keyboard map, và đúng như vậy, nó giúp bạn đổi bố cục bàn phím trong môi trường X.

Mẹo hay: bạn có thể viết sẵn một đoạn shell script với dòng setxkbmap mong muốn, sau đó gán nó vào một tổ hợp phím tùy chọn trong ~/.fluxbox/keys để đổi layout chỉ trong chớp mắt. Đó là cái hay của Linux – gần như chẳng có giới hạn nào!

Ví dụ:

Giả sử bạn đang dùng bố cục US (mặc định) và muốn chuyển sang tiếng Pháp, chỉ cần gõ:

$ setxkbmap -layout fr

Thử ngay cả khi bạn không cần layout tiếng Pháp, rồi đổi lại về us để luyện tay! Câu hỏi đặt ra: làm sao biết được tên của các layout khác?

Rất đơn giản:

$ ls /usr/share/keymaps/YOUR_ARCH/*

Trong đó, YOUR_ARCH thường là i386 dù bạn dùng hệ thống 64-bit. Tên layout là phần nằm trước .kmap.gzLưu ý: Thư mục include không liên quan ở đây.

Một tham số quan trọng khác là -variant. Một ngôn ngữ có thể có nhiều bố cục khác nhau (vì lý do lịch sử, xã hội hoặc chính trị), và mỗi bố cục lại có thể có nhiều biến thể – ví dụ, layout dành riêng cho Mac hoặc Sun box có thể khác với PC thông thường. Nếu bạn cần bố cục không dành cho PC, hãy loại bỏ i386 trong lệnh trên.

Cách làm riêng trên Debian/Ubuntu:

Công cụ thần thánh dpkg-reconfigure là người bạn thân thiết của mọi admin Debian. Nó có thể cấu hình rất nhiều thành phần của hệ thống.

Lưu ý: các thiết lập dưới đây có hiệu lực toàn hệ thống và được giữ nguyên sau khi khởi động lại.

# dpkg-reconfigure keyboard-configuration

Các bản phân phối khác cũng có công cụ tương tự: system-config-* với Fedora, yast* với OpenSUSE.

Nếu bạn đang ở terminal không dùng X, hãy dùng lệnh loadkeys. Ví dụ:

# loadkeys /usr/share/keymaps/i386/azerty/fr-latin1.map.gz

Khuyến khích bạn đọc trang manual của loadkeys, vì lệnh này có thể ảnh hưởng đến người dùng khác cả sau khi bạn đăng xuất!

Lưu ý thêm: Mỗi hệ điều hành dạng Unix sẽ có cách riêng để làm điều này – ví dụ, không thể áp dụng các lệnh trên vào OpenBSD hay Solaris mà mong kết quả đúng.

Tìm kiếm tập tin

Ví dụ, KDE có một hệ thống tìm kiếm tập tin bằng cách tạo ra một cơ sở dữ liệu về nội dung của hệ thống tập tin và liên tục cập nhật để giúp việc tìm kiếm sau này diễn ra nhanh hơn. Nghe thì hấp dẫn đấy, nhưng nó chỉ hoạt động trong môi trường KDE và lại tiêu tốn khá nhiều tài nguyên. Trong khi đó, bạn hoàn toàn có thể thực hiện toàn bộ việc lập chỉ mục và tìm kiếm ngay từ dòng lệnh – giải pháp này không chỉ hoạt động trên mọi hệ điều hành Linux với bất kỳ môi trường desktop nào, mà còn tương thích với cả BSD (nơi những công cụ cần thiết đã có sẵn trong hệ thống cơ bản). Còn nếu bạn dùng Solaris thì chỉ cần cài thêm gói findutils.

Có hai cách tiếp cận chính: một là dựa trên cơ sở dữ liệu, hai là không dùng cơ sở dữ liệu. Mỗi cách đều có ưu điểm riêng. Nếu bạn chọn cách đầu tiên, tức là tạo một cơ sở dữ liệu trước, thì các lần tìm kiếm sau sẽ cực kỳ nhanh, nhưng bạn cần đảm bảo cơ sở dữ liệu luôn được cập nhật. Nhiều bản phân phối Linux cài sẵn các script tự động chạy hàng ngày hoặc hàng tuần để làm mới database, hoặc bạn có thể chủ động thiết lập điều đó bằng các công cụ như cron. Còn nếu chọn phương pháp không dùng database, thì bạn sẽ luôn nhận được thông tin thực tế từ hệ thống tập tin – chính xác tuyệt đối, nhưng quá trình tìm kiếm sẽ chậm hơn, đặc biệt là khi bạn có ổ đĩa dung lượng lớn hoặc được gắn từ xa, như thông qua mount NFS chẳng hạn.

Các công cụ sử dụng cơ sở dữ liệu gồm locate và những người anh em như mlocate hay slocate. Nhưng thực ra, chỉ cần dùng locate là đủ (trên một số hệ thống, nó có thể là liên kết đến một trong những công cụ còn lại). Và giống như trước, ở đây chỉ trình bày cách sử dụng cơ bản, còn chi tiết hơn bạn có thể tra thêm trong trang manual. Vì locate dùng cơ sở dữ liệu, bạn không cần chỉ định nơi tìm kiếm hay thay đổi thư mục hiện hành. Chỉ cần dùng lệnh là xong.

$ locate PATTERN

Đối với các ký tự đặc biệt hay các cách sử dụng nâng cao hơn, bạn nên tham khảo thêm trong trang manual. Nhưng trước khi bắt đầu sử dụng lệnh locate để tìm kiếm, bạn cần tạo cơ sở dữ liệu đã – và lệnh để làm điều đó là updatedb (viết tắt của update database). Chỉ cần chạy lệnh đó là xong. Quá trình này có thể mất chút thời gian, tùy thuộc vào tốc độ ổ đĩa, giao tiếp, và dung lượng dữ liệu, nhưng sau khi hoàn tất, bạn có thể dùng locate để tìm kiếm cực nhanh.

Ngoài ra, có một số lệnh khác cũng đáng được nhắc đến trong phần này như whereis, whichapropos. Những lệnh này chuyên dùng để tìm kiếm theo kiểu riêng biệt, cụ thể là tìm file trong các thư mục khai báo bởi các biến môi trường PATH và/hoặc MANPATH. Đây là hai biến môi trường cực kỳ quan trọng: PATH cho biết hệ thống nên tìm các file thực thi ở đâu khi bạn gõ lệnh trong terminal, còn MANPATH thì cho biết nơi hệ thống tìm kiếm các trang hướng dẫn (manual). Ví dụ, nếu bạn gõ ls trong terminal nhưng thư mục chứa file thực thi ls (thường là /bin) không có trong biến PATH, shell sẽ báo lỗi “command not found”.

$ whereis ls

Vậy nên, whereiswhich là hai công cụ giúp bạn tìm các tệp thực thi trong thư mục được định nghĩa bởi biến PATH – rất hữu ích khi bạn cần biết một lệnh cụ thể nằm ở đâu trong hệ thống. Còn apropos là công cụ dùng để tìm kiếm trong các trang manual (trang hướng dẫn), tuy nhiên bạn cũng có thể sử dụng tham số -k với lệnh man để đạt kết quả tương tự.

Vậy sự khác biệt giữa whereiswhich là gì? – Đây chính là phần bạn nên tự khám phá, để có thể hiểu rõ hơn trong tình huống nào nên dùng lệnh nào thì hiệu quả hơn. Các trang manual mà apropos tìm kiếm cũng được đánh chỉ mục trong cơ sở dữ liệu, cơ sở dữ liệu này thường được làm mới định kỳ thông qua cron.

Nãy giờ nói lý thuyết nhiều rồi, giờ hãy xem một ví dụ thực tế: cách để tìm kiếm thứ gì đó trong thư mục /usr bằng cách dùng một mẫu ký tự cụ thể (pattern).

$ find /usr -name \*pattern\* -print

Dấu hoa thị (*) được sử dụng giống như cách bạn thường dùng trong shell hoặc các phần mềm hỗ trợ ký tự đại diện (wildcards). Tuy nhiên, chúng được “thoát” (escaped) bằng dấu gạch chéo ngược (\) vì ta muốn find hiểu chúng là ký tự đại diện, chứ không phải để shell xử lý trước.

Cú pháp cơ bản của find là: find $vị_trí $mẫu_tìm_kiếm $tùy_chọn, nhưng thật ra find còn làm được rất nhiều điều khác nữa – miễn là bạn nắm được sức mạnh của nó. Nói đi nói lại hoài rồi, bạn biết đấy… find cực kỳ lợi hại khi bạn đã thực sự “thuần hóa” được nó!

Kết luận

Nếu bạn cảm thấy chuỗi bài viết này hữu ích, đừng ngần ngại để lại phản hồi cho chúng tôi – rất có thể phần 4 sẽ sớm được trình làng! Mỗi góp ý từ bạn là động lực để chúng tôi tiếp tục chia sẻ nhiều kiến thức thực chiến, dễ hiểu và đầy cảm hứng hơn nữa về thế giới dòng lệnh và hệ điều hành Linux. Hẹn gặp lại trong hành trình tiếp theo!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *