Trong chương này, chúng ta sẽ thảo luận chi tiết về các hàm của shell. Các chức năng cho phép bạn chia chức năng tổng thể của một tập lệnh thành các tiểu mục nhỏ hơn, hợp lý, sau đó có thể được gọi để thực hiện các nhiệm vụ riêng lẻ của chúng khi cần thiết.
Sử dụng các hàm để thực hiện các tác vụ lặp đi lặp lại là một cách tuyệt vời để tạo tái sử dụng mã . Đây là một phần quan trọng của các nguyên tắc lập trình hướng đối tượng hiện đại.
Các hàm Shell tương tự như các chương trình con, thủ tục và hàm trong các ngôn ngữ lập trình khác.
Tạo các chức năng
Để khai báo một hàm, chỉ cần sử dụng cú pháp sau:
function_name () {
list of commands
}
Tên của hàm của bạn là function_name và đó là những gì bạn sẽ sử dụng để gọi nó từ nơi khác trong tập lệnh của mình. Tên hàm phải được đặt sau dấu ngoặc đơn, theo sau là danh sách các lệnh được đặt trong dấu ngoặc nhọn.
Thí dụ
Ví dụ sau cho thấy việc sử dụng hàm:
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World"
}
# Invoke your function
Hello
Khi thực hiện, bạn sẽ nhận được kết quả sau:
$./test.sh
Hello World
Chuyển các tham số cho một hàm
Bạn có thể xác định một hàm sẽ chấp nhận các tham số trong khi gọi hàm. Các tham số này sẽ được biểu thị bằng $ 1 , $ 2 , v.v.
Dưới đây là một ví dụ mà chúng ta truyền hai tham số Zara và Ali , sau đó chúng ta chụp và in các tham số này trong hàm.
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World $1 $2"
}
# Invoke your function
Hello Zara Ali
Khi thực hiện, bạn sẽ nhận được kết quả sau:
$./test.sh
Hello World Zara Ali
Trả lại giá trị từ các hàm
Nếu bạn thực hiện một lệnh thoát từ bên trong một hàm, tác dụng của nó không chỉ là chấm dứt việc thực thi hàm mà còn đối với chương trình shell được gọi là hàm.
Thay vào đó, nếu bạn chỉ muốn chấm dứt việc thực thi hàm, thì có cách để thoát ra khỏi một hàm đã xác định.
Dựa trên tình huống, bạn có thể trả về bất kỳ giá trị nào từ hàm của mình bằng cách sử dụng lệnh return có cú pháp như sau:
return code
Ở đây mã có thể là bất kỳ thứ gì bạn chọn ở đây, nhưng rõ ràng bạn nên chọn thứ gì đó có ý nghĩa hoặc hữu ích trong bối cảnh toàn bộ tập lệnh của bạn.
Thí dụ
Hàm sau trả về giá trị 10 –
#!/bin/sh
# Define your function here
Hello () {
echo "Hello World $1 $2"
return 10
}
# Invoke your function
Hello Zara Ali
# Capture value returnd by last command
ret=$?
echo "Return value is $ret"
Khi thực hiện, bạn sẽ nhận được kết quả sau:
$./test.sh
Hello World Zara Ali
Return value is 10
Các hàm lồng nhau
Một trong những tính năng thú vị hơn của các hàm là chúng có thể gọi chính chúng và các hàm khác. Một hàm gọi chính nó được gọi là một hàm đệ quy .
Ví dụ sau minh họa việc lồng hai hàm:
#!/bin/sh
# Calling one function from another
number_one () {
echo "This is the first function speaking..."
number_two
}
number_two () {
echo "This is now the second function speaking..."
}
# Calling function one.
number_one
Khi thực hiện, bạn sẽ nhận được kết quả sau:
This is the first function speaking...
This is now the second function speaking...
Chức năng gọi từ lời nhắc
Bạn có thể đặt các định nghĩa cho các hàm thường được sử dụng bên trong .profile của mình . Các định nghĩa này sẽ có sẵn bất cứ khi nào bạn đăng nhập và bạn có thể sử dụng chúng tại dấu nhắc lệnh.
Ngoài ra, bạn có thể nhóm các định nghĩa trong một tệp, chẳng hạn như test.sh , rồi thực thi tệp trong trình bao hiện tại bằng cách nhập –
$. test.sh
Điều này có tác dụng làm cho các hàm được định nghĩa bên trong test.sh được đọc và xác định cho trình bao hiện tại như sau:
$ number_one
This is the first function speaking...
This is now the second function speaking...
$
Để xóa định nghĩa của một hàm khỏi trình bao, hãy sử dụng lệnh unset với tùy chọn .f . Lệnh này cũng được sử dụng để loại bỏ định nghĩa của một biến đối với trình bao. $ unset -f function_name
Unix / Linux – Shell Manpage Help
Tất cả các lệnh Unix đi kèm với một số tùy chọn bắt buộc và tùy chọn. Việc quên cú pháp hoàn chỉnh của các lệnh này là rất phổ biến.
Bởi vì không ai có thể nhớ mọi lệnh Unix và tất cả các tùy chọn của nó, chúng tôi có sẵn trợ giúp trực tuyến để giảm thiểu điều này ngay từ khi Unix còn ở giai đoạn phát triển.
Phiên bản tệp Trợ giúp của Unix được gọi là trang nam . Nếu có một tên lệnh và bạn không chắc chắn về cách sử dụng nó, thì Man Pages sẽ giúp bạn thực hiện từng bước.
Cú pháp
Đây là lệnh đơn giản giúp bạn có được chi tiết của bất kỳ lệnh Unix nào trong khi làm việc với hệ thống –
$man command
Thí dụ
Giả sử có một lệnh yêu cầu bạn nhận trợ giúp; giả sử rằng bạn muốn biết về pwd thì bạn chỉ cần sử dụng lệnh sau:
$man pwd
Lệnh trên giúp bạn cung cấp thông tin đầy đủ về lệnh pwd . Hãy tự mình thử nó tại dấu nhắc lệnh của bạn để biết thêm chi tiết.
Bạn có thể nhận được đầy đủ chi tiết về chính lệnh man bằng lệnh sau:
$man man
Phần Trang Người đàn ông
Trang người đàn ông thường được chia thành các phần, thường khác nhau tùy theo sở thích của tác giả trang người đàn ông. Bảng sau liệt kê một số phần phổ biến:
Sr.No. | Phần & Mô tả |
1 | TÊN Tên của lệnh |
2 | TÓM TẮT Các tham số sử dụng chung của lệnh |
3 | SỰ MÔ TẢ Mô tả chức năng của lệnh |
4 | TÙY CHỌN Mô tả tất cả các đối số hoặc tùy chọn cho lệnh |
5 | XEM THÊM Liệt kê các lệnh khác có liên quan trực tiếp đến lệnh trong man page hoặc gần giống với chức năng của nó |
6 | BUGS Giải thích bất kỳ sự cố hoặc lỗi đã biết nào tồn tại với lệnh hoặc đầu ra của nó |
7 | VÍ DỤ Các ví dụ sử dụng phổ biến cung cấp cho người đọc ý tưởng về cách có thể sử dụng lệnh |
số 8 | CÁC TÁC GIẢ Tác giả của trang / lệnh người đàn ông |
Tóm lại, các trang nam là một nguồn tài nguyên quan trọng và là con đường nghiên cứu đầu tiên khi bạn cần thông tin về các lệnh hoặc tệp trong hệ thống Unix.
Lệnh Shell hữu ích
Liên kết sau cung cấp cho bạn danh sách các lệnh Unix Shell quan trọng nhất và được sử dụng rất thường xuyên.
Nếu bạn không biết cách sử dụng bất kỳ lệnh nào, hãy sử dụng man page để biết chi tiết đầy đủ về lệnh.
Đây là danh sách Unix Shell – Các lệnh hữu ích
Hướng dẫn nhanh này liệt kê các lệnh, bao gồm cú pháp và mô tả ngắn gọn. Để biết thêm chi tiết, hãy sử dụng –
$man command
Tệp và Thư mục
Các lệnh này cho phép bạn tạo thư mục và xử lý tệp.
Sr.No. | Lệnh & Mô tả |
1 | con mèo Hiển thị nội dung tệp |
2 | đĩa CD Thay đổi Thư mục thành dirname |
3 | chgrp Thay đổi nhóm tệp |
4 | chmod Thay đổi quyền |
5 | cp Sao chép tệp nguồn vào đích |
6 | tập tin Xác định loại tệp |
7 | tìm thấy Tìm tệp |
số 8 | grep Tìm kiếm các tệp cho các biểu thức chính quy |
9 | cái đầu Hiển thị một vài dòng đầu tiên của tệp |
10 | ln Tạo liên kết mềm trên tên cũ |
11 | ls Hiển thị thông tin về loại tệp |
12 | mkdir Tạo một tên thư mục mới |
13 | hơn Hiển thị dữ liệu ở dạng phân trang |
14 | mv Chuyển (Đổi tên) tên cũ thành tên mới |
15 | pwd In thư mục làm việc hiện tại |
16 | rm Xóa (Xóa) tên tệp |
17 | là rm Xóa một thư mục hiện có miễn là nó trống |
18 | cái đuôi In vài dòng cuối cùng trong tệp |
19 | chạm Cập nhật quyền truy cập và thời gian sửa đổi tệp |
Thao tác dữ liệu
Nội dung của các tệp có thể được so sánh và thay đổi bằng các lệnh sau.
Sr.No. | Lệnh & Mô tả |
1 | awk Ngôn ngữ xử lý và quét mẫu |
2 | cmp So sánh nội dung của hai tệp |
3 | dấu phẩy So sánh dữ liệu được sắp xếp |
4 | cắt Cắt bỏ các trường đã chọn của mỗi dòng tệp |
5 | khác biệt Trình so sánh tệp khác biệt |
6 | mở rộng Mở rộng các tab thành khoảng trắng |
7 | tham gia Tham gia các tệp trên một số trường phổ biến |
số 8 | perl Ngôn ngữ thao tác dữ liệu |
9 | quyến rũ Trình chỉnh sửa văn bản trực tuyến |
10 | loại Sắp xếp dữ liệu tệp |
11 | tách ra Tách tệp thành các tệp nhỏ hơn |
12 | tr Dịch các ký tự |
13 | độc nhất Báo cáo các dòng lặp lại trong một tệp |
14 | wc Đếm từ, dòng và ký tự |
15 | vi Mở trình soạn thảo văn bản |
16 | khí lực Mở trình soạn thảo văn bản vim |
17 | fmt Định dạng văn bản đơn giản |
18 | Đánh vần Kiểm tra văn bản để tìm lỗi chính tả |
19 | Tôi đánh vần Kiểm tra văn bản để tìm lỗi chính tả |
20 | emacs Dự án GNU Emacs |
21 | ví dụ, chỉnh sửa Trình chỉnh sửa dòng |
22 | emacs Dự án GNU Emacs |
Tệp nén
Các tệp có thể được nén để tiết kiệm dung lượng. Các tệp nén có thể được tạo và kiểm tra.
Sr.No. | Lệnh & Mô tả |
1 | nén Nén tệp |
2 | gunzip Giúp giải nén các tệp đã nén |
3 | gzip Phương pháp nén thay thế GNU |
4 | giải nén Giúp giải nén tệp |
5 | giải nén Liệt kê, kiểm tra và giải nén các tệp nén trong kho lưu trữ ZIP |
6 | zcat Cat một tệp nén |
7 | zcmp So sánh các tệp nén |
số 8 | zdiff So sánh các tệp nén |
9 | anh ấy có thể Bộ lọc truy cập tệp để xem crt của văn bản nén |
Nhận thông tin
Nhiều hướng dẫn sử dụng Unix và tài liệu có sẵn trên mạng. Các lệnh Shell sau cung cấp thông tin:
Sr.No. | Lệnh & Mô tả |
1 | apropos Định vị các lệnh bằng cách tra cứu từ khóa |
2 | thông tin Hiển thị các trang thông tin lệnh trực tuyến |
2 | Đàn ông Hiển thị các trang thủ công trực tuyến |
3 | là gì Tìm kiếm cơ sở dữ liệu whatis để có các từ hoàn chỉnh |
4 | kêu lên GNOME trợ giúp người xem |
Truyền thông mạng
Các lệnh sau được sử dụng để gửi và nhận tệp từ máy chủ Unix cục bộ đến máy chủ từ xa trên khắp thế giới.
Sr.No. | Lệnh & Mô tả |
1 | ftp Chương trình truyền tệp |
2 | rcp Sao chép tệp từ xa |
3 | rlogin Đăng nhập từ xa vào máy chủ Unix |
4 | rsh Vỏ từ xa |
5 | tftp Chương trình truyền tệp tầm thường |
6 | telnet Tạo kết nối đầu cuối với một máy chủ khác |
7 | ssh Bảo vệ thiết bị đầu cuối shell hoặc kết nối lệnh |
số 8 | scp Sao chép tệp từ xa của shell Secures |
9 | sftp Chương trình truyền tệp shell bảo mật |
Một số lệnh này có thể bị hạn chế trên máy tính của bạn vì lý do bảo mật.
Tin nhắn giữa những người dùng
Hệ thống Unix hỗ trợ tin nhắn trên màn hình cho những người dùng khác và thư điện tử trên toàn thế giới –
Sr.No. | Lệnh & Mô tả |
1 | sự phát triển Công cụ xử lý thư GUI trên Linux |
2 | thư Chương trình gửi hoặc đọc thư đơn giản |
3 | thông điệp Cho phép hoặc từ chối tin nhắn |
4 | Bưu kiện Gửi tệp cho người dùng khác |
5 | cây thông Tiện ích thư dựa trên Vdu |
6 | nói chuyện Nói chuyện với người dùng khác |
7 | viết Viết tin nhắn cho người dùng khác |
Tiện ích lập trình
Các công cụ và ngôn ngữ lập trình sau đây có sẵn dựa trên những gì bạn đã cài đặt trên Unix của mình.
Dưới đây là danh sách các công cụ và ngôn ngữ trong Tiện ích lập trình.
Sr.No. | Lệnh & Mô tả |
1 | dbx Sun debugger |
2 | gdb Trình gỡ lỗi GNU |
3 | làm Duy trì các nhóm chương trình và biên dịch chương trình |
4 | nm In danh sách tên của chương trình |
5 | kích thước In kích thước của chương trình |
6 | dải Loại bỏ bảng ký hiệu và các bit chuyển vị trí |
7 | cb Trình làm đẹp chương trình C |
số 8 | cc Trình biên dịch ANSI C cho hệ thống Suns SPARC |
9 | ctrace Trình gỡ lỗi chương trình C |
10 | gcc Trình biên dịch GNU ANSI C |
11 | thụt vào Thụt lề và định dạng nguồn chương trình C |
12 | bc Bộ xử lý ngôn ngữ số học tương tác |
13 | gcl GNU Common Lisp |
14 | perl Ngôn ngữ mục đích chung |
15 | php Ngôn ngữ nhúng trang web |
16 | py Trình thông dịch ngôn ngữ Python |
17 | asp Ngôn ngữ nhúng trang web |
18 | CC Trình biên dịch C ++ cho hệ thống Suns SPARC |
19 | g ++ Trình biên dịch GNU C ++ |
20 | javac Trình biên dịch JAVA |
21 | appletvieweir Trình xem applet JAVA |
22 | netbeans Môi trường phát triển tích hợp Java trên Linux |
23 | sqlplus Chạy trình thông dịch Oracle SQL |
24 | sqlldr Chạy trình tải dữ liệu Oracle SQL |
25 | mysql Chạy trình thông dịch SQL mysql |
Lệnh khác
Các lệnh này liệt kê hoặc thay đổi thông tin về hệ thống –
Dưới đây là danh sách các lệnh Misc trong Unix.
Lệnh khác
Các lệnh này liệt kê hoặc thay đổi thông tin về hệ thống –
Dưới đây là danh sách các lệnh Misc trong Unix.
Sr.No. | Lệnh & Mô tả |
1 | chfn Thay đổi thông tin ngón tay của bạn |
2 | chgrp Thay đổi quyền sở hữu nhóm của một tệp |
3 | chown Thay đổi chủ sở hữu |
4 | ngày In ngày tháng |
5 | quyết định Tự động tìm loại thiết bị đầu cuối |
6 | từ In lượng sử dụng đĩa |
7 | tiếng vang Đưa ra các đối số cho các tùy chọn tiêu chuẩn |
số 8 | lối ra Thoát khỏi hệ thống |
9 | ngón tay In thông tin về người dùng đã đăng nhập |
10 | groupadd Tạo một nhóm người dùng |
11 | các nhóm Hiển thị tư cách thành viên nhóm |
12 | định mức nhà Hiển thị hạn ngạch và sử dụng tệp |
13 | iostat Báo cáo thống kê I / O |
14 | giết chết Gửi tín hiệu cho một quá trình |
15 | Cuối cùng Hiển thị thông tin đăng nhập cuối cùng của người dùng |
16 | đăng xuất Đăng xuất khỏi Unix |
17 | lun Liệt kê tên người dùng hoặc ID đăng nhập |
18 | netstat Hiển thị trạng thái mạng |
19 | passwd Thay đổi mật khẩu người dùng |
20 | passwd Thay đổi mật khẩu đăng nhập của bạn |
21 | printenv Hiển thị giá trị của một biến shell |
22 | ps Hiển thị trạng thái của các quy trình hiện tại |
23 | ps In thống kê trạng thái quy trình |
24 | hạn ngạch -v Hiển thị mức sử dụng và giới hạn đĩa |
25 | cài lại Đặt lại chế độ đầu cuối |
26 | script Giữ tập lệnh của phiên đầu cuối |
27 | script Lưu kết quả đầu ra của một lệnh hoặc quy trình |
28 | setenv Đặt các biến môi trường |
30 | stty Đặt tùy chọn thiết bị đầu cuối |
31 | thời gian Giúp thời gian một lệnh |
32 | đứng đầu Hiển thị tất cả các quy trình hệ thống |
33 | tset Đặt chế độ đầu cuối |
34 | tty In tên thiết bị đầu cuối hiện tại |
35 | umask Hiển thị các quyền được cấp để xem tệp theo mặc định |
36 | uname Hiển thị tên của hệ thống hiện tại |
37 | thời gian hoạt động Tăng thời gian cho hệ thống |
38 | useradd Tạo tài khoản người dùng |
39 | người dùng In tên của người dùng đã đăng nhập |
40 | vmstat Báo cáo thống kê bộ nhớ ảo |
41 | w Hiển thị những gì người dùng đã đăng nhập đang làm |
42 | ai Danh sách người dùng đã đăng nhập |