Tôi thường muốn điều này. Khi tôi sử dụng csh (và tcsh), tôi đã có một thành ngữ:
!:88*:p
Thành ngữ này chèn "từ 88 đến từ cuối cùng" của lệnh trước đó tại điểm bạn đang gõ trên dòng lệnh hiện tại, thường là kết thúc. Trong csh, không có lỗi cho một biểu thức như vậy để không tạo ra từ. Đó là, không cần phải có một từ 88, cũng không có bất kỳ từ nào theo sau nó. Nếu không có từ 88, điều này sẽ không thêm từ nào vào cuối lệnh được gõ, và sau đó đẩy dòng lệnh kết quả vào lịch sử mà không thực hiện.
Như bạn có thể biết,
*! (như !! và! -1) là lệnh trước đó;
*: 88 là từ 88 (từ đầu tiên - thường là lệnh - bằng 0) và csh sẽ yêu cầu một từ như vậy tồn tại, nhưng ...
*: 88 * là tất cả các từ bắt đầu từ từ 88, và sau đó csh không yêu cầu từ tồn tại;
*: p có nghĩa là in, nhưng không thực thi dòng lệnh.
Có hoặc không có: p, dòng lệnh được thêm vào lịch sử lệnh.
"Tại sao 88?" bạn tự hỏi? Bởi vì nó là chìa khóa giống như * tôi sẽ cần. Nếu bạn có các lệnh dài, có lẽ !: 888 *: p là những gì bạn cần. Xin lỗi điều này không hoạt động với bash AFAIK. Bash sẽ chỉ nói
bash: :88*: bad word specifier
Thực tế thú vị: lệnh của bạn thường không cần phải là đầu tiên.
> /tmp/foo echo My command is word 3
có giá trị trong bash và csh.