OnWorks Linux và Windows Online WorkStations

Logo

Lưu trữ trực tuyến miễn phí cho máy trạm

<Trước | Nội dung | Tiếp theo>

Sự bành trướng

Mỗi lần chúng ta nhập lệnh và nhấn phím enter, bash thực hiện một số quy trình trên văn bản trước khi nó thực hiện lệnh của chúng ta. Chúng tôi đã thấy một số trường hợp về cách một chuỗi ký tự đơn giản, chẳng hạn như “*”, có thể có rất nhiều ý nghĩa đối với shell. Quá trình làm cho điều này xảy ra được gọi là mở rộng. Với sự mở rộng, chúng ta nhập một thứ gì đó và nó được mở rộng thành một thứ khác trước khi shell tác động lên nó. Để chứng minh ý của chúng tôi về điều này, chúng ta hãy xem bỏ lỡ chỉ huy. bỏ lỡ là một nội trang của trình bao tạo nên một nhiệm vụ rất đơn giản. Nó in ra các đối số văn bản của nó trên đầu ra tiêu chuẩn:



[tôi @ linuxbox ~] $ lặp lại đây là một bài kiểm tra

đây là một bài kiểm tra

[tôi @ linuxbox ~] $ lặp lại đây là một bài kiểm tra

đây là một bài kiểm tra


Điều đó khá đơn giản. Bất kỳ đối số nào được chuyển đến bỏ lỡ được hiển thị. Hãy thử một ví dụ khác:



[tôi @ linuxbox ~] $ tiếng vang *

Tài liệu máy tính để bàn ls-output.txt Hình ảnh Âm nhạc Hình ảnh Công khai Video

[tôi @ linuxbox ~] $ tiếng vang *

Tài liệu máy tính để bàn ls-output.txt Hình ảnh Âm nhạc Hình ảnh Công khai Video


Vậy điều gì vừa xảy ra? Tại sao không bỏ lỡ in "*"? Như chúng tôi nhớ lại từ công việc của mình với các ký tự đại diện, ký tự “*” có nghĩa là khớp với bất kỳ ký tự nào trong tên tệp, nhưng những gì chúng tôi không thấy trong cuộc thảo luận ban đầu là cách shell thực hiện điều đó. Câu trả lời đơn giản là shell mở rộng “*” thành một cái gì đó khác (trong trường hợp này là tên của các tệp trong thư mục làm việc hiện tại) trước bỏ lỡ lệnh được thực hiện. Khi phím enter là


được nhấn, trình bao tự động mở rộng bất kỳ ký tự đủ điều kiện nào trên dòng lệnh trước khi lệnh được thực hiện, vì vậy bỏ lỡ lệnh không bao giờ nhìn thấy “*”, chỉ có kết quả mở rộng của nó. Biết được điều này, chúng ta có thể thấy rằng bỏ lỡ cư xử như mong đợi.


 

Điện toán đám mây hệ điều hành hàng đầu tại OnWorks: