Không có ý nghĩa gì! #: 3 trong lệnh shell


29

Hướng dẫn cài đặt cho ack đề nghị cài đặt tập lệnh ack bằng lệnh này:

curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 !#:3 

Tôi giả sử rằng !#:3ở cuối là một loại tham chiếu ngược, nhưng nó có nghĩa là gì? Có tương đương trong zsh? Google đã không hữu ích.


5
Giả sử bash; man bash, sau đó tìm kiếm MỞ RỘNG LỊCH SỬ
Jeff Schaller

1
Nó có nghĩa là con mèo của tôi đi ngang qua bàn phím vào một thời điểm thực sự tồi tệ.
IQAndreas

@IQAndreas: Chà, đó là một lệnh hợp lệ, vì vậy con mèo của bạn phải đủ thông minh để đánh bại máy dò mèo . Rõ ràng đây không phải là một con mèo vô dụng. :-)
G-Man nói 'Phục hồi Monica'

Câu trả lời:


32

Đây là một cú pháp đặc biệt, được mở rộng bằng bash. Nó cũng hoạt động cho zsh.

Theo trang bash man (phần MỞ RỘNG LỊCH SỬ), mẫu mở rộng như sau:

  • Trình chỉ định sự kiện !# đề cập đến toàn bộ dòng lệnh được gõ cho đến naycurl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755
  • :phân chia giữa người chỉ định sự kiện (trường hợp này là toàn bộ dòng) và người chỉ định từ (chọn một phần phụ)
  • những vấn thiết kế từ 3 đó lựa chọn thứ ba từ / tranh luận (đếm các từ bắt đầu từ zero), trong trường hợp này ~/bin/ack.

Dòng lệnh cuối cùng (thường được hiển thị trước khi thực hiện) là : curl http://beyondgrep.com/ack-2.14-single-file > ~/bin/ack && chmod 0755 ~/bin/ack.

Để biết chi tiết, xem hướng dẫn bash hoặc rất giống với hướng dẫn zsh


7
Tôi không thể không tự hỏi: ai nghĩ tính năng này sẽ là một ý tưởng tốt?
Rhymoid

3
@Rhymoid, tôi không sử dụng !#nhiều, nhưng !!, !$, !*, !sud:pvà nhiều người khác đều là vô cùng hữu ích và tôi sử dụng tất cả thời gian. Kiểm tra unix.stackexchange.com/a/67/135943
tự đại diện

11

Trong bashđó, đó là sự thay thế lịch sử (tất cả sự thay thế lịch sử bắt đầu bằng !). Cụ thể, !#có nghĩa là mọi thứ trên dòng lệnh cho đến nay và phép cộng ': 3' có nghĩa là từ thứ ba (bắt đầu đếm từ 0).

Vì vậy, lệnh trên dịch !#:3thành ~/bin/ack.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.