gpt4 book ai didi

fish - 使用 sudo in fish 运行最后一个命令仅在没有参数时才有效?

转载 作者:行者123 更新时间:2023-12-03 18:12:44 25 4
gpt4 key购买 nike

我正在尝试编写一个函数,它的作用相当于 sudo !!在巴什。它有效,但仅当最后一个命令没有参数时。

到目前为止的功能是:

function s --description "Run last command (or specified command) using sudo"
if test $argv
switch $argv[1]
case '!!'
command sudo (echo $history[1])
case '*'
command sudo $argv
end
else
command sudo fish
end
end

测试相关行:
$ command sudo whoami
root
$ whoami
nick
$ command sudo (echo $history[1])
root

到目前为止一切顺利,现在让我们尝试一个带有几个参数的命令:
$ echo hi >> /etc/motd
An error occurred while redirecting file '/etc/motd'
open: Permission denied
$ command sudo (echo $history[1])
sudo: echo hi >> /etc/motd: command not found

嗯,奇怪。

最佳答案

使用 eval 让它工作。

function sudo --description 'Run command using sudo (use !! for last command)'
if test (count $argv) -gt 0
switch $argv[1]
case '!!'
if test (count $argv) -gt 1
set cmd "command sudo $history[1] $argv[2..-1]"
else
set cmd "command sudo $history[1]"
end
case '*'
set cmd "command sudo $argv"
end
else
set cmd "command sudo fish"
end
eval $cmd
end

关于fish - 使用 sudo in fish 运行最后一个命令仅在没有参数时才有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22650715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com