Hướng dẫn cho người mới bắt đầu với Shell Scripting 3: Các lệnh và chuỗi cơ bản khác

Mục lục:

Hướng dẫn cho người mới bắt đầu với Shell Scripting 3: Các lệnh và chuỗi cơ bản khác
Hướng dẫn cho người mới bắt đầu với Shell Scripting 3: Các lệnh và chuỗi cơ bản khác

Video: Hướng dẫn cho người mới bắt đầu với Shell Scripting 3: Các lệnh và chuỗi cơ bản khác

Video: Hướng dẫn cho người mới bắt đầu với Shell Scripting 3: Các lệnh và chuỗi cơ bản khác
Video: 15 Phím Tắt Tuyệt Vời Mà Bạn Chưa Sử Dụng Đến - YouTube 2024, Tháng Ba
Anonim
Bạn đã học cách tạo tập lệnh, sử dụng đối số và xây dựng cho vòng lặp. Bây giờ, chúng ta hãy xem xét một số lệnh cơ bản hơn, thao tác với tệp văn bản và chuyển hướng đầu vào và đầu ra tới các tệp và các lệnh khác.
Bạn đã học cách tạo tập lệnh, sử dụng đối số và xây dựng cho vòng lặp. Bây giờ, chúng ta hãy xem xét một số lệnh cơ bản hơn, thao tác với tệp văn bản và chuyển hướng đầu vào và đầu ra tới các tệp và các lệnh khác.

Một số lệnh hữu ích cơ bản

Chúng tôi đã cung cấp cho bạn một phân tích cơ bản về các kịch bản lệnh shell và một phác thảo dựa trên ví dụ về các vòng lặp, nhưng hãy nhớ xem các bài viết đó nếu bạn đã bỏ lỡ hướng dẫn kịch bản trình bao của chúng tôi.

Dòng lệnh là tuyệt vời vì nhiều lý do, và chuyển hướng là một trong những điểm nổi bật nhất. Nếu bạn phải ghi chép và tái tạo đầu ra của mọi lệnh để thực hiện thêm hành động hoặc sử dụng nó cho cái gì khác, thì tất cả chúng ta đã phát điên từ lâu rồi. Chuyển hướng cho phép chúng tôi sử dụng đầu ra đó và lưu nó hoặc ngay lập tức sử dụng nó làm đầu vào cho một lệnh khác. Chúng tôi cũng có thể sử dụng tệp làm đầu vào cho các lệnh khác.

Trước khi tiếp tục, chúng ta hãy xem xét một số lệnh cơ bản có thể được sử dụng ở nhiều nơi khác nhau.

tiếng vang - Lệnh này chỉ cần in (hiển thị) toàn bộ đối số của nó trên dòng lệnh dưới dạng đầu ra

echo argument with spaces

Như bạn có thể thấy, các ký tự đặc biệt cần phải được "thoát" để chúng được đối xử bình thường. Điều này được thực hiện bằng cách sử dụng dấu chéo ngược () ở phía trước ký tự. Tốt hơn là nên sử dụng dấu ngoặc kép. Lệnh echo cũng hoạt động với các biến.
Như bạn có thể thấy, các ký tự đặc biệt cần phải được "thoát" để chúng được đối xử bình thường. Điều này được thực hiện bằng cách sử dụng dấu chéo ngược () ở phía trước ký tự. Tốt hơn là nên sử dụng dấu ngoặc kép. Lệnh echo cũng hoạt động với các biến.
Như bạn có thể thấy, các dấu nháy đơn và kép hoạt động khác nhau. Để biết thêm thông tin, hãy xem Sự khác nhau giữa các báo giá đơn và đôi trong Shell Bash là gì?
Như bạn có thể thấy, các dấu nháy đơn và kép hoạt động khác nhau. Để biết thêm thông tin, hãy xem Sự khác nhau giữa các báo giá đơn và đôi trong Shell Bash là gì?

con mèo - Lệnh này hiển thị nội dung của tệp văn bản dưới dạng đầu ra.

cat file_to_be_read

Giả sử chúng ta tạo tệp văn bản này bằng nano:

Image
Image

Khi chúng ta sử dụng lệnh cat trên tập tin, chúng ta có thể thấy nó là đầu ra.

grep - Đây là một trong những lệnh mạnh mẽ và hữu ích nhất có sẵn cho bạn trong Linux. Nó là viết tắt của Global / Regular Expression Print. Nó xem qua một tệp và in bất kỳ dòng nào khớp với một mẫu cụ thể. Bởi vì mẫu này dựa trên "biểu thức chính quy", một đường thẳng ngắn có thể mang lại vô số các mẫu được khớp. Đối với không, mặc dù, bạn có thể nhập một tern để tìm kiếm.
grep - Đây là một trong những lệnh mạnh mẽ và hữu ích nhất có sẵn cho bạn trong Linux. Nó là viết tắt của Global / Regular Expression Print. Nó xem qua một tệp và in bất kỳ dòng nào khớp với một mẫu cụ thể. Bởi vì mẫu này dựa trên "biểu thức chính quy", một đường thẳng ngắn có thể mang lại vô số các mẫu được khớp. Đối với không, mặc dù, bạn có thể nhập một tern để tìm kiếm.

