Học các lệnh bash trong hệ điều hành Linux. Danh sách chi tiết các thư mục. Bash Shell: Giới thiệu

Trên hầu hết các hệ điều hành Linux, bash là trình thông dịch dòng lệnh mặc định. Để xác định trình thông dịch hiện tại, hãy nhập lệnh sau:

$ echo $VỎ
/bin/bash

Ví dụ này sử dụngtrình thông dịch dòng lệnh bash. Có nhiều trình thông dịch lệnh khác. Để kích hoạt trình thông dịch khác, bạn có thể nhập tên của nó tại dòng lệnh (ksh, tcsh, csh, sh, bash, v.v.).

Hầu hết các hệ điều hành Linux đầy đủ tính năng đều cung cấp tất cả các trình thông dịch lệnh được mô tả ở đây. Nhưng trên các hệ điều hành nhỏ hơn, một hoặc hai trình thông dịch có thể được cung cấp.

Kiểm tra tính sẵn có của mặt hàng bạn quan tâmthông dịch viêndòng lệnh

nhất một cách đơn giảnĐể kiểm tra tính khả dụng của trình thông dịch lệnh quan tâm, hãy nhập tên của nó vào dòng lệnh. Nếu trình thông dịch đã khởi động thì nó sẽ có sẵn.

Có một số lý do để chọn vỏ thay thế.

  • Có kinh nghiệm làm việc trên các hệ thống UNIX System V (nhiều hệ thống sử dụng ksh theo mặc định) hoặc Sun Microsystems và các hệ thống UNIX Berkeley khác (thường sử dụng csh). Trong trường hợp này, việc sử dụng các thông dịch viêndòng lệnhsẽ thuận tiện hơn.
  • Nhu cầu chạy các tập lệnh được tạo cho một trình thông dịch lệnh cụ thể.
  • Khả năng của một lớp vỏ thay thế có thể thích hợp hơn. Ví dụ: một thành viên của nhóm người dùng Linux thích sử dụng ksh hơn vì anh ta không hài lòng với cách bash tạo bí danh.

Mặc dù hầu hết người dùng thích làm việc trong một shell nhưng các kỹ năng thu được sẽ giúp họ học cách làm việc trong các shell khác.thông dịch viên dòng lệnh , thỉnh thoảng nhìn vào hướng dẫn tham khảo(ví dụ: sử dụng lệnh manbash). Hầu hết mọi người sử dụng bash vì không có lý do gì để chuyển sang trình thông dịch khác.

Sử dụng Bash và ch

Tên bash là từ viết tắt của Bourne Again SHell. Chữ viết tắt này chỉ ra rằng bash kế thừa trình thông dịch Bourneshell (lệnh sh), được tạo bởi Steve Bourne của AT&TBell Labs. Brian Fox của Tổ chức Phần mềm Tự do đã tạo bash như một phần của Dự án GNU. Sau đó, sự phát triển được chuyển sang tay Chet Ramey tại Đại học Case Western Reserve.

Trình thông dịch bash chứa các tính năng được phát triển cho trình thông dịch sh và ksh trong các phiên bản đầu tiên của UNIX, cũng như một số tính năng của trình thông dịch csh.

Bạn có thể mong đợi rằng hầu hết các hệ thống Linux, ngoại trừ các hệ thống chuyên dụng (chẳng hạn như các hệ thống được nhúng hoặc khởi động từ ổ đĩa ngoài), bash là trình thông dịch mặc định. Trong các hệ thống chuyên biệt, có thể cần một trình thông dịch lệnh nhỏ hơn, điều này cũng hàm ý khả năng hạn chế.

Hầu hết các ví dụ trong nàybài báođược thiết kế để sử dụng bash.

Trình thông dịch bash có thể chạy trong nhiều chế độ khác nhau khả năng tương thích bằng cách bắt chước hành vi của các shell khác. Nó có thể bắt chước hoạt động của shell Bourne (sh) hoặc shell tuân thủ tiêu chuẩn POSK (bash -tích cực).

Do đó, bash có nhiều khả năng đọc thành công các tệp cấu hình và chạy các tập lệnh được viết riêng cho các shell khác.

Theo mặc định, tất cả các hệ điều hành Linux được cung cấp đều sử dụng trình thông dịch bash, ngoại trừ các hệ điều hành được khởi động từ phương tiện di động sử dụng trình thông dịch tro theo mặc định.

Sử dụng tcsh (và trình thông dịch csh trước đó)

Trình thông dịch lệnh tcsh là một triển khai mã nguồn mở của trình thông dịch Cshell (csh). Trình thông dịch csh do Bill Joy tạo ra và được sử dụng theo mặc định trên hầu hết các hệ thống UNIX của Berkeley (các hệ thống như vậy được phân phối bởi Sun Microsystems).

Nhiều tính năng của csh, chẳng hạn như phương pháp chỉnh sửa dòng lệnh và quản lý lịch sử lệnh, đã được triển khai trong tcsh và các shell khác. Giống như lệnh sh chạy trình thông dịch bash ở chế độ tương thích với sh, lệnh csh chạy trình thông dịch tcsh ở chế độ tương thích với csh.

Sử dụng trình thông dịch tro

Trình thông dịch tro là phiên bản nhẹ của trình thông dịch Berkeley UNIX sh. Nó không chứa nhiều tính năng cơ bản và không cung cấp các tính năng như lịch sử lệnh.

Trình thông dịch tro rất phù hợp để sử dụng trong các hệ thống nhúng có giới hạn tài nguyên hệ thống. TRONG hệ điều hành Trình thông dịch tro của FedoraCore 4 nhỏ hơn nhiều so với trình thông dịch bash.

Sử dụng zsh

Trình thông dịch zsh là một bản sao khác của trình thông dịch sh. Nó đáp ứng được yêu cầu Tiêu chuẩn POSIX(như bash), nhưng có các tính năng khác, bao gồm kiểm tra chính tả và cách tiếp cận khác để chỉnh sửa dòng lệnh. Trình thông dịch zsh là mặc định trong các hệ điều hành đầu tiên. Hệ thống MacOS X, nhưng trong hệ thống hiện đại Trình thông dịch mặc định là bash.

Bảng tóm tắt này bao gồm các chủ đề sau: giới thiệu về shell, điều hướng, các lệnh cơ bản, biến môi trường, trình kết nối, đường ống, chuyển hướng I/O, quyền và phím tắt.

Bash Shell: Giới thiệu

Shell, hay shell, là một chương trình, trong trường hợp của chúng tôi được gọi là “bash”, viết tắt của Bourne Again Shell. Shell chấp nhận các lệnh của bạn và chuyển chúng tới hệ điều hành. Để tương tác với hệ thống, các thiết bị đầu cuối được sử dụng, chẳng hạn như gnome-terminal, eterm, nxterm, v.v.

dẫn đường

Trong Linux, các tập tin và thư mục được sắp xếp theo thứ bậc, nghĩa là có một thư mục bắt đầu được gọi là thư mục gốc. Nó chứa các tập tin và thư mục con, từ đó chứa các tập tin và thư mục con của riêng chúng.

pwd

Lệnh pwd, viết tắt của in thư mục làm việc, hiển thị vị trí hiện tại trong cấu trúc thư mục.

đĩa CD

Lệnh cd cho phép bạn truy cập danh mục mới.

mkdir

Lệnh mkdir tạo một thư mục mới trong thư mục hiện tại.

Các lệnh cơ bản

người đàn ông

Lệnh man hiển thị hướng dẫn sử dụng lệnh. Ví dụ: lệnh sau sẽ hiển thị tất cả thông tin về lệnh cat:

$ người đàn ông mèo

con mèo

Lệnh cat đọc tệp được truyền dưới dạng đối số và in nội dung của nó kênh tiêu chuẩnđầu ra. Truyền nhiều tệp làm đối số sẽ in nội dung được nối của tất cả các tệp.

tiếng vang

Lệnh echo in các đối số của nó ra đầu ra tiêu chuẩn.

$ echo Xin chào thế giới Xin chào thế giới

Nếu bạn gọi echo mà không có đối số, một chuỗi trống sẽ được in ra.

cái đầu

Lệnh head đọc 10 dòng đầu tiên của bất kỳ văn bản nào được truyền vào và xuất chúng ra ống tiêu chuẩn. Số dòng hiển thị có thể thay đổi:

$head -50 test.txt

đuôi

Lệnh tail hoạt động tương tự lệnh head nhưng đọc các dòng từ cuối:

đuôi $ -50 test.txt

Bạn cũng có thể xem các dòng được thêm vào tệp trong thời gian thực bằng cờ -f:

$ tail -f test.txt

ít hơn

Lệnh less cho phép bạn điều hướng qua tệp hoặc đoạn văn bản được truyền theo cả hai hướng.

$ ít test.txt $ ps aux | ít hơn

Tìm hiểu thêm về mục đích của biểu tượng | sẽ được đề cập bên dưới trong phần lịch sử của lệnh.

Phím tắt thông dụngSự miêu tả
GDi chuyển đến cuối tập tin
gDi chuyển đến đầu tập tin
:50 Di chuyển đến dòng 50 của tập tin
qThoát ít hơn
/thuật ngữ tìm kiếmTìm kiếm chuỗi khớp với 'thuật ngữ tìm kiếm' bên dưới dòng hiện tại
/
?thuật ngữ tìm kiếmTìm một dòng khớp với 'thuật ngữ tìm kiếm' phía trên dòng hiện tại
? Di chuyển đến kết quả tìm kiếm phù hợp tiếp theo
hướng lênDi chuyển lên một dòng
xuốngDi chuyển xuống một dòng
trang lênDi chuyển lên một trang
trang dướiDi chuyển một trang xuống

ĐÚNG VẬY

Lệnh true luôn trả về 0 làm trạng thái đầu ra để biểu thị thành công.

