Có cách nào trong Bash để nhớ lại đối số của lệnh trước không?
Tôi thường làm vi file.c
theo gcc file.c
.
Có cách nào trong Bash để nhớ lại đối số của lệnh trước không?
Có cách nào trong Bash để nhớ lại đối số của lệnh trước không?
Tôi thường làm vi file.c
theo gcc file.c
.
Có cách nào trong Bash để nhớ lại đối số của lệnh trước không?
Câu trả lời:
Bạn có thể sử dụng $_
hoặc!$
gọi lại đối số cuối cùng của lệnh trước đó.
Cũng Alt + .
có thể được sử dụng để gọi lại đối số cuối cùng của bất kỳ lệnh nào trước đó.
!!:1
, !!:2
vv ( !!:0
được lệnh trước đó.) Xem gnu.org/software/bash/manual/bashref.html#History-Interaction
!$
, bạn sử dụng !^
cho đối số đầu tiên.
echo tiger rabbit
, làm thế nào tôi có thể tham khảo tiger
tại lệnh sau?
Alt + .
không hoạt động ở chế độ vi. Chỉ cần FYI, cho những người khác đã nhầm lẫn ở đây.
Nếu lệnh trước có hai đối số, như thế này
ls a.txt b.txt
và bạn muốn cái đầu tiên, bạn có thể gõ
!:1
cho
a.txt
Hoặc nếu bạn muốn cả hai, bạn có thể gõ
!:1-2
cho
a.txt b.txt
Bạn có thể mở rộng điều này cho bất kỳ số lượng đối số, ví dụ:
!:10-12
-bash: :1-2: bad word specifier
ls a.txt
dòng 2ll !:1-2
!:^-$
có thể được sử dụng hoặc tất nhiên mã tương tự kết hợp với số.
!!:n
Ở đâu n
là vị trí 0 dựa trên những lập luận mà bạn muốn.
Ví dụ:
echo 'one' 'two'
# "one two"
echo !!:2
# "two"
Các !
tiền tố được sử dụng để các lệnh trước đó truy cập.
Các lệnh hữu ích khác:
!$
- đối số cuối cùng từ lệnh trước!^
- đối số đầu tiên (sau chương trình / tích hợp / tập lệnh) từ lệnh trước!!
- lệnh trước đó (thường được phát âm là "bang bang")!n
- số lệnh n
từhistory
!pattern
- khớp lệnh gần đây nhất pattern
!!:s/find/replace
- lệnh cuối cùng, thay thế find
bằngreplace
!!:s/find/replace
, bạn cũng có thể ^find^replace
.
!*
- tất cả các đối số từ lệnh trước đó (sau chương trình / tích hợp / tập lệnh). ví dụ: ls *.tmp *.cache rm !*
Trong dòng lệnh, bạn có thể nhấn esc- .hoặc alt+.
Nó quay vòng qua đối số cuối cùng của các lệnh trước đó của bạn.
↑
và ↓
các phím để làm việc là tốt.
Nếu bạn biết số được đưa ra trong lịch sử cho một lệnh cụ thể, bạn có thể thực hiện bất kỳ đối số nào trong lệnh đó bằng các thuật ngữ sau.
Sử dụng sau để lấy đối số thứ hai từ lệnh thứ ba trong lịch sử,
!3:2
Sử dụng sau để lấy đối số thứ ba từ lệnh cuối cùng thứ năm trong lịch sử,
!-5:3
Sử dụng một dấu trừ, bạn yêu cầu nó đi qua từ lệnh cuối cùng của lịch sử.
! * chạy một lệnh mới với tất cả các đối số trước đó.
ls /tmp
cd !*
#you are now in /tmp
$_
thay thế.
Có, bạn có thể sử dụng !$
để gọi lại đối số cuối cùng của lệnh trước.