2.2 Bài 1
Chứng chỉ: |
Linux Essentials |
---|---|
Phiên bản: |
1.6 |
Chủ đề: |
2 Tìm đường trong Hệ thống Linux |
Mục tiêu: |
2.2 Nhận trợ giúp trên Dòng lệnh |
Bài: |
1 trên 1 |
Giới thiệu
Dòng lệnh là một công cụ rất phức tạp. Mỗi một lệnh sẽ có các tùy chọn riêng; do vậy, tài liệu chính là chìa khóa để làm việc với hệ thống Linux. Ngoài thư mục /usr/share/doc/
là nơi lưu trữ hầu hết các tài liệu, có nhiều công cụ khác cũng cung cấp thông tin về cách sử dụng các lệnh trong Linux. Trong bài học này, chúng ta sẽ tập trung vào các phương pháp để có thể truy cập vào các tài liệu đó và nhận được những hỗ trợ cần thiết.
Trong dòng lệnh Linux, có vô số các cách khác nhau để nhận trợ giúp. man
, help
và info
là một vài ví dụ trong số đó. Đối với Linux Essentials, ta sẽ tập trung vào man
và info
vì chúng là những công cụ được sử dụng phổ biến nhất để có thể nhận được trợ giúp.
Một chủ đề khác thuộc bài học này là việc định vị tệp. Ta sẽ chủ yếu làm việc với lệnh locate
.
Nhận Trợ giúp trên Dòng lệnh
Trợ giúp được tích hợp sẵn
Khi bắt đầu với tham số --help
, hầu hết các lệnh sẽ hiển thị một số hướng dẫn ngắn gọn về cách sử dụng lệnh. Tuy không phải lệnh nào cũng có tính năng này nhưng chúng ta vẫn nên cố gắng tìm hiểu trước về các tham số của lệnh để việc sử dụng chúng được hiệu quả hơn. Hãy lưu ý rằng các hướng dẫn từ --help
thường khá ngắn gọn so với các nguồn tài liệu khác mà chúng ta sẽ cùng thảo luận tới đây trong bài học này.
Trang Hướng dẫn
Hầu hết các lệnh đều sẽ cung cấp một trang hướng dẫn (trang "manual"). Tài liệu này thường được cài đặt cùng với phần mềm và có thể được truy cập bằng lệnh man
. Lệnh cần hiển thị trang hướng dẫn sẽ được thêm vào man
làm đối số:
$ man mkdir
Lệnh này sẽ mở ra trang hướng dẫn cho mkdir
. Bạn có thể sử dụng các phím mũi tên lên và xuống hoặc phím cách để điều hướng trong trang hướng dẫn. Để thoát khỏi trang hướng dẫn, hãy nhấn phím Q.
Mỗi một trang hướng dẫn sẽ được chia thành tối đa 11 phần, dù đa phần trong số đó sẽ là tùy chọn:
Mục | Mô tả |
---|---|
NAME |
Tên lệnh và mô tả ngắn gọn |
SYNOPSIS |
Mô tả cú pháp của lệnh |
DESCRIPTION |
Mô tả tác dụng của lệnh |
OPTIONS |
Các tuỳ chọn có sẵn |
ARGUMENTS |
Các đối số có sẵn |
FILES |
Các tệp phụ trợ |
EXAMPLES |
Một ví dụ về dòng lệnh |
SEE ALSO |
Tham chiếu chéo đến các chủ đề liên quan |
DIAGNOSTICS |
Thông báo Cảnh báo và Lỗi |
COPYRIGHT |
(Các) Tác giả của lệnh |
BUGS |
Các hạn chế đã được xác định của lệnh |
Trên thực tế, hầu hết các trang hướng dẫn sẽ không có tất cả các mục này.
Các trang hướng dẫn được tổ chức thành 8 loại danh mục, được đánh số từ 1 đến 8:
Danh mục | Mô tả |
---|---|
1 |
Lệnh người dùng |
2 |
Cuộc gọi hệ thống |
3 |
Chức năng của thư viện C |
4 |
Trình điều khiển và tệp thiết bị |
5 |
Tệp cấu hình và định dạng tệp |
6 |
Trò chơi |
7 |
Khác |
8 |
Lệnh quản trị hệ thống |
9 |
Chức năng của hạt nhân (không chuẩn) |
Mỗi trang hướng dẫn sẽ thuộc về đúng một danh mục duy nhất. Tuy nhiên, nhiều danh mục có thể chứa các trang hướng dẫn có cùng tên. Hãy lấy lệnh passwd
làm ví dụ. Lệnh này có thể được sử dụng để thay đổi mật khẩu của người dùng. Vì passwd
là một lệnh của người dùng nên trang hướng dẫn của nó nằm trong danh mục 1. Ngoài lệnh passwd
, tệp cơ sở dữ liệu mật khẩu /etc/passwd
cũng có một trang hướng dẫn được gọi là passwd
. Vì tệp này là tệp cấu hình nên nó thuộc danh mục 5. Khi nhắc đến một trang hướng dẫn, danh mục thường sẽ được thêm vào tên của trang hướng dẫn, như trong passwd(1)
hoặc passwd(5)
, để xác định trang hướng dẫn tương ứng.
Theo mặc định, man passwd
sẽ hiển thị trang hướng dẫn đầu tiên có sẵn, trong trường hợp này là passwd(1)
. Danh mục của trang hướng dẫn ta cần có thể sẽ được ghi rõ trong một lệnh, chẳng hạn như man 1 passwd
hoặc man 5 passwd
.
Chúng ta đã thảo luận về cách điều hướng trong trang hướng dẫn và cách quay lại dòng lệnh. Trong phạm vi nội bộ, man
sử dụng lệnh less
để hiển thị nội dung của trang hướng dẫn. less
cho phép bạn tìm kiếm văn bản trong một trang hướng dẫn. Để tìm kiếm từ linux
, bạn chỉ cần sử dụng /linux
để tìm kiếm tiếp từ điểm bạn đang ở trên trang, hoặc ?linux
để bắt đầu tìm kiếm ngược trở lại. Tác vụ này sẽ làm nổi bật tất cả các kết quả phù hợp và di chuyển trang đến kết quả phù hợp được đánh dấu đầu tiên. Trong cả hai trường hợp, bạn có thể gõ phím N để chuyển sang kết quả tìm kiếm tiếp theo. Để tìm thêm thông tin về các tính năng bổ sung này, hãy nhấn phím H và một menu có tất cả các thông tin sẽ xuất hiện.
Trang Thông tin
Một công cụ khác có thể trợ giúp bạn trong quá trình làm việc với hệ thống Linux là các Trang Thông tin. Các trang thông tin thường sẽ chi tiết hơn các trang hướng dẫn và sẽ được định dạng ở dạng siêu văn bản tương tự như các trang web trên Internet.
Các trang thông tin có thể được hiển thị như thế này:
$ info mkdir
Đối với mỗi trang thông tin, lệnh info
sẽ đọc một tệp thông tin được cấu trúc thành các nút riêng lẻ trong một cây. Mỗi nút sẽ chứa một chủ đề đơn giản và lệnh info
chứa các siêu liên kết có thể giúp bạn di chuyển từ nút này sang nút khác. Bạn có thể truy cập liên kết bằng cách nhấn enter trong khi đặt con trỏ vào một trong các dấu hoa thị ở đầu.
Tương tự như man
, công cụ info
cũng có các lệnh điều hướng trang. Bạn có thể tìm hiểu thêm về các lệnh này bằng cách nhấn phím ? khi đang ở trên trang thông tin. Những công cụ này sẽ giúp bạn điều hướng trang dễ dàng hơn cũng như hiểu cách truy cập các nút và di chuyển trong cây nút.
Thư mục /usr/share/doc/
Như đã đề cập trước đây, thư mục /usr/share/doc/
sẽ lưu trữ hầu hết các tài liệu về các lệnh mà hệ thống đang sử dụng. Thư mục này chứa một thư mục cho hầu hết các gói được cài đặt trên hệ thống. Tên của thư mục thường là tên của gói và đôi khi là tên phiên bản của nó. Các thư mục này sẽ bao gồm tệp README
hoặc readme.txt
chứa tài liệu cơ bản của gói. Bên cạnh tệp README
, thư mục cũng có thể chứa các tệp tài liệu khác, chẳng hạn như nhật ký thay đổi bao gồm chi tiết lịch sử của chương trình hoặc ví dụ về tệp cấu hình cho gói cụ thể.
Thông tin trong tệp README
có thể sẽ thay đổi tuỳ theo từng gói. Vì tất cả các tệp đều được viết bằng văn bản thuần túy nên chúng có thể được đọc bằng bất kỳ trình soạn thảo văn bản nào. Số lượng và loại tệp chính xác cũng sẽ phụ thuộc vào từng gói. Hãy kiểm tra một số thư mục để có cái nhìn tổng quan về nội dung của chúng.
Định vị Tệp
Lệnh locate
Một hệ thống Linux được xây dựng từ nhiều thư mục và tệp. Linux có nhiều công cụ để định vị một tệp cụ thể trong hệ thống. Cách nhanh nhất là sử dụng lệnh locate
.
locate
sẽ tìm kiếm trong cơ sở dữ liệu và sau đó xuất tất cả các tên khớp với chuỗi đã cho:
$ locate note /lib/udev/keymaps/zepto-znote /usr/bin/zipnote /usr/share/doc/initramfs-tools/maintainer-notes.html /usr/share/man/man1/zipnote.1.gz
Lệnh locate
cũng hỗ trợ việc sử dụng các ký tự đại diện (wildcard) và biểu thức chính quy; do đó, chuỗi tìm kiếm không nhất thiết phải khớp với toàn bộ tên của tệp bạn muốn tìm. Ta sẽ tìm hiểu thêm về biểu thức chính quy trong bài học sau.
Theo mặc định, locate
hoạt động như thể mẫu tìm kiếm (pattern) được bao quanh bởi các dấu hoa thị, vì vậy locate PATTERN
cũng giống như locate *PATTERN*
. Điều này cho phép bạn chỉ cần cung cấp các chuỗi con thay vì tên tệp chính xác. Hành vi này có thể được thay đổi bằng các tùy chọn khác nhau được giải thích trong trang hướng dẫn của locate
.
Vì locate
đang đọc từ cơ sở dữ liệu nên bạn có thể sẽ không tìm thấy tệp mà bạn đã tạo gần đây. Cơ sở dữ liệu được quản lý bởi một chương trình có tên updatedb
. Thông thường thì chương trình này được chạy định kỳ; nhưng nếu bạn có quyền gốc và cần cập nhật cơ sở dữ liệu ngay lập tức, bạn có thể tự mình chạy lệnh updatedb
bất kỳ lúc nào.
Lệnh find
find
là một công cụ phổ biến khác được sử dụng để tìm kiếm tệp. Lệnh này có cách tiếp cận khác so với lệnh locate
. Lệnh find
tìm kiếm đệ quy (tìm kiếm tự gọi) cây thư mục, bao gồm cả các thư mục con của nó. find
thực hiện tác vụ tìm kiếm như vậy ở mỗi lần gọi và không quản lý một cơ sở dữ liệu như locate
. Tương tự như locate
, find
cũng hỗ trợ các ký tự đại diện và biểu thức chính quy.
find
yêu cầu phải có ít nhất một đường dẫn để tìm kiếm.. Hơn nữa, cái gọi là biểu thức có thể được thêm vào để cung cấp tiêu chí lọc cho tệp nào sẽ hiển thị. Một ví dụ là biểu thức -name
sẽ tìm kiếm các tệp có một cái tên cụ thể:
~$ cd Downloads ~/Downloads $ find . -name thesis.pdf ./thesis.pdf ~/Downloads $ find ~ -name thesis.pdf /home/carol/Downloads/thesis.pdf
Lệnh find
đầu tiên sẽ tìm kiếm tệp trong thư mục Downloads
hiện tại, trong khi lệnh thứ hai sẽ tìm kiếm tệp trong thư mục chính của người dùng.
Lệnh find
rất phức tạp, do đó nó sẽ không được đề cập đến trong bài kiểm tra Linux Essentials. Tuy nhiên, nó là một công cụ rất mạnh mẽ và đặc biệt hữu ích trong thực tế.
Bài tập Hướng dẫn
-
Hãy sử dụng lệnh
man
để tìm hiểu chức năng của từng lệnh:Lệnh Mô tả ls
Hiển thị nội dung của một thư mục.
cat
cut
cd
cp
mv
mkdir
touch
wc
passwd
rm
rmdir
more
less
whereis
head
tail
sort
tr
chmod
grep
-
Hãy mở trang thông tin
ls
và xác định MENU.-
Bạn có những lựa chọn nào?
-
Hãy tìm ra tùy chọn cho phép bạn sắp xếp đầu ra theo thời gian sửa đổi.
-
-
Hãy hiển thị đường dẫn đến 3 tệp
README
đầu tiên. Hãy sử dụng lệnhman
để xác định tùy chọn chính xác cholocate
. -
Hãy tạo một tệp có tên
test
trong thư mục chính của bạn. Hãy tìm đường dẫn tuyệt đối của nó bằng lệnhlocate
. -
Bạn có ngay lập tức tìm thấy nó không? Bạn phải làm gì để
locate
có thể tìm thấy nó? -
Hãy tìm kiếm tệp
test
mà bạn đã tạo trước đó bằng cách sử dụng lệnhfind
. Bạn đã sử dụng cú pháp nào và đường dẫn tuyệt đối là gì?
Bài tập Mở rộng
-
Có một lệnh trong bảng trên không có trang hướng dẫn. Đó là lệnh nào và theo bạn thì tại sao nó lại không có trang hướng dẫn?
-
Sử dụng các lệnh trong bảng trên, hãy tạo cây tệp sau. Các tên bắt đầu bằng chữ hoa là Thư mục và tên viết thường là Tệp.
User ├── Documents | ├──Hello | | ├──hey2 | | ├──helloa | | └──ola5 | └──World | └──earth9 ├── Downloads | ├──Music | └──Songs | ├──collection1 | └──collection2 ├── Test | └── passa └── test
-
Hãy hiển thị lên màn hình thư mục làm việc hiện tại, bao gồm cả các thư mục con.
-
Hãy tìm kiếm trong cây tất cả các tệp kết thúc bằng một chữ số.
-
Hãy xoá toàn bộ cây thư mục bằng một lệnh duy nhất.
Tóm tắt
Trong bài học này, bạn đã học về:
-
Cách để nhận được trợ giúp
-
Cách sử dụng lệnh
man
-
Cách điều hướng trang hướng dẫn
-
Các phần khác nhau của trang hướng dẫn
-
Cách sử dụng lệnh
info
-
Cách điều hướng giữa các nút khác nhau
-
Cách tìm kiếm các tệp trong hệ thống
Các lệnh dùng trong bài tập:
man
-
Hiển thị một trang hướng dẫn.
info
-
Hiển thị một trang thông tin.
locate
-
Tìm kiếm các tệp có tên cụ thể trong cơ sở dữ liệu
locate
. find
-
Tìm kiếm trong hệ thống tệp các tên phù hợp với một bộ tiêu chí lựa chọn.
updatedb
-
Cập nhật cơ sở dữ liệu
locate
.
Đáp án Bài tập Hướng dẫn
-
Hãy sử dụng lệnh
man
để tìm hiểu chức năng của từng lệnh:Lệnh Mô tả ls
Hiển thị nội dung của một thư mục
cat
Ghép nối hoặc xem các tệp văn bản
cut
Xóa các phần khỏi tệp văn bản
cd
Thay đổi sang một thư mục khác
cp
Sao chép một tệp
mv
Di chuyển một tệp hoặc đổi tên
mkdir
Tạo một thư mục mới
touch
Tạo một tệp hoặc sửa đổi ngày và giờ sửa đổi lần cuối của một tệp hiện có
wc
Đếm số từ, dòng hoặc byte của một tệp
passwd
Thay đổi mật khẩu của người dùng
rm
Xóa một tệp
rmdir
Xóa một thư mục
more
Xem các tệp văn bản trên từng màn hình một
less
Xem các tệp văn bản, cho phép cuộn lên và xuống từng dòng hoặc từng trang một
whereis
Hiển thị đường dẫn tệp đến một chương trình được chỉ định và các tệp hướng dẫn có liên quan
head
Hiển thị một vài dòng đầu tiên của một tệp
tail
Hiển thị vài dòng cuối cùng của một tệp
sort
Sắp xếp một tệp theo thứ tự số hoặc bảng chữ cái
tr
Dịch hoặc xóa các ký tự của tệp
chmod
Thay đổi quyền của tệp
grep
Tìm kiếm trong một tệp
-
Hãy mở trang thông tin
ls
và xác định MENU.-
Bạn có những lựa chọn nào?
-
Tệp nào được liệt kê
-
Thông tin gì được liệt kê
-
Sắp xếp đầu ra
-
Chi tiết về sắp xếp phiên bản
-
Định dạng đầu ra chung
-
Định dạng dấu thời gian của tệp
-
Định dạng tên tệp
-
-
Hãy tìm ra tùy chọn cho phép bạn sắp xếp đầu ra theo thời gian sửa đổi.
-t
hoặc--sort=time
-
-
Hãy hiển thị đường dẫn đến 3 tệp
README
đầu tiên. Hãy sử dụng lệnhman
để xác định tùy chọn chính xác cholocate
.$ locate -l 3 README /etc/alternatives/README /etc/init.d/README /etc/rc0.d/README
-
Hãy tạo một tệp có tên
test
trong thư mục chính của bạn. Hãy tìm đường dẫn tuyệt đối của nó bằng lệnhlocate
.$ touch test $ locate test /home/user/test
-
Bạn có ngay lập tức tìm thấy nó không? Bạn phải làm gì để
locate
có thể tìm thấy nó?$ sudo updatedb
Tệp vừa mới được tạo, do đó nó không được ghi lại trong cơ sở dữ liệu.
-
Hãy tìm kiếm tệp
test
mà bạn đã tạo trước đó bằng cách sử dụng lệnhfind
. Bạn đã sử dụng cú pháp nào và đường dẫn tuyệt đối là gì?$ find ~ -name test
hoặc
$ find . -name test /home/user/test
Đáp án Bài tập Mở rộng
-
Có một lệnh trong bảng trên không có trang hướng dẫn. Đó là lệnh nào và theo bạn thì tại sao nó lại không có trang hướng dẫn?
Lệnh
cd
. Nó không có trang hướng dẫn vì nó là lệnh vỏ tích hợp sẵn. -
Sử dụng các lệnh trong bảng trên, hãy tạo cây tệp sau. Các tên bắt đầu bằng chữ hoa là Thư mục và tên viết thường là Tệp.
User ├── Documents | ├──Hello | | ├──hey2 | | ├──helloa | | └──ola5 | └──World | └──earth9 ├── Downloads | ├──Music | └──Songs | ├──collection1 | └──collection2 ├── Test | └── passa └── test
Giải pháp ở đây là sự kết hợp của các lệnh
mkdir
vàtouch
. -
Hãy hiển thị lên màn hình thư mục làm việc hiện tại, bao gồm cả các thư mục con.
$ ls -R
-
Hãy tìm kiếm trong cây tất cả các tệp kết thúc bằng một chữ số.
$ find ~ -name "*[0-9]" $ locate "*[0-9]"
-
Hãy xoá toàn bộ cây thư mục bằng một lệnh duy nhất.
$ rm -r Documents Downloads Test test