cá: sudo: !!: lệnh không tìm thấy


8

Tôi có cá được cài đặt trong Linux Mint DE của tôi. Tôi thực sự thích cách cá làm cho mọi thứ dễ dàng hơn và nó trông rất đẹp mặc dù tôi không tìm thấy câu trả lời chính xác về lý do tại sao tôi không thể thực hiện:

sudo: !!: command not found

Lúc đầu, tôi đã cố gắng để thoát khỏi dấu hiệu cảm thán bằng sudo !! nhưng cũng không hoạt động. Có ai biết tại sao điều này là thất bại?


Câu trả lời:


10

Tôi chưa tìm thấy một sự thay thế sẵn có cho !!Fish tuy nhiên bạn có thể viết một chức năng cho phép bạn tiếp tục sử dụng!!

Lấy từ câu trả lời này https://superuser.com/a/719538/226822

function sudo --description "Replacement for Bash 'sudo !!' command to run last command using sudo."
    if test "$argv" = !!
    eval command sudo $history[1]
else
    command sudo $argv
    end
end

Câu trả lời hay, Tuy nhiên, tôi phải viết nó ở đâu để tôi có thể thực hiện chức năng vĩnh viễn?
VaTo

Bạn có hai tùy chọn .config / fish / config.fish hoặc nếu bạn muốn giữ mọi thứ riêng biệt, hãy đặt chúng vào các tệp riêng lẻ trong .config / fish / tests / newfeft1.fish newfeft2.fish, v.v.
Nathaniel

@vato Trong trường hợp này, bạn có thể lưu mã ở trên vào ~ / .config / fish / tests / sudo.fish Tên của tệp phải khớp với chức năng bên trong.
frederickjh

9

Các !!cú pháp là một phần của tính năng thay thế lịch sử bash, mà cá không thực hiện. Xem liên kết này để thảo luận. Xin vui lòng cân nhắc trong đó về những gì bạn nghĩ rằng cá nên làm.

Sự thay thế hiệu quả nhất (về mặt nhấn phím) sudo !!là mũi tên lên để gọi lại mục lịch sử cuối cùng, ctrl-A để di chuyển đến đầu dòng, sau đó nhập sudo.


Ok, cảm ơn bạn đã làm rõ. Mặc dù, để chạy sudo với lệnh cuối cùng bằng cách đi qua lịch sử và sau đó ctrl + A không chỉ dành riêng cho cá, về cơ bản đó là cách bash hoạt động.
VaTo

4
@SaulOrtega anh ấy đã không tuyên bố nó là độc quyền từ cá, chỉ là phương pháp đó sẽ hoạt động trong cá, trong khi !!thì không.
casey

Hoặc thậm chí tốt hơn, sử dụng Ctrl+Pđể có được lệnh p revious và sau đó Ctrl+Ađi đến đầu dòng. Để sử dụng toàn bộ, hãy sử dụng Ctrl/Alt + B( B acicky) cùng với Ctrl/Alt + F( F trở đi ) để thay thế hoàn toàn các phím mũi tên, Ctrl+Eđể thay thế HomeCtrl+Hcùng với Ctrl+Wđể thay thế Backspace. Các phím tắt này hoạt động trong tất cả các shell và trong chế độ chèn của vim .
ossbfox

1

Nếu bạn !!chỉ sử dụng trong ngữ cảnh sudo !!, bạn có thể xác định liên kết phím với ^s(CTRL + s) để chuẩn bị sudo cho lệnh của bạn:

function prepend_command
  set -l prepend $argv[1]
  if test -z "$prepend"
    echo "prepend_command needs one argument."
    return 1
  end

  set -l cmd (commandline)
  if test -z "$cmd"
    commandline -r $history[1]
  end

  set -l old_cursor (commandline -C)
  commandline -C 0
  commandline -i "$prepend "
  commandline -C (math $old_cursor + (echo $prepend | wc -c))
end

Điều này cho phép nhập bất kỳ lệnh nào và thêm sudo trong khi gõ hoặc thích trong trường hợp của bạn để thay thế sudo !!

Xem bình luận của Ahti về cuộc thảo luận github


0

Câu trả lời của @ lố bịch đã lỗi thời. Cách nhanh nhất để đạt được tương đương sudo !!sẽ là Ctrl+ p/ up-arrow(tùy theo bạn thích) và sau đó Alt+ sđể thêm tiền tố vào lệnh sudo.

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.