SAI

Lệnh sai luôn trả về trạng thái đầu ra khác 0 để biểu thị lỗi.

$?

$? là một biến chứa trạng thái đầu ra của lần chạy lệnh cuối cùng. Trạng thái thường đề cập đến mã trả về của chương trình. 0 có nghĩa là chương trình thực hiện thành công, bất kỳ giá trị nào lớn hơn 0 phản ánh thực tế rằng một số lỗi đã xảy ra trong quá trình thực thi. Nhân tiện, đây là lý do tại sao trong bash 0 được coi là đúng và mọi thứ không phải 0 đều sai:

$true$echo$? 0 $ sai $ tiếng vang $? 1

grep

Lệnh grep tìm kiếm chuỗi được truyền trong tệp được chỉ định:

$ cat user.txt người dùng:mật khẩu sinh viên:123 người dùng:mật khẩu giáo viên:321 $ grep "student` file1.txt người dùng:mật khẩu sinh viên:123

grep cũng có thể chấp nhận nhiều tệp và biểu thức chính quy để tinh chỉnh định dạng văn bản.

lịch sử

Lệnh history hiển thị lịch sử dòng lệnh. Nó thường được sử dụng kết hợp với lệnh grep để tìm kiếm một lệnh cụ thể. Ví dụ: đoạn mã sau sẽ tìm thấy tất cả các lệnh có chứa chuỗi g++ :

$lịch sử | grep g++ 155 g++ file1.txt 159 g++ file2.txt

Ký hiệu | cũng được sử dụng ở đây. - đây được gọi là băng tải (ống). Nhờ nó, bạn có thể chuyển hướng đầu ra của một lệnh sang đầu vào của lệnh khác - do đó, trong ví dụ trên, tất cả lịch sử thường được xuất ra bởi lệnh lịch sử trực tiếp đến đầu ra cuối cùng sẽ được chuyển hướng đến grep làm đầu vào. Chúng ta sẽ không thấy đầu ra của lệnh history, nhưng chúng ta sẽ thấy đầu ra của lệnh grep.

Điều này có thể khá khó hiểu nếu không thực hành, vì vậy hãy tự mình thử nghiệm các lệnh ls , history , ps (được mô tả bên dưới) để chuyển hướng đầu ra của chúng sang grep , sed hoặc less chẳng hạn.

xuất khẩu

Lệnh xuất đặt các biến môi trường để truyền cho các tiến trình con. Ví dụ: đây là cách bạn có thể truyền một biến tên với giá trị sinh viên:

$ tên xuất = sinh viên

ps

Lệnh ps hiển thị thông tin về các tiến trình đang chạy.

$ ps PID TTY TIME CMD 35346 điểm/2 00:00:00 bash

Bốn yếu tố được đầu ra:

  • ID tiến trình (PID),
  • loại thiết bị đầu cuối (TTY),
  • thời gian vận hành quy trình (TIME),
  • tên của lệnh bắt đầu quá trình (CMD).

ôi

Lệnh awk tìm và thay thế văn bản trong tệp bằng cách sử dụng mẫu đã cho: awk "pattern (action)" test.txt

quên

Lệnh wget tải các tập tin từ Internet và đặt chúng vào thư mục hiện tại.

$ wget https://github.com/mikeizbicki/ucr-cs100

nc

ping

Lệnh ping kiểm tra kết nối mạng.

$ ping google.com PING google.com (74.125.224.34) 56(84) byte dữ liệu. 64 byte từ lax17s01-in-f2.1e100.net (74.125.224.34): icmp_req=1 ttl=57 time=7,82 ms --- thống kê ping của google.com --- 1 gói được truyền, 1 gói đã nhận, mất gói 0% , thời gian 8ms rtt min/avg/max/mdev = 7,794/8,422/10,792/0,699 ms

Số liệu thống kê ở cuối hiển thị số lượng kết nối được thực hiện trước khi lệnh hoàn thành và thời gian cần thiết để hoàn thành chúng.

git

Biến môi trường

Biến môi trường là các biến được đặt tên chứa các giá trị được sử dụng bởi một hoặc nhiều ứng dụng.

Biến PATH chứa danh sách các thư mục mà hệ thống tìm kiếm các tệp thực thi.

Biến HOME chứa đường dẫn đến thư mục chính của người dùng hiện tại.

Đầu nối

Trình kết nối cho phép bạn chạy nhiều lệnh cùng một lúc.

$ true && echo Xin chào Xin chào $ false || echo Xin chào Xin chào $ echo Xin chào ; ls Xin chào test.txt file1.txt file2.txt

Băng tải

Băng tải hoặc đường ống cho phép bạn kết nối các kênh đầu vào và đầu ra nhiều đội khác nhau. Trong ví dụ sau, đầu ra của lệnh ls sẽ được chuyển đến head và kết quả là chỉ 10 phần tử đầu tiên được in.

$ ls -l | cái đầu

Chuyển hướng I/O

Chuyển hướng đầu ra

Các ký hiệu > và >> được sử dụng để chuyển hướng đầu ra tiêu chuẩn.

Ví dụ: mã này sẽ chuyển đầu ra ls sang một tệp thay vì ra màn hình:

$ ls > files.txt $ cat files.txt file1.cpp sample.txt

Nếu tệp không tồn tại thì nó sẽ được tạo và nếu nó tồn tại thì nó sẽ bị ghi đè. Để tránh ghi đè, bạn nên sử dụng lệnh >> - nó sẽ thêm dữ liệu vào cuối tệp.

Chuyển hướng đầu vào

Để chuyển hướng đầu ra tiêu chuẩn, hãy sử dụng ký hiệu< . В следующем примере sort берет входные данные из файла, а не с клавиатуры:

$ cat files.txt c b $ sắp xếp< files.txt b c

Lệnh sắp xếp in nội dung của tệp ra màn hình vì chúng tôi chưa chuyển hướng đầu ra. Điều này có thể được thực hiện như thế này:

$sắp xếp< files.txt >file_sorted.txt

Chuyển hướng nâng cao

Việc thêm & vào > khiến cả đầu ra tiêu chuẩn và lỗi được chuyển hướng. Ví dụ: tệp test.cpp sẽ xuất dòng stdout thành cout và dòng stderr thành cerr .

$ g++ test.cpp $ ./a.out >& test.txt $ cat test.txt stdout stderr

Nếu bạn muốn xuất một bộ mô tả tệp cụ thể, bạn có thể gán số của nó cho > .

TênBộ mô tảSự miêu tả
stdin0 Đầu vào tiêu chuẩn
thiết bị xuất chuẩn1 Đầu ra tiêu chuẩn
lỗi chuẩn2 Đầu ra lỗi tiêu chuẩn

Ví dụ, đối với chuyển hướng stderr trong test.txt bạn cần làm như sau:

$ g++ test.cpp $ ./a.out 2> thiết bị xuất chuẩn test.txt $ cat test.txt thiết bị xuất chuẩn

Quyền truy cập

Lệnh ls -l hiển thị rất nhiều thông tin về quyền của từng file:

chmod

Lệnh chmod thay đổi quyền của tệp. Dưới đây là các tổ hợp cờ điển hình để thay đổi quyền của người dùng cụ thể:

Bạn có thể gọi chmod kèm theo mô tả những việc cần làm tập tin cụ thể. Ký hiệu - có nghĩa là loại bỏ quyền, ký hiệu + có nghĩa là thêm. Ví dụ sau sẽ làm cho tệp có thể đọc và ghi được bởi chủ sở hữu và nhóm:

$ chmod ug+rw test.txt $ ls -l test.txt -rw-rw---- 1 nhóm người dùng 1097374 Ngày 26 tháng 1 2:48 test.txt

Ngoài ra, chmod có thể được sử dụng với số bát phân, trong đó 1 là sự hiện diện của quyền và 0 là sự vắng mặt:

Rwx = 111 = 7 rw- = 110 = 6 r-x = 101 = 5 r-- = 100 = 4

Lệnh tiếp theo sẽ hoạt động giống như lệnh trước.

Bash là trình thông dịch ngôn ngữ lệnh cho các hệ thống tương thích UNIX. Thực thi các lệnh từ đầu vào tiêu chuẩn (chẳng hạn như cửa sổ đầu cuối) hoặc từ một tệp. Bash cũng bao gồm các phần mở rộng shell Korn và C hữu ích (tương ứng là các lệnh ksh và csh)

Cú pháp

đánh đập [tùy chọn]

Tùy chọn

-c sợi dây Nếu như thông số này có mặt thì lệnh sẽ được đọc từ dòng sợi dây. Nếu lệnh được truyền có các đối số bổ sung, chúng được coi là vị trí và bắt đầu ở mức $0. (Chương Tranh luận )
-Tôi Công việc tương tác của phiên dịch viên
-l Xem LỜI HỌP bên dưới
-r Hạn chế trong hoạt động của vỏ. Xem VỎ HẠN CHẾ
-S Nếu tham số này được chỉ định và tất cả các đối số bắt buộc bị thiếu, chúng sẽ được đọc từ đầu vào tiêu chuẩn
-D Danh sách tất cả các chuỗi được đặt trong dấu ngoặc kép có $ đứng đầu được in ra đầu ra tiêu chuẩn. Cần thiết để hoàn thành bản dịch. Sẽ không có lệnh nào được thực thi
[-+]0[shopt_option]

shopt_option - tùy chọn shell bổ sung. Đọc phần phụ LỆNH XÂY DỰNG SHELL. Nếu tham số này có mặt6 thì -0 ở phía trước nó sẽ được đặt tham số đã chỉ định, và +0 hủy nó. Nếu tham số shopt_option không được chỉ định thì +0 sẽ hiển thị danh sách thiết lập các thông số thành đầu ra tiêu chuẩn ở định dạng cho phép tái sử dụng làm đầu vào.