grep pattern file

Tôi đảm bảo với bạn, grep có thể làm được nhiều hơn, nhưng bây giờ, hãy chú ý đến những thứ dễ dàng hơn.
Tôi đảm bảo với bạn, grep có thể làm được nhiều hơn, nhưng bây giờ, hãy chú ý đến những thứ dễ dàng hơn.

Chuyển hướng đầu ra

Để chuyển hướng đầu ra của lệnh tới một tệp, chúng tôi sử dụng ký tự đặc biệt, ký hiệu lớn hơn (>).

Hãy thay đổi danh sách của chúng ta, phải không? Nhập lệnh sau:

echo pepperoni > list

Bạn có thể thấy rằng echo không hiển thị dòng nữa, và khi chúng ta nhìn vào nội dung của tập tin "danh sách", chúng ta thấy những gì chúng ta lặp lại trong đó.
Bạn có thể thấy rằng echo không hiển thị dòng nữa, và khi chúng ta nhìn vào nội dung của tập tin "danh sách", chúng ta thấy những gì chúng ta lặp lại trong đó.

Cũng lưu ý rằng các nội dung trước đó của "danh sách" đã bị xóa. Thử lại lần nữa:

Điều này có thể hữu ích khi bạn muốn sử dụng lại một tệp, nhưng thường chúng tôi chỉ muốn thêm vào tệp hiện có. Đối với điều này, chúng tôi sử dụng hai ký tự lớn hơn liên tiếp:
Điều này có thể hữu ích khi bạn muốn sử dụng lại một tệp, nhưng thường chúng tôi chỉ muốn thêm vào tệp hiện có. Đối với điều này, chúng tôi sử dụng hai ký tự lớn hơn liên tiếp:

echo yellow peppers >> list

Dễ dàng! Hãy sử dụng lệnh này để tạo một danh sách lớn hơn, phải không?
Dễ dàng! Hãy sử dụng lệnh này để tạo một danh sách lớn hơn, phải không?
Chúng tôi đi. Tôi nghĩ bạn có thể thấy tại sao rất nhiều chuyên viên máy tính sử dụng dòng lệnh để tạo danh sách việc cần làm và những thứ tương tự, nhưng nó thậm chí còn tốt hơn.
Chúng tôi đi. Tôi nghĩ bạn có thể thấy tại sao rất nhiều chuyên viên máy tính sử dụng dòng lệnh để tạo danh sách việc cần làm và những thứ tương tự, nhưng nó thậm chí còn tốt hơn.

Hãy lấy đầu ra của một lệnh và đặt nó vào một tệp:

ls –al / > ~/rootlist

Tạo danh sách các tệp, chỉnh sửa chúng, và sau đó chạy các lệnh trên các tệp bạn muốn chưa bao giờ đơn giản hơn. Và, trong khi chúng tôi đang thực hiện các chức năng cơ bản này trong dòng lệnh, chúng cũng hoạt động tốt trong các tập lệnh.
Tạo danh sách các tệp, chỉnh sửa chúng, và sau đó chạy các lệnh trên các tệp bạn muốn chưa bao giờ đơn giản hơn. Và, trong khi chúng tôi đang thực hiện các chức năng cơ bản này trong dòng lệnh, chúng cũng hoạt động tốt trong các tập lệnh.

Đường ống, hoặc chuỗi

Đường ống được đặt tên như vậy bởi vì nó sử dụng đường ống, (|; được chia sẻ với phím trên hầu hết bàn phím). Về cơ bản, nó lấy đầu ra của một lệnh và cấp dữ liệu trực tiếp cho một lệnh khác. Bạn có thể tạo các chuỗi lệnh dài để có được đầu ra mong muốn rất cụ thể theo cách này và rất thuận tiện cho các lệnh như grep.

Nó hoạt động rất giống như “>” ngoại trừ nó có thể bị xích nhiều lần và hiệu ứng của nó là tổng quát hơn ở chỗ nó không cần phải đi qua một tệp văn bản.
Nó hoạt động rất giống như “>” ngoại trừ nó có thể bị xích nhiều lần và hiệu ứng của nó là tổng quát hơn ở chỗ nó không cần phải đi qua một tệp văn bản.

Như bạn có thể thấy, grep phân biệt chữ hoa chữ thường. Bạn có thể sử dụng cờ “-i” để làm cho nó bỏ qua trường hợp.

Image
Image

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

Bạn cũng có thể lấy đầu vào từ các tệp cho các lệnh bằng cách sử dụng ký hiệu nhỏ hơn (<).

cat < list

