Rất hữu ích khi bạn quên một sudo ở đầu lệnh của bạn, !!
hoạt động như một bí danh của lệnh trước đó. Thí dụ :
$ mv /very/long/path/for/a/protected/sensible/file/caution.h .
(...) Permission denined
$ sudo !!
sudo mv /very/long/path/for(...) .
[sudo] password :
- Làm thế nào để chúng ta gọi đó là
!!
lừa đôi ? Các nghiên cứu qua internet rất khó khăn vì mã thông báo đó. - Làm thế nào nó hoạt động ? Tôi nghi ngờ một liên kết với lệnh lịch sử.
- Nó được định nghĩa ở đâu? Tôi có thể tự định nghĩa một số khác?
EDIT: Một số nhà thiết kế sự kiện thú vị
!!:*
Nó đề cập đến các đối số của lệnh trước đó. Trường hợp sử dụng:
cat /a/file/to/read/with/long/path
nano !!:*
:p
Chỉ cần in lệnh mà không thực hiện nó, bạn phải đặt nó ở cuối trình chỉ định sự kiện.
$ !-5:p
sudo rm /etc/fstab -f
Đó là một trường hợp đặc biệt của việc mở rộng lịch sử, trong đó trình bao cố gắng mở rộng một từ bắt đầu bằng
—
chepner
!
một lệnh khớp trong danh sách lịch sử của trình bao hiện tại. !!
là trường hợp đặc biệt, tương đương với !-1
, trong đó một số âm n
theo sau !
chỉ đến lệnh thứ n trước.
@Costas, hữu ích hơn, đọc
—
tự đại diện
LESS='+/^HISTORY EXPANSION' man bash
.
man history