$_
đang mở rộng thành ./access.log
(đối số cuối cùng của lệnh được thực thi cuối cùng), không ./data/log.sample
.
Vì vậy, bạn đang thực sự nhìn thấy số lượng dòng ./access.log
.
Chuyển hướng ( >
) không phải là một phần của head
lệnh vì nó được thực hiện bởi shell trước khi head
lệnh thậm chí được bắt đầu. Do đó với $_
bạn sẽ nhận được ./access.log
.
Từ man bash
:
($ _, một dấu gạch dưới.) Khi khởi động shell, được đặt thành tên đường dẫn tuyệt đối được sử dụng để gọi shell hoặc shell script đang được thực thi như được truyền trong môi trường hoặc danh sách đối số. Sau đó, mở rộng đối số cuối cùng sang lệnh trước đó , sau khi mở rộng. Cũng được đặt thành tên đường dẫn đầy đủ được sử dụng để gọi từng lệnh được thực thi và được đặt trong môi trường được xuất sang lệnh đó. Khi kiểm tra thư, tham số này giữ tên của tệp thư.