“Điều đó không khác gì khi sử dụng một cuộc tranh luận!” Bạn có thể nói. Vâng, bạn sẽ đúng trong trường hợp này. Trường hợp chuyển hướng đầu vào thực sự có ích là trong chuỗi lệnh với nhau.
“Điều đó không khác gì khi sử dụng một cuộc tranh luận!” Bạn có thể nói. Vâng, bạn sẽ đúng trong trường hợp này. Trường hợp chuyển hướng đầu vào thực sự có ích là trong chuỗi lệnh với nhau.

Giả sử chúng tôi muốn lọc bất kỳ từ nào có "pep" trong từ tệp "danh sách" hiện tại của chúng tôi thành tệp mới có tên là "bản sửa đổi".

grep pep < list > revisions

Hãy làm lại lệnh này và thêm một số phân loại.
Hãy làm lại lệnh này và thêm một số phân loại.

grep pep < list | sort > revisions

Image
Image

Điều này sẽ sử dụng "pep" làm cụm từ tìm kiếm từ danh sách "danh sách", sắp xếp theo thứ tự bảng chữ cái (tất cả các cụm từ viết hoa được theo sau bởi tất cả các từ viết thường), sau đó xuất nó vào tệp "sửa đổi".

Để minh họa lệnh sắp xếp, hãy xem ví dụ sau:

Như bạn có thể thấy, thêm cờ “-f” vào lệnh sắp xếp cho phép bạn bỏ qua trường hợp. Điều này giúp chúng tôi dễ dàng phân loại các dòng trong các tệp văn bản và bỏ qua viết hoa khi nó không quan trọng.
Như bạn có thể thấy, thêm cờ “-f” vào lệnh sắp xếp cho phép bạn bỏ qua trường hợp. Điều này giúp chúng tôi dễ dàng phân loại các dòng trong các tệp văn bản và bỏ qua viết hoa khi nó không quan trọng.

Một kịch bản đơn giản

Hãy tạo tập lệnh có dạng sau:

script searchterm listfile

Nó sẽ mất thời hạn và sử dụng grep để tìm kiếm thông qua một tập tin danh sách, sắp xếp các kết quả, và sau đó xuất chúng sang một tập tin khác.

Đây là thư mục mà chúng tôi sẽ thử nghiệm tập lệnh trong:
Đây là thư mục mà chúng tôi sẽ thử nghiệm tập lệnh trong:
Và, chúng tôi có thể tạo danh sách những gì ở đây, sau đó chạy tập lệnh.
Và, chúng tôi có thể tạo danh sách những gì ở đây, sau đó chạy tập lệnh.
Có bạn đi! Bạn càng học các quy tắc của cụm từ thông dụng, bạn càng có thể đặt chính xác lệnh tìm kiếm một cách chính xác hơn. Và, bất cứ điều gì có giá trị trong dấu ngoặc kép có thể được thay thế cho đối số đầu tiên của bạn!
Có bạn đi! Bạn càng học các quy tắc của cụm từ thông dụng, bạn càng có thể đặt chính xác lệnh tìm kiếm một cách chính xác hơn. Và, bất cứ điều gì có giá trị trong dấu ngoặc kép có thể được thay thế cho đối số đầu tiên của bạn!

Theo như phân loại đi, bạn có thể làm nhiều hơn là chỉ sắp xếp theo thứ tự bảng chữ cái. Hãy xem trang hướng dẫn sử dụng một số lệnh sau:

  • tsort - một chức năng phân loại topo tiên tiến hơn
  • tr - cho phép bạn ánh xạ các ký tự cụ thể cho các ký tự khác và phiên âm giữa chúng.
  • uniq - loại bỏ bất kỳ không độc đáo nào (đọc: trùng lặp)
  • awk - một ngôn ngữ / chức năng xử lý văn bản thực sự tiên tiến có thể được sử dụng để tách các trường trong tên tệp
  • các lệnh cut, paste / join - hữu ích cho việc cô lập các trường từ các tệp văn bản và thêm dữ liệu mới vào các cột
  • tìm kiếm - tìm kiếm như grep, nhưng sử dụng tệp từ điển (có thể do người dùng chỉ định) để tra cứu
  • wc - cho phép bạn đếm số lượng từ, số lượng dòng, số ký tự và hơn thế nữa

Chúng tôi đã xem xét một số thông tin cơ bản hơn ngày hôm nay có thể hữu ích trên dòng lệnh như trong các tập lệnh. Dữ liệu dựa trên văn bản thường là trung tâm của những thứ chúng tôi sử dụng hàng ngày, do đó, có thể làm việc với nó, tìm kiếm và thao tác nó là chìa khóa.

Một số kịch bản yêu thích của bạn là gì? Bạn có tập lệnh đặc biệt nào cho các tệp dựa trên văn bản không? Chia sẻ những gì bạn biết trong phần bình luận!

Đề xuất: