2013-06-21 37 views
40

Tôi thường quên chạy lệnh bằng sudo. Tôi đang tìm cách tạo một hàm bash (hoặc bí danh) để lặp lại lệnh cuối cùng với sudo. Một cái gì đó như:Lặp lại lệnh cuối cùng với "sudo"

S() { 
    sudo $(history 1) 
} 

Bất kỳ ý tưởng nào?

+0

Cần thêm công việc cho bí danh: http://superuser.com/questions/240180/creating-an-alias-containing-bash-history-expansion –

Trả lời

11

!! thể được sử dụng để tham khảo các lệnh cuối cùng. Vì vậy:

sudo !! 
19

Không đủ?

sudo !! 

nếu bạn muốn S chỉ cần đặt:

alias S=sudo 

và sử dụng nó

S !! 

các !! nghĩa là last command

+1

Đẹp. Sử dụng của tôi là ngay lập tức chuyển đổi một dòng lệnh tinh tế thành một kịch bản: 'echo !! > script.sh' – FractalSpace

+8

Tôi có bí danh là "vui lòng". Nó làm việc trên mẹ, nó hoạt động trên thiết bị đầu cuối của tôi. –

8

Sử dụng alias redo='sudo $(history -p !!)'. Đây là điều duy nhất mà tôi thấy rằng hoạt động với bí danh. Các câu trả lời khác không hoạt động trong các bí danh vì một lý do nào đó, đã tự thử chúng, mặc dù chúng hoạt động khi chạy trực tiếp chúng.

Các vấn đề liên quan