Hướng dẫn cho người mới bắt đầu về Shell Scripting 3 Lệnh và chuỗi cơ bản 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 các vòng lặp. Bây giờ, chúng ta hãy xem một số lệnh cơ bản hơn, thao tác tệp văn bản và chuyển hướng đầu vào và đầu ra cho 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 bảng phân tích cơ bản về tập lệnh shell và phác thảo dựa trên ví dụ về các vòng lặp, nhưng hãy chắc chắn kiểm tra các bài viết đó nếu bạn bỏ lỡ hướng dẫn về tập lệnh shell của chúng tôi cho đến nay.
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ú 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 mục đích khác, thì tất cả chúng ta đã phát điên từ lâu. Chuyển hướng cho phép chúng ta 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 ta cũng có thể sử dụng các tệp làm đầu vào cho các lệnh khác.
Trước khi chúng ta tiếp tục, hãy bao gồm 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ỉ đơn giản là in (hiển thị) toàn bộ đối số của nó trên dòng lệnh dưới dạng đầu ra
đối số tiếng vang với không gian
Như bạn có thể thấy, các nhân vật đặc biệt cần phải được thoát ra khỏi phạm vi tình dục để họ đượ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 gạch chéo ngược (\) phía trước ký tự. Đó là một ý tưởng tốt hơ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, dấu ngoặc đơn và dấu kép hoạt động khác nhau. Để biết thêm thông tin, hãy xem Sự khác biệt giữa Dấu ngoặc đơn và Dấu ngoặc kép trong Bash Shell?
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.
tập tin mèo_to_be_read
Giả sử chúng ta tạo tệp văn bản này bằng nano:
Khi chúng ta sử dụng lệnh cat trên tệp, chúng ta có thể thấy đầu ra của nó.
grep - Đây là một trong những lệnh mạnh mẽ và hữu ích nhất dành cho bạn trong Linux. Nó là viết tắt của In biểu thức toàn cầu / thường xuyên. Nó xem qua một tập tin và in bất kỳ dòng nào phù hợ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, nên một dòng ngắn gọn có thể mang lại vô số mẫu phù hợp. Mặc dù vậy, không, bạn có thể nhập một con chim nhạn để tìm kiếm.
tập tin mẫu grep
Tôi đảm bảo với bạn, grep có thể làm được nhiều hơn, nhưng bây giờ chúng ta hãy gắn bó với những thứ dễ dàng hơn.
Chuyển hướng đầu ra
Để chuyển hướng đầu ra của lệnh sang tệp, chúng tôi sử dụng một ký tự đặc biệt, ký hiệu lớn hơn (>).
Chúng ta hãy thay đổi danh sách của chúng tôi, phải không? Nhập lệnh sau:
echo pepperoni> danh sách
Bạn có thể thấy tiếng vang đó không hiển thị dòng nữa và khi chúng ta xem nội dung của tập tin danh sách của Wikipedia, chúng ta thấy những gì chúng ta lặp lại ở đó.
Cũng lưu ý rằng các nội dung trước đó trong danh sách của Wap đã 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 ta chỉ muốn thêm vào một tệp hiện có. Đối với điều này, chúng tôi sử dụng hai biểu tượng lớn hơn liên tiếp:
ớt vàng vang vọng >> danh sách
Dễ dàng! Chúng ta hãy sử dụng lệnh này để tạo một danh sách lớn hơn, chúng ta sẽ?
Chúng tôi đi đây. Tôi nghĩ bạn có thể thấy lý do 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 ta hãy lấy đầu ra của một lệnh và đặt nó vào một tệp:
ls -al /> ~ / danh sách gốc
Lập danh sách các tệp, chỉnh sửa chúng, rồi chạy các lệnh trên những thứ bạn muốn chưa bao giờ đơn giản hơn. Và, trong khi chúng ta đ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 Chaining
Đường ống được đặt tên như vậy vì nó sử dụng đường ống, (|; được chia sẻ với phím \ trên hầu hết các bàn phím). Về cơ bản, nó nhận đầu ra của một lệnh và trực tiếp đưa nó đến 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ư ăn trưa, ngoại trừ nó có thể bị xiềng xích nhiều lần và hiệu quả của nó nói chung 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-canh để làm cho nó bỏ qua trường hợp.
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 (<).
con mèo < list
Không có gì khác biệt so với việc sử dụng một đối số! 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 các chuỗi kết hợp với nhau.
Chúng ta hãy nói rằng chúng tôi muốn lọc bất kỳ từ nào có trong đó từ tập tin danh sách hiện tại của chúng tôi thành tập tin mới có tên là Phiên bản cải tiến.
sửa đổi grep pep
Hãy làm lại lệnh này và thêm một số sắp xếp.
sửa đổi grep pep
Điều này sẽ sử dụng ngôn ngữ tiếng Anh là thuật ngữ tìm kiếm từ tệp đầu vào Danh sách trực tuyến, sắp xếp nó theo thứ tự bảng chữ cái (tất cả các thuật ngữ viết hoa theo sau bởi tất cả các thuật ngữ viết thường).
Để minh họa lệnh sắp xếp, hãy xem ví dụ sau:
Như bạn có thể thấy, việc thêm cờ -Fv 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 ta dễ dàng sắp xếp thứ tự các dòng trong tệp văn bản và bỏ qua viết hoa khi không thành vấn đề.
Một kịch bản đơn giản
Hãy tạo một tập lệnh có dạng sau:
tập lệnh tìm kiếm listfile
Nó sẽ sử dụng thuật ngữ và sử dụng grep để tìm kiếm thông qua tệp danh sách, sắp xếp kết quả và sau đó xuất chúng sang tệp khác.
Đây là thư mục mà chúng tôi sẽ kiểm tra tập lệnh trong:
Và, chúng ta có thể tạo một danh sách những gì ở đây, sau đó chạy tập lệnh.
Có bạn đi! Bạn càng tìm hiểu các quy tắc của biểu thức chính quy, bạn càng có thể kết hợp một lệnh tìm kiếm chính xác hơn. Và, bất cứ điều gì hợp lệ trong dấu ngoặc kép đều có thể được thay thế cho đối số đầu tiên của bạn!
Theo như sắp xếp, bạn có thể làm nhiều hơn là chỉ sắp xếp theo thứ tự abc. Hãy xem trang man cho một số lệnh sau:
- tsort - một chức năng sắp xếp tôpô tiên tiến hơn
- tr - cho phép bạn ánh xạ các ký tự cụ thể sang các ký tự khác và phiên âm giữa chúng.
- uniq - loại bỏ bất kỳ không duy nhất (đọ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 để phân tách các trường trong tên tệp
- cắt, dán / nối - các lệnh hữu ích để cách ly các trường khỏi tệp văn bản và thêm dữ liệu mới vào cột
- look - 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 có được số từ, số dòng, số ký tự và hơn thế nữa
Chúng tôi đã xem xét một số điều 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 ta 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 với nó là chìa khóa.
Một số kịch bản yêu thích của bạn là gì? Có bất kỳ tập lệnh sử dụng đặc biệt cho các tập tin dựa trên văn bản? Chia sẻ những gì bạn biết trong các ý kiến!