-- Báo hiệu kết thúc cài đặt tham số. Bất kỳ tham số nào sau nó đều được coi là tên tệp và đối số của tập lệnh. Tùy chọn "-" tương đương với "--".

Bash cũng cho phép tùy chọn nhiều ký tự. Chúng phải được mô tả trước các ký tự đơn để chúng được nhận dạng chính xác.

--trình gỡ lỗi Bắt đầu cấu hình trình gỡ lỗi trước khi chạy tập lệnh. Bật chế độ gỡ lỗi nâng cao (chi tiết hơn trong phần mô tả gỡ lỗi mở rộng) và chạy hàm theo dõi
(xem mô tả tham số -o).
--dump-po-string Tương đương với -D, nhưng đầu ra ở định dạng tệp localizations.po
--dump-chuỗi Hoàn toàn giống với -D
--giúp đỡ đầu mối
--init-file tài liệu
--rcfile tài liệu Nếu trình thông dịch được khởi chạy ở chế độ tương tác, nó sẽ thực thi các lệnh khởi tạo cho tệp đã chỉ định tài liệu, không phải từ tập tin chuẩn khởi tạo ~/.bashrc.
--đăng nhập Tương tự như -l
--không chỉnh sửa
--không có hồ sơ Không đọc các tệp cấu hình trên toàn hệ thống khi khởi động trình bao trình thông dịch /etc/hồ sơ và mọi tệp cài đặt cục bộ như ~/.bash_profile, ~/.bash_login hoặc ~/.profile . Theo mặc định, bash sử dụng chúng khi chạy ở chế độ đăng nhập (chi tiết hơn trong tham số INVOCATION).
--norc Không đọc hoặc thực thi tệp cài đặt cá nhân ~/.bashrc khi chạy tương tác. Theo mặc định, tham số này được đặt khi shell được khởi động bằng lệnh sh.
--posix Thay đổi hành vi mặc định của bash khi gặp lệnh không phải POSIX (để đảm bảo tính tương thích)
--hạn chế Các hành động của Shell bị giới hạn (đọc phần bên dưới về tham số RESTRICTED SHELL)
--dài dòng Tương tự như -v (đầu ra dài dòng)
--phiên bản In thông tin về phiên bản hiện tại của trình thông dịch ra đầu ra tiêu chuẩn

Tranh luận

Nếu sau khi xử lý các tham số vẫn còn các đối số không liên kết với tham số -c hoặc -s thì đối số đầu tiên được coi là tên của file chứa script chứa các lệnh. $0 là tên tệp và các đối số còn lại được viết theo vị trí. Bash đọc các lệnh của tập lệnh, thực thi chúng rồi thoát ra. Trạng thái thoát sẽ bằng trạng thái thoát của lệnh tập lệnh cuối cùng được thực thi. Nếu không có lệnh nào được thực thi, giá trị trả về sẽ là "0". Đầu tiên, một nỗ lực được thực hiện để mở tập lệnh từ thư mục hiện tại, nếu không có, tệp được chỉ định sẽ được tìm kiếm theo biến PATH cho các kịch bản.

cuộc gọi bash

đăng nhập vỏ bọc- nếu ký tự đầu tiên sau -- là 0 hoặc việc khởi chạy được thực hiện với tham số -login.

tương tác vỏ bọc -công việc tương tác. Nếu được khởi chạy mà không có đối số và không có tham số -c với thiết bị đầu vào/đầu ra tiêu chuẩn ở dạng terminal.app hoặc được khởi chạy với tham số -i.

Xử lý các tập tin khởi tạo. Nếu bất kỳ tệp tham số khởi tạo nào tồn tại nhưng không thể đọc được, bash trên Mac sẽ báo lỗi.

Khi bash được khởi động ở chế độ tương tác hoặc đăng nhập, các lệnh từ tệp sẽ được đọc và thực thi trước tiên /etc/hồ sơ (nếu có), thì sự hiện diện của tập tin sẽ được kiểm tra ~/.bash_profile , ~/.bash_login , Và ~/.profile và nếu chúng có sẵn và có thể truy cập được thì các lệnh từ chúng sẽ được thực thi theo thứ tự như chúng được liệt kê. Để bỏ qua quá trình xử lý các tệp trên, bạn có thể sử dụng tham số --không có hồ sơ

Nếu bash được khởi động ở chế độ đăng nhập, tệp sẽ được kiểm tra và nếu có, sẽ được thực thi ~/.bash_logout .

Nếu được khởi chạy ở chế độ tương tác, không có chế độ đăng nhập, thì trong quá trình khởi động, tệp sẽ được thực thi bổ sung~/.bashrc . Để tắt của tập tin này tham số được sử dụng --norc hoặc --rcfile tài liệu để thay thế tệp thực thi bằng tệp khác ( tài liệu).

Khi bash được khởi động bình thường, chẳng hạn như để thực thi một tập lệnh, nó sẽ xem xét biến môi trường toàn cầu BASH_ENV và sử dụng giá trị của nó để tìm tệp thực thi.

Khi bash được gọi bằng lệnh sh anh ấy cố gắng sử dụng nhiều nhất phiên bản cũđể đảm bảo khả năng tương thích với tiêu chuẩn POSIX. Khi được gọi ở chế độ tương tác hoặc ở chế độ --login, các tệp sẽ được đọc và thực thi tuần tự trước tiên/etc/hồ sơ ~/.profile , để cấm sử dụng các tệp này, hãy sử dụng tham số --không có hồ sơ. Nó cũng đọc giá trị của biến ENV một cách tương tác để sử dụng làm đường dẫn tìm tệp thực thi. Khi chạy với sh, tùy chọn khởi động --rcfile bị bỏ qua và không thể sử dụng được. Khi khởi chạy ở chế độ tiêu chuẩn, không có tệp cấu hình nào được sử dụng; trình thông dịch hoạt động ở chế độ POSIX.

Khi bash đang chạy ở chế độ posix bằng tùy chọn dòng lệnh --posix trình thông dịch sẽ tuân thủ tiêu chuẩn POSIX cho các tệp khởi tạo. Trong trường hợp này, chế độ tương tác sử dụng giá trị của biến ENV, biến này phải chứa tên của tệp khởi tạo; sẽ không có tệp khởi tạo nào khác được thực thi.

Phần này bao gồm các chủ đề sau:

  • Tương tác với shell và lệnh
  • Lệnh và chuỗi lệnh
  • Xác định, sử dụng và xuất các biến môi trường
  • Lịch sử lệnh và công cụ chỉnh sửa
  • Chạy các lệnh trong và ngoài biến môi trường PATH
  • Sử dụng thay thế lệnh
  • Áp dụng các lệnh đệ quy vào cây thư mục
  • Sử dụng trang man (trợ giúp) để tìm thông tin về lệnh

Phần này mô tả một số tính năng cơ bản của bash shell. Đặc biệt nhấn mạnh vào khả năng cần thiết để chứng nhận. Shell là một môi trường phong phú và chúng tôi hoan nghênh sự phát triển liên tục của nó. tự học. Nhiều cuốn sách đã được viết về trình thông dịch lệnh UNIX và Linux, và đặc biệt là bash.

trình thông dịch lệnh bash

Thông dịch viên đánh đập một trong một số trình thông dịch có sẵn trên Linux. Còn được gọi là B của chúng ta- Một nhận được shừ, theo tên của Stephen Bourne, người tạo ra phiên bản đầu tiên của trình thông dịch ( /bin/sh).Bash về cơ bản tương thích với sh, nhưng có nhiều cải tiến, cả về chức năng và khả năng lập trình. Nó bao gồm các khả năng của trình thông dịch Korn (ksh) và C (csh) và được thiết kế để trở thành trình thông dịch tuân thủ POSIX.

Trước khi bắt đầu học bash, hãy nhớ rằng thông dịch viên là chương trình nhận và thực thi lệnh. Nó cũng hỗ trợ khả năng lập trình, cho phép bạn soạn thảo các thiết kế phức tạp từ các lệnh thông thường. Những cấu trúc phức tạp này hoặc kịch bản có thể được lưu vào các tập tin, bản thân chúng là các lệnh mới. Hơn nữa, nhiều lệnh trên hệ thống Linux điển hình được triển khai dưới dạng tập lệnh shell.

Thông dịch viên chứa được xây dựng trong các lệnh như cd, break và exec. Các lệnh khác là bên ngoài.

Phiên dịch viên cũng sử dụng ba tiêu chuẩn chảy Vào/ra:

  • stdin Cái này đầu vào tiêu chuẩn, cung cấp đầu vào cho các lệnh.
  • thiết bị xuất chuẩn Cái này đầu ra tiêu chuẩn, hiển thị kết quả của lệnh trong cửa sổ terminal.
  • lỗi chuẩn Cái này luồng lỗi tiêu chuẩn, hiển thị các lỗi xảy ra khi chạy lệnh.

Luồng đầu vào cung cấp đầu vào cho các chương trình, thường được liên kết với bàn phím đầu cuối. In luồng đầu ra ký tự văn bản, thường là đến thiết bị đầu cuối. Thiết bị đầu cuối ban đầu là máy đánh chữ ASCII hoặc thiết bị đầu cuối video, nhưng bây giờ thường là một cửa sổ trên màn hình đồ họa. Phần còn lại của phần này sẽ tập trung vào chuyển hướng cấp cao.

Nếu bạn đang sử dụng hệ thống Linux không có GUI hoặc bạn đã mở cửa sổ terminal trong chế độ đồ họa, bạn sẽ thấy dấu nhắc lệnh tương tự như Liệt kê 1.

Liệt kê 1. Ví dụ về lời nhắc người dùng điển hình

$
ian@lyrebird:~>
$

Nếu bạn đăng nhập bằng root (hoặc superuser), lời nhắc của bạn có thể trông giống như Liệt kê 2.

Liệt kê 2. Các ví dụ nhắc nhở về root hoặc superuser

#
chim lia:~ #
#

Người dùng root có quyền lực đáng kể, vì vậy hãy thận trọng khi sử dụng nó. Nếu bạn có quyền root, hầu hết các lời nhắc đều bắt đầu bằng dấu thăng (#). Lời nhắc dành cho người dùng thông thường thường bắt đầu bằng một ký tự khác, thường là ký hiệu đô la ($). Lời mời của bạn có thể khác với các ví dụ trong hướng dẫn này. Lời nhắc của bạn có thể bao gồm tên người dùng, tên máy, thư mục hiện tại, ngày hoặc giờ lời nhắc được in, v.v.

Một số quy ước của hướng dẫn này

Hướng dẫn thi LPI 101 và 102 của devWorks bao gồm mã ví dụ từ các hệ thống Linux thực, sử dụng lời nhắc mặc định cho các hệ thống đó. Trong trường hợp của chúng tôi, lời nhắc của người dùng root bắt đầu bằng #, vì vậy bạn có thể phân biệt nó với lời nhắc của người dùng thông thường, bắt đầu bằng dấu $. Quy ước này giống như quy ước được sử dụng trong các cuốn sách về chủ đề này. Hãy xem kỹ dấu nhắc shell trong mỗi ví dụ.

Lệnh và trình tự

Bạn đang ở trong trình thông dịch lệnh, hãy xem bây giờ bạn có thể làm gì. Chức năng chính của trình thông dịch lệnh là nó thực thi các lệnh của bạn thông qua đó bạn tương tác với hệ thống Linux. Trên hệ thống Linux (và UNIX), các lệnh bao gồm tên lệnh, các tùy chọn và tham số. Một số lệnh không có tùy chọn cũng như tham số, một số lệnh khác có tùy chọn nhưng không có tham số, trong khi những lệnh khác vẫn không có tùy chọn cũng như tham số.

Nếu một dòng chứa ký tự # thì tất cả các ký tự tiếp theo trong đó sẽ bị bỏ qua. Do đó, ký hiệu # có thể có nghĩa là bắt đầu nhận xét hoặc lời mời đến người dùng. Giải thích thêm sẽ rõ ràng từ bối cảnh.

Đội Echo

Lệnh echo in danh sách các đối số của nó tới thiết bị đầu cuối như trong Liệt kê 3.

Liệt kê 3. Ví dụ về lệnh echo

$ tiếng vang Lời
Từ
$ echo Và câu
Và một lời đề nghị
$ echo Các khoảng trắng đã đi đâu?
Các không gian đã đi đâu?
$ echo "Không gian đã đến rồi." # và bình luận
Và đây là những không gian.

Trong ví dụ thứ ba của Liệt kê 3, tất cả khoảng trắng giữa các từ trong đầu ra lệnh có cùng kích thước, một khoảng trắng. Để tránh điều này, bạn cần đặt chuỗi trong dấu ngoặc kép, sử dụng dấu ngoặc kép (“) hoặc dấu ngoặc đơn (‘). Bash sử dụng các ký tự phân cách như dấu cách, tab và ký hiệu dòng mớiđể chia chuỗi đầu vào thành các mã thông báo, sau đó chuyển cho nhóm của bạn. Việc đặt một chuỗi trong dấu ngoặc kép sẽ ngăn chặn sự phân tách của nó và do đó nó là một mã thông báo duy nhất. Trong ví dụ trên, mỗi token sau tên lệnh là một tham số nên chúng ta lần lượt có 1, 2, 4 và 1 tham số.

Lệnh echo có một số tùy chọn. Thông thường echo thêm ký tự dòng mới sau đầu ra của nó. Sử dụng tùy chọn -n để nó không thêm ký tự dòng mới. Sử dụng tùy chọn -e để lệnh diễn giải các chuỗi thoát.

Trình tự thoát và ngắt dòng

Có một vấn đề nhỏ khi sử dụng dấu gạch chéo ngược trong bash. Khi ký tự dấu gạch chéo ngược (\) không được trích dẫn, chính nó đóng vai trò là một chuỗi thoát cho bash, giữ nguyên ý nghĩa của ký tự tiếp theo. Điều này là cần thiết đối với các siêu ký tự đặc biệt mà chúng ta sẽ xem xét sau. Có một ngoại lệ đối với quy tắc này: dấu gạch chéo ngược theo sau là dòng mới khiến bash nuốt cả hai ký tự và coi chuỗi này là yêu cầu tiếp tục dòng. Điều này có thể hữu ích khi chia dòng dài, đặc biệt là với các tập lệnh.

Để các chuỗi được mô tả ở trên được xử lý chính xác bằng lệnh echo hoặc một trong nhiều lệnh khác sử dụng các ký tự điều khiển thoát tương tự, bạn phải trích dẫn các chuỗi thoát hoặc đưa chúng vào chuỗi được trích dẫn hoặc sử dụng dấu gạch chéo ngược khác để có được đúng rồi. Liệt kê 4 chứa các ví dụ về các cách sử dụng khác nhau của \.

Liệt kê 4. Ví dụ về việc sử dụng echo

$ echo -n Không có dòng mới
Không có dòng mới$ echo -e "Không có dòng mới\c"
Không có dòng mới$ echo "Dòng bạn đã nhấp vào
> Nhập phím"
Dòng nơi bạn nhấp vào
Nhập phím
$ echo -e "Dòng có ký tự thoát dòng mới"
Chuỗi có ký tự thoát
dòng mới
$ echo "Dòng có ký tự thoát dòng mới, nhưng không có tùy chọn -e"
Một chuỗi có ký tự thoát dòng mới nhưng không có tùy chọn -e
$ echo -e Siêu ký tự có dấu gạch chéo kép\\n\\tbackslash
Siêu ký tự có đôi
dấu gạch chéo ngược
$ echo Dấu gạch chéo ngược \
> theo sau là Enter \
> phục vụ như một yêu cầu để tiếp tục dòng.
Dấu gạch chéo ngược theo sau là Enter đóng vai trò như một yêu cầu để tiếp tục dòng.

Lưu ý rằng bash hiển thị dấu nhắc đặc biệt (>) khi bạn nhập một chuỗi có dấu ngoặc kép không kết thúc. Dòng đầu vào của bạn bao gồm dòng thứ hai và bao gồm ký tự dòng mới.

Siêu ký tự Bash và câu lệnh điều khiển

Bash bao gồm một số ký tự mà khi không được trích dẫn cũng dùng để phân chia chuỗi đầu vào thành các từ. Ngoài dấu cách, các ký hiệu như vậy là '|', '&', ';', '(', ')', '<’, и ‘>'. Chúng tôi sẽ thảo luận chi tiết hơn về một số ký hiệu này trong các phần khác của hướng dẫn này. Hiện tại, hãy lưu ý rằng nếu bạn muốn bao gồm một siêu ký tự như một phần của văn bản thì nó phải được đặt trong dấu ngoặc kép hoặc trước dấu gạch chéo ngược (\) như trong Liệt kê 4.

Dòng mới và các siêu ký tự tương ứng hoặc các cặp siêu ký tự cũng đóng vai trò là câu lệnh điều khiển. Các ký hiệu như vậy là '||', '&&', '&', ';', ';;', '|' '(', Và ')'. Một số câu lệnh điều khiển này cho phép bạn tạo chuỗi hoặc danh sách lệnh.

Chuỗi lệnh đơn giản nhất bao gồm hai lệnh được phân tách bằng dấu chấm phẩy (;). Mỗi lệnh tiếp theo được thực hiện sau lệnh trước đó. Trong bất kỳ môi trường lập trình nào, các lệnh trả về một mã cho biết chương trình đã hoàn thành bình thường hay bị lỗi; Các lệnh Linux thường trả về 0 nếu thành công và khác 0 nếu không thành công. Bạn có thể thực hiện xử lý có điều kiện bằng cách sử dụng toán tử điều khiển && và ||. Nếu bạn tách hai lệnh bằng toán tử điều khiển &&, lệnh thứ hai sẽ chỉ được thực thi nếu lệnh đầu tiên trả về 0. Nếu bạn phân tách các lệnh bằng || thì lệnh thứ hai sẽ chỉ được thực thi nếu lệnh đầu tiên trả về giá trị khác 0. Liệt kê 5 chứa một số chuỗi lệnh sử dụng lệnh echo. Những ví dụ này không thú vị lắm vì echo trả về 0, nhưng chúng ta sẽ xem xét nhiều ví dụ hơn khi chúng ta học cách sử dụng nhiều lệnh hơn.

Liệt kê 5. Các chuỗi lệnh

$ dòng echo 1; dòng echo 2; tiếng vang dòng 3
dòng 1
dòng 2
dòng 3
$ echo dòng 1&&echo dòng 2&&echo dòng 3
dòng 1
dòng 2
dòng 3
$ echo dòng 1||echo dòng 2; tiếng vang dòng 3
dòng 1
dòng 3

Bạn có thể thoát khỏi shell bằng lệnh exit. Ngoài ra, bạn có thể chỉ định mã thoát làm tham số. Nếu bạn đang làm việc với trình thông dịch lệnh trong cửa sổ terminal ở chế độ đồ họa, thì trong trường hợp này nó sẽ chỉ đóng lại. Tương tự, nếu bạn kết nối với một hệ thống từ xa bằng ssh hoặc telnet (chẳng hạn), kết nối sẽ thất bại. Trong trình thông dịch bash, bạn cũng có thể nhấn Ctrl và d để thoát.

Hãy xem xét một tuyên bố kiểm soát khác. Nếu bạn đặt một lệnh hoặc danh sách các lệnh trong dấu ngoặc đơn, lệnh hoặc chuỗi lệnh đó sẽ được thực thi trong bản sao của shell, do đó lệnh thoát sẽ thoát khỏi bản sao của shell chứ không phải từ shell mà bạn đang chạy. khoảnh khắc này. Liệt kê 6 chứa ví dụ đơn giản cùng với && và ||.

Liệt kê 6. Shell và chuỗi lệnh

$ (echo Trong bản sao của trình thông dịch; thoát 0) && echo OK || echo Lối thoát lỗi
Trong một bản sao của trình thông dịch
ĐƯỢC RỒI
$ (echo Trong bản sao của trình thông dịch; thoát 4) && echo OK || echo Lối thoát lỗi
Trong một bản sao của trình thông dịch
Lối thoát xấu

Hãy theo dõi để biết thêm các lệnh trong hướng dẫn này.

Biến môi trường

Khi chạy bash, bạn được bao quanh bởi một tập hợp các cài đặt tạo nên môi trường của bạn, chẳng hạn như định dạng lời nhắc, tên thư mục chính, thư mục làm việc, tên trình thông dịch, các tệp bạn đã mở, các hàm bạn đã xác định, v.v. Môi trường của bạn bao gồm nhiều biến mà cả bạn và bash đều có thể đặt. Bash cũng cho phép bạn tạo các biến shell mà bạn có thể xuất sang môi trường của mình để sử dụng cho các tiến trình khác đang chạy trong trình thông dịch hoặc bởi các trình thông dịch khác mà bạn có thể khởi chạy từ trình thông dịch hiện tại.

Cả biến môi trường và biến shell đều có tên. Bạn có thể tham chiếu đến giá trị của một biến bằng cách đặt dấu ‘$’ trước tên biến. Một số biến môi trường bash phổ biến nhất được liệt kê trong Bảng 4.

  • NGƯỜI DÙNG Tên người dùng đã đăng nhập
  • UID ID kỹ thuật số của người dùng đã đăng nhập
  • TRANG CHỦ Thư mục chính của người dùng
  • P.W.D. Thư mục làm việc hiện tại
  • VỎ BỌC Tên vỏ
  • $ ID tiến trình (hoặc PID) của quy trình bash (hoặc quy trình khác)
  • PPID ID của quá trình sinh ra quá trình này(nghĩa là ID của tiến trình gốc)
  • ? Mã thoát lệnh cuối cùng

Trong Liệt kê 7 bạn có thể thấy một số biến bash.

Liệt kê 7. Biến môi trường và shell

$ echo $ NGƯỜI DÙNG $UID
ian 500
$ echo $SHELL $HOME $PWD
/bin/bash /home/ian /home/ian
$ (thoát 0);echo $?;(thoát 4);echo $?
0
4
$ echo $$ $PPID
30576 30575

Bạn có thể tạo hoặc đặt biến shell bằng cách nhập dấu bằng (=) ngay sau tên biến. Các biến có phân biệt chữ hoa chữ thường, vì vậy var1 và VAR1 là hai biến khác nhau. Theo quy ước, các biến, đặc biệt là các biến xuất, được viết bằng chữ in hoa, nhưng đây không phải là yêu cầu bắt buộc. Chính thức, $$ và $? là tham số shell, không phải biến. Bạn có thể tham chiếu chúng nhưng không được gán giá trị.

Khi tạo một biến shell, bạn thường muốn xuất biến đó ra môi trường để nó có sẵn cho các tiến trình khác mà bạn khởi chạy từ shell. Các biến bạn xuất không có sẵn cho trình thông dịch chính. Để xuất một biến, hãy sử dụng lệnh xuất. Để thuận tiện, bạn có thể chỉ định giá trị và xuất biến trong một bước.

Để minh họa việc gán và xuất, hãy tạo một bash khác từ trình thông dịch bash hiện tại, sau đó khởi chạy trình thông dịch Korn từ bash đã tạo (ksh). Chúng ta sẽ sử dụng lệnh ps để hiển thị thông tin về các tiến trình đang chạy. Chúng ta sẽ tìm hiểu thêm về lệnh ps khi khám phá khái niệm về trạng thái quy trình ở phần sau của hướng dẫn này.

Không sử dụng bash?

Bash là trình thông dịch mặc định trên nhiều bản phân phối Linux. Nếu bạn không phải là người dùng bash, bạn có thể xem xét các cách sau để thực hành sử dụng bash.

  • Sử dụng lệnh
    chsh -s /bin/bash
    để thay đổi trình thông dịch mặc định. Những thay đổi sẽ có hiệu lực vào lần đăng nhập tiếp theo.
  • Đội
    su – $USER -s /bin/bash
    sẽ tạo một quy trình khác sẽ là con của trình thông dịch hiện tại của bạn. Quá trình mới sẽ bắt đầu quá trình đăng nhập bằng bash shell.
  • Tạo người dùng bash để chuẩn bị cho kỳ thi LPI.

Liệt kê 8. Biến môi trường và shell

$ ps -p $$ -o "pid ppid cmd"
CMD PPID
30576 30575 -bash
$bash

CMD PPID
16353 30576 phản hồi
$ VAR1=var1
$VAR2=var2
$xuất VAR2
$ xuất VAR3=var3
$VAR2 $VAR3
var1 var2 var3
$ echo $VAR1 $VAR2 $VAR3 $SHELL
var1 var2 var3 /bin/bash
$ksh
$ ps -p $$ -o "pid ppid cmd"
CMD PPID
16448 16353 ksh
$ xuất VAR4=var4
$ echo $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
var2 var3 var4 /bin/bash
$ thoát
$ $ echo $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
var1 var2 var3 /bin/bash
$ ps -p $$ -o "pid ppid cmd"
CMD PPID
16353 30576 phản hồi
$ thoát
$ ps -p $$ -o "pid ppid cmd"
CMD PPID
30576 30575 -bash
$ echo $VAR1 $VAR2 $VAR3 $VAR4 $SHELL
/bin/bash

Ghi chú:

  1. Ở đầu chuỗi này, trình thông dịch bash có PID là 30576.
  2. Trình thông dịch bash thứ hai có PID là 16353 và PID gốc của nó là 30576, tức là bash gốc.
  3. Chúng tôi đã tạo các biến VAR1, VAR2 và VAR3 trong phiên bản thứ hai của bash, nhưng chỉ xuất VAR2 và VAR3.
  4. Trong trình thông dịch Korn, chúng tôi đã tạo VAR4. Lệnh echo chỉ hiển thị các giá trị của VAR2, VAR3 và VAR4 và xác nhận rằng VAR1 không được xuất. Bạn có ngạc nhiên không khi giá trị của biến SHELL không thay đổi mặc dù lời nhắc đã thay đổi? Bạn không thể luôn dựa vào SHELL để cho bạn biết bạn đang chạy trình thông dịch nào, nhưng lệnh ps sẽ cho bạn biết chính xác đó là gì. Lưu ý rằng ps đặt dấu gạch nối (-) trước phiên bản bash đầu tiên để cho chúng tôi biết nó là gì vỏ nguồn.
  5. Trong phiên bản thứ hai của bash, chúng ta có thể xem VAR1, VAR2 và VAR3.
  6. Cuối cùng, khi chúng ta quay lại trình thông dịch ban đầu, không có một biến nào tồn tại trong đó.

Trước đó chúng ta đã thảo luận về khả năng sử dụng cả dấu ngoặc đơn và dấu ngoặc kép. Có một sự khác biệt đáng kể giữa chúng. Trình thông dịch thực hiện thay thế các biến shell giữa các dấu ngoặc kép ($), nhưng không thực hiện thay thế nếu sử dụng dấu ngoặc đơn ('). Trong ví dụ trước, chúng ta đã tạo một phiên bản trình thông dịch mới từ một phiên bản khác và có định danh mới quá trình. Sử dụng tùy chọn -c bạn có thể chuyển lệnh cho một trình thông dịch khác, trình thông dịch này sẽ thực thi lệnh và trả về. Nếu bạn truyền một chuỗi dưới dạng lệnh trong dấu ngoặc đơn thì phiên bản thứ hai của trình thông dịch sẽ loại bỏ chúng và xử lý chuỗi đó. Khi sử dụng dấu ngoặc kép, sự thay thế biến xảy ra trước đó chuỗi được truyền như thế nào nên kết quả có thể khác với những gì bạn mong đợi. Trình thông dịch và lệnh sẽ tạo ra một quy trình có PID riêng. Liệt kê 9 minh họa các khái niệm này. PID của trình thông dịch bash gốc có phông chữ khác.

Liệt kê 9. Dấu ngoặc kép và các biến shell

$ echo "$SHELL" "$SHELL" "$$" "$$"
/bin/bash $SHELL 19244 $$
$ bash -c "echo Mở rộng trong cha mẹ $$ $PPID"
Mở rộng trong cha mẹ 19244 19243
$ bash -c "echo Mở rộng ở con $$ $PPID"
Mở rộng ở con 19297 19244

Cho đến bây giờ, tất cả các biến của chúng tôi đều kết thúc bằng dấu cách, vì vậy rõ ràng tên biến kết thúc ở đâu. Trên thực tế, tên biến chỉ có thể bao gồm các chữ cái, số hoặc dấu gạch dưới. Trình thông dịch biết rằng tên biến sẽ kết thúc ngay khi gặp một ký tự khác. Đôi khi cần phải sử dụng các biến trong các biểu thức mà ý nghĩa của chúng có thể mơ hồ. Trong những trường hợp như vậy, bạn có thể sử dụng dấu ngoặc nhọn để phân tách tên biến như trong Liệt kê 10.

Liệt kê 10. Sử dụng dấu ngoặc nhọn với tên biến

$ echo "-$HOME/abc-"
-/home/ian/abc-
$ echo "-$HOME_abc-"
--
$ echo "-$(HOME)_abc-"
-/home/ian_abc-

lệnh env

Lệnh env, không có bất kỳ tùy chọn hoặc tham số nào, hiển thị các biến môi trường hiện tại. Bạn cũng có thể sử dụng nó để chạy lệnh trong môi trường được xác định trước. Tùy chọn -i (hoặc chỉ -) sẽ xóa môi trường hiện tại trước khi thực hiện lệnh, trong khi tùy chọn -u sẽ xóa các biến môi trường mà bạn không muốn truyền vào.

Liệt kê 11 chứa một phần đầu ra của lệnh env không có bất kỳ tham số nào, theo sau là ba ví dụ chạy các trình thông dịch khác nhau mà không có môi trường cha. Vui lòng xem xét chúng một cách cẩn thận trước khi chúng ta thảo luận về chúng.

Liệt kê 11. lệnh env

$env
HOSTNAME=echidna
HẠN=xterm
VỎ=/bin/bash
LỊCH SỬ=1000
SSH_CLIENT=9.27.89.137 4339 22
SSH_TTY=/dev/pts/2
NGƯỜI DÙNG=ian
...
_=/bin/env
OLDPWD=/usr/src
$ env -i bash -c "echo $SHELL; env"
/bin/bash
PWD=/nhà/ian
SHLVL=1
_=/bin/env
$ env -i ksh -c "echo $SHELL; env"
_=/bin/env
PATH=/bin:/usr/bin
$ env -i tcsh -c "echo $SHELL; env"
SHELL: Biến không xác định.

Lưu ý rằng bash đặt biến SHELL nhưng không xuất nó ra môi trường, mặc dù bash đã tạo ba biến khác trong môi trường. Trong ví dụ ksh, chúng tôi có hai biến môi trường, nhưng nỗ lực hiển thị giá trị của biến SHELL dẫn đến một dòng trống. Cuối cùng, tcsh không tạo bất kỳ biến môi trường nào và gây ra lỗi khi chúng tôi cố gắng lấy giá trị của biến SHELL.

Đặt và đặt lại các biến

Liệt kê 11 cho thấy cách các trình thông dịch hoạt động khi xử lý các biến và môi trường. Mặc dù hướng dẫn này tập trung vào bash nhưng bạn nên lưu ý rằng không phải tất cả các trình thông dịch đều hành xử giống nhau. Hơn nữa, trình thông dịch hoạt động khác nhau tùy thuộc vào việc chúng có phải là shell gốc hay không. Hiện tại, chúng tôi sẽ chỉ nói rằng shell ban đầu là shell bạn nhận được khi đăng nhập; bạn có thể chạy các shell khác để chúng hoạt động giống như shell ban đầu nếu bạn muốn. Ba trình thông dịch trong ví dụ trên, được khởi chạy bằng lệnh env -i, không phải là trình thông dịch gốc. Hãy thử chuyển tùy chọn -l để thấy sự khác biệt khi chạy shell gốc.

Hãy xem nỗ lực của chúng tôi trong việc hiển thị giá trị của biến SHELL trong các shell này:

  • Khi bash bắt đầu, nó đặt biến SHELL nhưng không tự động xuất nó ra môi trường.
  • Khi ksh bắt đầu, nó không đặt biến SHELL. Tuy nhiên, tham chiếu đến biến môi trường không xác định tương đương với tham chiếu đến giá trị trống.
  • Khi tcsh khởi động, nó không đặt giá trị của biến SHELL. Trong trường hợp này, hành vi mặc định khác với ksh (và bash) và dẫn đến lỗi được tạo ra khi chúng tôi cố gắng truy cập vào biến.

Bạn có thể sử dụng lệnh unset để xóa một biến và xóa nó khỏi danh sách các biến shell. Nếu một biến được xuất ra môi trường, biến đó cũng sẽ bị xóa khỏi môi trường. Bạn có thể sử dụng lệnh set để kiểm soát hành vi của bash (hoặc các trình thông dịch khác). Set là một lệnh tích hợp trong trình thông dịch, vì vậy các tùy chọn phụ thuộc vào trình thông dịch cụ thể. Trong bash, tùy chọn -u yêu cầu bash không tạo ra lỗi khi đề cập đến các biến không xác định mà xử lý chúng như thể chúng là các giá trị trống. Bạn có thể thêm nhiều tùy chọn khác nhau để thiết lập bằng – và tắt chúng bằng dấu +. Bạn có thể hiển thị danh sách các tùy chọn đã đặt hiện tại bằng echo $-.

Liệt kê 12. Bỏ đặt và đặt

$echo$-
anh ấyBH
$ tiếng vang $VAR1
$set -u;echo$-
anhuBH
$ tiếng vang $VAR1
bash: VAR1: biến không liên kết
$VAR1=v1
$VAR1=v1;tiếng vang $VAR1
v1
$unset VAR1;echo $VAR1
bash: VAR1: biến không liên kết
$ set +u;echo $VAR1;echo $-
anh ấyBH

Bạn có thể sử dụng lệnh set mà không cần bất kỳ tùy chọn nào, lệnh này sẽ hiển thị tất cả các biến shell của bạn và giá trị của chúng (nếu có). Ngoài ra còn có một lệnh khác, khai báo, mà bạn có thể tạo, xuất và hiển thị các giá trị của biến shell. Bạn có thể tìm hiểu về các tùy chọn khác cho lệnh đặt và khai báo trong trang man. Chúng ta sẽ xem xét các trang man sau trong phần này.

lệnh thực thi

Lệnh cuối cùng chúng ta xem xét trong phần này là exec. Bạn có thể sử dụng lệnh exec để chạy một lệnh khác sẽ thay thế trình thông dịch hiện tại. Liệt kê 13 tạo ra một cá thể bash và sau đó sử dụng exec để thay thế nó bằng trình thông dịch Korn. Sau khi thoát khỏi trình thông dịch Korn, bạn sẽ được đưa trở lại trình thông dịch bash ban đầu (PID 22985 trong ví dụ này).

Liệt kê 13. Sử dụng exec

$ tiếng vọng $$
22985
$bash
$ tiếng vọng $$
25063
$ thực thi ksh
$ tiếng vọng $$
25063
$ thoát
$ tiếng vọng $$
22985

Lịch sử đội

Nếu bạn đã gõ các lệnh khi đọc hướng dẫn, bạn có thể nhận thấy rằng hầu hết các lệnh tương tự đều được sử dụng thường xuyên. Tin tốt là bash có thể lưu trữ lịch sử các lệnh của bạn. Theo mặc định, lịch sử được bật. Bạn có thể tắt nó bằng lệnh set +o history và kích hoạt nó bằng lệnh set -o history. Biến môi trường HISTSIZE cho bash biết có bao nhiêu hàng cần lưu trữ. Một tập hợp các thuộc tính khác xác định hành vi và hoạt động của câu chuyện. Xem trang bash man để biết chi tiết.

Nếu bạn gõ các lệnh khi đọc hướng dẫn, bạn có thể nhận thấy rằng hầu hết các lệnh tương tự đều được sử dụng thường xuyên. Tin vui là bash có thể lưu trữ lịch sử các lệnh của bạn. Theo mặc định, lịch sử được bật. Bạn có thể tắt nó bằng lệnh set +o history và kích hoạt nó bằng lệnh set -o history. Biến môi trường HISTSIZE cho bash biết có bao nhiêu hàng cần lưu trữ. Một tập hợp các thuộc tính khác xác định hành vi và hoạt động của câu chuyện. Xem trang bash man để biết chi tiết.

Dưới đây là một số lệnh bạn có thể sử dụng để làm việc với lịch sử:

lịch sử
Hiển thị toàn bộ lịch sử
lịch sửN
Hiển thị N dòng cuối cùng trong lịch sử của bạn
lịch sử -dN
Xóa dòng N khỏi lịch sử của bạn; cái này có thể được sử dụng nếu chẳng hạn bạn muốn xóa một dòng chứa mật khẩu
!!
Lệnh cuối cùng của bạn đã được nhập
!N
Đội lịch sử thứ N
!-N
Một lệnh cách lệnh hiện tại trong lịch sử N bước (tương đương!-1!!)
!#
Lệnh hiện tại bạn đang gõ
!sợi dây
Lệnh gần đây nhất bắt đầu bằng chuỗi
!?sợi dây?
Lệnh gần đây nhất có chứa chuỗi

Bạn có thể sử dụng dấu hai chấm (:) theo sau là giá trị cụ thểđể truy cập hoặc thay đổi một lệnh trong lịch sử. Liệt kê 14 cho thấy một số khả năng lịch sử.

Liệt kê 14. Quản lý lịch sử

$ tiếng vọng $$
22985
$ env -i bash -c "echo $$"
1542
$ !!
env -i bash -c "echo $$"
1555
$!ec
tiếng vang $$
22985
$ !en:s/$$/$PPID/
env -i bash -c "echo $PPID"
22985
$lịch sử 6
1097 tiếng vang $$
1098 env -i bash -c "echo $$"
1099 env -i bash -c "echo $$"
1100 tiếng vang $$
1101 env -i bash -c "echo $PPID"
1102 lịch sử 6
$ lịch sử -d1100

Các lệnh trong Liệt kê 14 thực hiện như sau:

1. Xuất PID của trình thông dịch hiện tại
2. Chạy lệnh echo trong phiên bản mới của trình thông dịch và in PID của nó
3. Chạy lệnh cuối cùng
4. Chạy lại lệnh bắt đầu bằng ‘ec’; lệnh đầu tiên trong ví dụ này sẽ chạy
5. Chạy lệnh cuối cùng bắt đầu bằng 'en', nhưng thay thế '$PPID' bằng '$$' để PID gốc sẽ thực sự được hiển thị
6. Hiển thị 6 lệnh lịch sử gần nhất
7. Xóa lệnh số 1100, echo lệnh cuối cùng

Bạn có thể chỉnh sửa câu chuyện một cách tương tác. Trình thông dịch bash sử dụng thư viện readline để xử lý lệnh và chỉnh sửa lịch sử. Theo mặc định, các phím và tổ hợp phím được sử dụng để điều hướng qua lịch sử hoặc các dòng chỉnh sửa giống với các phím và tổ hợp phím được sử dụng trong trình soạn thảo GNU Emacs. Trong Emacs, các tổ hợp phím thường được viết dưới dạng C-x hoặc M-x, trong đó x là phím thông thường và C và M lần lượt là phím Control và Meta. Trên PC thông thường, phím Ctrl tương ứng với phím Control Emacs và phím Alt tương ứng với phím Meta. Bạn có thể tìm thấy chức năng bổ sung cũng như khả năng định cấu hình các tùy chọn bằng tệp khởi tạo dòng đọc (thường là inputrc trong thư mục chính của bạn) trong các trang man.

Nếu bạn muốn kiểm soát lịch sử ở chế độ vi, hãy sử dụng lệnh set -o vi để chuyển sang chế độ vi. Bạn có thể chuyển về chế độ emacs bằng lệnh set -o emacs. Khi bạn trích xuất một lệnh ở chế độ vi, ban đầu bạn đang ở chế độ chèn vi.

Đường dẫn

Một số lệnh bash được tích hợp sẵn, trong khi những lệnh khác ở bên ngoài. Bây giờ chúng ta hãy xem các lệnh bên ngoài và cách chạy chúng cũng như cách phân biệt một lệnh bên trong.

Trình thông dịch tìm lệnh ở đâu?

Các lệnh bên ngoài đại diện cho các tập tin trong hệ thống tập tin. Phần Quản lý Tệp Dễ dàng của hướng dẫn này và hướng dẫn Chủ đề 104 sẽ đi sâu vào chi tiết hơn. Trên hệ thống Linux và UNIX, tất cả các tệp đều là một phần của một cây lớn có gốc là /. Trong các ví dụ trên, thư mục hiện tại của chúng tôi là thư mục chính của người dùng. Đối với người dùng thông thường, thư mục chính được đặt trong thư mục /home, trong trường hợp của tôi là /home/ian. Thư mục chính của Root là /root. Sau khi bạn gõ một lệnh, bash sẽ tìm nó trong danh sách thư mục tìm kiếm mặc định, đây là danh sách các thư mục được phân tách bằng dấu hai chấm được lưu trữ trong biến môi trường PATH.

Nếu bạn muốn biết lệnh nào sẽ được thực thi nếu bạn gõ chuỗi cụ thể, sau đó sử dụng lệnh which hoặc type. Liệt kê 15 hiển thị đường dẫn mặc định của tôi cũng như vị trí của một số lệnh.

Liệt kê 15. Tìm vị trí lệnh

$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/ian/bin
$ which bash env zip xclock echo set ls
bí danh ls="ls --color=tty"
/bin/ls
/bin/bash
/bin/env
/usr/bin/zip
/usr/X11R6/bin/xclock
/bin/echo
/usr/bin/which: chưa được cài đặt trong (/usr/local/bin:/bin:/usr/bin:/usr/X11R6/b
trong:/home/ian/bin)
$ gõ bash env zip xclock echo set ls
bash là /bin/bash
env là /bin/env
zip là /usr/bin/zip
xclock là/usr/X11R6/bin/xclock
echo là một bản dựng sẵn của shell
set là một shell dựng sẵn
ls được đặt bí danh là `ls --color=tty"

Lưu ý rằng tất cả các thư mục trong đường dẫn đều kết thúc bằng /bin. Đây là một quy ước chung, nhưng không phải là một yêu cầu. Lệnh which đã báo cáo cho chúng tôi rằng lệnh ls là bí danh và không thể tìm thấy lệnh set. Trong trường hợp này, có thể hiểu rằng lệnh này không tồn tại hoặc là lệnh dựng sẵn. Lệnh type cho chúng ta biết rằng lệnh ls thực sự là một bí danh và nó cũng xác định rằng lệnh set là một lệnh tích hợp sẵn của trình thông dịch; Cô ấy cũng nói rằng có một lệnh echo được tích hợp sẵn và cũng có một lệnh trong /bin mà chúng tôi đã tìm thấy bằng cách sử dụng lệnh which. Hai lệnh tạo ra đầu ra khác nhau.

Chúng ta đã thấy rằng lệnh ls dùng để xem nội dung của các thư mục thực chất là một bí danh. Bí danh cung cấp một cách thuận tiện để sử dụng lệnh với các bộ tùy chọn khác nhau hoặc đơn giản là tên thay thế cho lệnh. Trong ví dụ của chúng tôi, tùy chọn –color=tty làm nổi bật danh sách các tệp thư mục tùy thuộc vào loại tệp và thư mục. Hãy thử chạy dircolors –print-database để xem mã màu cũng như màu nào được sử dụng cho một loại tệp cụ thể.

Mỗi lệnh này có các tùy chọn bổ sung. Tùy thuộc vào yêu cầu của bạn, bạn có thể sử dụng lệnh này hoặc lệnh khác. Tôi thích sử dụng which khi tôi chắc chắn rằng mình sẽ tìm thấy tệp thực thi và chỉ cần đường dẫn đầy đủ của nó. Lệnh type mang lại cho tôi nhiều hơn thông tin chính xác, điều mà đôi khi tôi cần trong các tập lệnh.

Chạy các lệnh khác

Trong Liệt kê 15, chúng ta thấy rằng đường dẫn đầy đủ Các tập tin thực thi bắt đầu từ thư mục gốc /. Ví dụ: chương trình xclock thực sự là /usr/X11R6/bin/xclock, một tệp nằm trong thư mục /usr/X11R6/bin. Nếu chương trình không có biến PATH thì bạn có thể chạy nó bằng cách chỉ định đường dẫn đầy đủ đến chương trình và chính chương trình đó. Có hai loại đường dẫn bạn có thể sử dụng:

  • Các đường dẫn tuyệt đối bắt đầu bằng /, chẳng hạn như chúng ta đã thấy trong Liệt kê 15 (/bin/bash, /bin/env, v.v.).
  • Đường dẫn tương đối là các đường dẫn liên quan đến thư mục làm việc hiện tại của bạn, tên của thư mục này có thể được lấy bằng lệnh pwd. Các lệnh như vậy không bắt đầu bằng /, nhưng ít nhất phải chứa một ký tự /.

Bạn có thể sử dụng đường dẫn tuyệt đối bất kể thư mục làm việc hiện tại của mình là gì, nhưng có thể muốn sử dụng đường dẫn tương đối khi lệnh ở gần thư mục hiện tại. Giả sử bạn đang phát triển phiên bản mới chương trình kinh điển “Xin chào thế giới!” trong thư mục con mytestbin của thư mục chính của bạn. Bạn có thể muốn sử dụng một đường dẫn tương đối và chạy lệnh dưới dạng mytestbin/hello. Có hai tên đặc biệt bạn có thể sử dụng để chỉ định đường dẫn; một dấu chấm (.) chỉ thư mục hiện tại và một cặp dấu chấm (..) chỉ thư mục mẹ của thư mục hiện tại. Vì thư mục chính của bạn không nằm trong biến môi trường PATH (và nó không nên như vậy), bạn sẽ cần cung cấp đường dẫn rõ ràng đến tệp bạn muốn chạy từ thư mục chính của mình. Ví dụ: nếu bạn có một bản sao của chương trình hello trong thư mục chính, bạn chỉ cần sử dụng lệnh ./hello để chạy nó. Bạn có thể sử dụng cả hai. và.. như một phần của đường dẫn tuyệt đối, mặc dù đường dẫn đơn lẻ không hữu ích lắm trong trường hợp này. Bạn có thể sử dụng dấu ngã (~) để chỉ thư mục chính của bạn và ~username để chỉ thư mục chính của tên người dùng. Xem Liệt kê 16 để biết một số ví dụ.

Liệt kê 16. Đường dẫn tuyệt đối và tương đối

$ /bin/echo Sử dụng lệnh echo thay vì lệnh dựng sẵn
Sử dụng lệnh echo thay vì dựng sẵn
$ /usr/../bin/echo Bao gồm thư mục gốc trong đường dẫn
Bao gồm thư mục gốc trong đường dẫn
$ /bin/././echo Thêm một vài thành phần đường dẫn vô dụng
Thêm một vài thành phần đường dẫn vô dụng
$ pwd # Xem chúng tôi đang ở đâu
/nhà/ian
$ ../../bin/echo Sử dụng đường dẫn tương đối để echo
Sử dụng đường dẫn tương đối để lặp lại
$ myprogs/hello # Sử dụng đường dẫn tương đối không có dấu chấm
-bash: myprogs/hello: Không có tập tin hoặc thư mục như vậy
$ mytestbin/hello # Sử dụng đường dẫn tương đối không có dấu chấm
Chào thế giới!
$ ./hello # Chạy chương trình trong thư mục hiện tại
Chào thế giới!
$ ~/mytestbin/hello # chạy hello bằng cách sử dụng ~
Chào thế giới!
$ ../hello # Thử chạy lời chào từ cha mẹ
-bash: ../hello: Không có tập tin hoặc thư mục như vậy

Thay đổi thư mục làm việc

Giống như bạn có thể thực thi các chương trình từ các thư mục khác nhau, bạn có thể thay đổi thư mục làm việc hiện tại của mình bằng lệnh cd. Đối số của cd phải là đường dẫn tuyệt đối hoặc tương đối tới một thư mục. Trong một lệnh, bạn cũng có thể sử dụng ., .., ~ và ~tên người dùng khi chỉ định đường dẫn. Nếu bạn gõ cd không có tham số, bạn sẽ đi đến thư mục chính của mình. Truyền một (-) làm tham số có nghĩa là chuyển đến thư mục làm việc trước đó. Thư mục chính được lưu trữ trong biến môi trường HOME và thư mục trước đó được lưu trữ trong biến môi trường OLDPWD, vì vậy cd tương đương với cd $HOME và cd tương đương với cd $OLDPWD. Chúng ta thường nói ngắn gọn về việc thay đổi thư mục thay vì thay đổi hoàn toàn thư mục làm việc hiện tại.

Đối với các lệnh, có một biến môi trường CDPATH chứa danh sách các thư mục được phân tách bằng dấu hai chấm cần được tìm kiếm (ngoài thư mục làm việc hiện tại), khi được phép đường dẫn tương đối. Nếu giải pháp sử dụng đường dẫn từ CDPATH thì cd sẽ in đường dẫn đầy đủ của thư mục tìm thấy dưới dạng đầu ra. Thông thường, việc thay đổi thư mục thành công sẽ đi kèm với sự xuất hiện của lời mời mới hoặc lời mời được sửa đổi một chút. Một số ví dụ được hiển thị trong Liệt kê 17.

Liệt kê 17. Thay đổi thư mục

$ cd /;pwd
$ cd /usr/X11R6;pwd
/usr/X11R6
$cd ;pwd
/nhà/ian
$ cd -;pwd
/usr/X11R6
/usr/X11R6
$ cd ~ian/..;pwd
/trang chủ
$ cd ~;pwd
/nhà/ian
$ xuất CDPATH=~
$ cd /;pwd
$ cd mytestbin
/home/ian/mytestbin

Sử dụng lệnh đệ quy

Nhiều lệnh Linux có thể được áp dụng đệ quy cho tất cả các tệp trong cây thư mục. Ví dụ: lệnh ls có tùy chọn -R để liệt kê các thư mục theo cách đệ quy và các lệnh cp, mv, rm và diff có tùy chọn -r để áp dụng đệ quy.

Thay thế lệnh

Bash có khả năng cực kỳ mạnh mẽ để chuyển đầu ra của một chương trình này thành đầu vào của chương trình khác; điều này được gọi là thay thế lệnh. Bạn có thể thực hiện việc này bằng cách bao quanh lệnh có kết quả mà bạn muốn bằng dấu nháy đơn (`). Khi sử dụng nhiều lệnh lồng nhau, bạn có thể đặt lệnh giữa $(và).

Trong hướng dẫn trước “LPI 101: Quản lý gói và cài đặt Linux” chúng ta đã thấy rằng lệnh vòng/phút có thể cho biết gói nào sở hữu lệnh nào; Thật thuận tiện khi sử dụng lệnh thay thế ở đây. Bây giờ bạn biết rằng chúng tôi thực sự đã làm điều đó.

Thay thế lệnh là một công cụ vô giá khi viết script cũng như khi sử dụng trên dòng lệnh. Liệt kê 18 cho thấy một ví dụ về cách lấy đường dẫn tuyệt đối thư mục từ một người thân, cách tìm gói cung cấp lệnh /bin/echo và cách (với quyền root) xem nhãn của ba phân vùng trên ổ cứng. Cái sau sử dụng lệnh seq để tạo một chuỗi các số nguyên.

Liệt kê 18. Thay thế lệnh

$ echo "../../usr/bin" thư mục là $(cd ../../usr/bin;pwd)
../../usr/bin thư mục là /usr/bin
$ tiếng vang nào
/bin/echo
$ vòng/phút -qf `` tiếng vang`
sh-utils-2.0.12-3
$su -
Mật khẩu:
# cho n trong $(seq 7 9); làm echo p$n `e2label /dev/hda$n`;done
p7 RH73
p8 SUSE81
HÌNH ẢNH p9

Trang nam

TRONG chủ đề cuối cùng của hướng dẫn này, chúng ta sẽ xem xét cách nhận trợ giúp về Nhóm Linux sử dụng các trang man và các loại tài liệu khác.

Trang và phần của người đàn ông

Nguồn tài liệu chính (và truyền thống) là các trang man, có thể được truy cập bằng lệnh man. Hình 1 hiển thị trang man cho lệnh man. Sử dụng lệnh man man để lấy thông tin này.

Hình 1 cho thấy một số mục trang man điển hình:

* Tiêu đề có tên lệnh theo sau là số phần trong ngoặc đơn
* Tên lệnh và các lệnh tương tự khác được thảo luận trong trang hướng dẫn này
* Danh sách các tùy chọn và tham số áp dụng cho lệnh
* Mô tả ngắn gọn về đội
* Mô tả chi tiết từng lựa chọn

Bạn cũng có thể tìm thấy các phần về cách sử dụng, cách báo cáo lỗi, thông tin về tác giả và danh sách các lệnh khác. Ví dụ: trang man dành cho man nói rằng có lệnh bổ sung(và hướng dẫn sử dụng của họ):

apropos(1), whatis(1), less(1), groff(1) và man.conf(5).

Thông thường, các trang man có 8 phần chung. Hầu hết các trang thường được cài đặt khi một gói được cài đặt, vì vậy nếu một gói chưa được cài đặt, bạn gần như chắc chắn sẽ thiếu các trang man của nó. Ngoài ra, một số phần của trang có thể trống hoặc gần như trống. Các phần phổ biến nhất của trang man là:

1. Lệnh người dùng (env, ls, echo, mkdir, tty)
2. Lệnh gọi hệ thống hoặc hàm kernel (link, sethostname, mkdir)
3. Các hàm thư viện (acosh, asctime, btree, locale, XML::Parser)
4. Thông tin thiết bị (isdn_audio, mouse, tty, zero)
5. Mô tả định dạng file (keymaps, motd, wvdial.conf)
6. Trò chơi (lưu ý rằng nhiều trò chơi hiện chạy ở chế độ đồ họa, do đó có thể có hệ thống trợ giúp riêng thay vì trang man)
7. Linh tinh (arp, boot, regrec, unix utf8)
8. Quản trị hệ thống(gỡ lỗi, fdisk, fsck, mount, renice, vòng/phút)

Các phần khác có thể bao gồm 9 dành cho tài liệu về nhân Linux, n dành cho tài liệu mới, o dành cho tài liệu cũ và l dành cho tài liệu cục bộ.

Một số mục có thể xuất hiện trong nhiều phần. Các ví dụ của chúng tôi cho thấy mkdir được chứa trong phần 1 và 2, và tty trong phần 1 và 4. Bạn có thể xác định một phần cụ thể, chẳng hạn như man 4 tty hoặc man 2 mkdir hoặc bạn có thể sử dụng tùy chọn -a để liệt kê tất cả man phần -trang.

Bạn sẽ nhận thấy trong hình rằng người đàn ông có rất nhiều lựa chọn mà bạn có thể tự mình xem xét. Bây giờ, chúng ta hãy xem nhanh phần “Xem thêm” của các lệnh liên quan đến con người.

Xem thêm

Hai lệnh quan trọng nhất liên quan đến con người là whatis và apropos. Lệnh whatis tìm kiếm tên bạn chỉ định trên các trang man và hiển thị thông tin về tên đó từ các trang man tương ứng. Lệnh apropos tìm kiếm từ khóa trong trang man và trả về những từ khóa có chứa từ của bạn. Liệt kê 19 hiển thị các lệnh này.

Liệt kê 19. Ví dụ về các lệnh whatis và apropos

$ người đàn ông là gì
man (1) - định dạng và hiển thị các trang hướng dẫn trực tuyến
man (7) - macro để định dạng trang man
man (1) - định dạng và hiển thị các trang hướng dẫn trực tuyến
man.conf (5) - dữ liệu cấu hình cho con người
mkdir $là gì
mkdir (1) - tạo thư mục

$ phù hợp với mkdir
mkdir (1) - tạo thư mục
mkdir(2) - tạo một thư mục
mkdirhier (1x) - tạo hệ thống phân cấp thư mục

Nhân tiện, nếu bạn không thể tìm thấy trang man cho man.conf, hãy thử chạy man man.conf ig .

Lệnh man được hiển thị trên màn hình bằng một chương trình phân trang đặc biệt. Trên hầu hết các hệ thống Linux, chương trình này sẽ ít hơn. Một lựa chọn khác có thể là chương trình cũ hơn. Nếu bạn muốn in trang, hãy chỉ định tùy chọn -t để định dạng trang và in bằng chương trình groff hoặc troff.

Chương trình đầu ra ít hơn có một số lệnh giúp tìm chuỗi trong văn bản hiển thị dễ dàng hơn. Sử dụng man less để tìm hiểu thêm về / (tìm kiếm tiến), ? (tìm kiếm lùi) và n (đối với tìm kiếm cuối cùng được thực hiện), cũng như nhiều lệnh khác.

Các nguồn tài liệu khác

Ngoài các trang hướng dẫn có thể truy cập từ dòng lệnh, Tổ chức Phần mềm Tự do đã tạo con số lớn các tập tin thông tin được xử lý bởi chương trình thông tin. Nó có khả năng điều hướng tuyệt vời, bao gồm khả năng di chuyển sang phần khác. Nhập thông tin người đàn ông hoặc thông tin thông tin để biết thêm thông tin. Không phải tất cả các lệnh đều được ghi lại trong thông tin, vì vậy bạn có thể sử dụng cả trang man và thông tin.

Có một số giao diện đồ họa cho các trang man, chẳng hạn như xman (từ dự án XFree86) và yelp (trình duyệt trợ giúp Gnome 2.0).

Nếu bạn không thể tìm thấy trợ giúp cho một lệnh, hãy thử chạy lệnh đó với tùy chọn –help. Bằng cách này, bạn có thể tìm ra những gì bạn muốn hoặc nhận được gợi ý về nơi khác mà bạn có thể tìm.

Phần tiếp theo là về xử lý luồng văn bản bằng bộ lọc.