Я хочу иметь возможность выполнить команду, она не работает, потому что у нее нет необходимых разрешений. Затем я могу написать «пожалуйста», чтобы выполнить команду, которую я только что выполнил.
Вот что я хочу сделать в терминале:
$ run command
"you don't have access to do that"
$ please
"ran successfully"
Я видел, что !!
это захватит предыдущую команду, поэтому я думал, что смогу использовать это, но не могу заставить ее работать.
Мой скрипт оболочки please.sh выглядит следующим образом, но я не могу заставить все это работать. Он просто говорит "команда не найдена !!" и распечатывает использование sudo.
#!/bin/zsh
#sudo !!
#sudo `!!`
sudo $(!!)
command-line
zsh
ДБ.
источник
источник
sudo !!
, он будет работать, как ожидалось? Я думаю !! может быть просто псевдонимом bash, поэтому он может не работать в zsh!!
и другие) работает только в интерактивных оболочках, а не в скриптах.sudo !!
в интерактивном режиме практически работает как положено. когда я нажал Enter, он заменил!!
бы предыдущей командой. Затем мне пришлось снова нажать Enter, чтобы запустить его.Ответы:
Вы не можете использовать
!!
в сценарии оболочки, так как вы не можете получить доступ к родительской оболочке в дочерней оболочке. Хотя я рекомендую использоватьsudo !!
, если вы действительно хотите создать BASH-скрипт, вы должны использовать .bash_history, вот так:Это определенно НЕ идеальное решение, но оно должно сработать.
Если вы используете ZSH, это не будет работать, так как ZSH не выводит в .bash_history (насколько я знаю).ОБНОВЛЕНИЕ : Вот версия, которая должна работать с ZSH:Надеюсь это поможет!
Если вы не понимаете скрипт, он просто запускает последнюю команду, введенную в BASH, с помощью sudo.
источник
fc
илиhistory
встроенные модули. По умолчанию $ HISTFILE не обновляется, пока вы не выйдете из bash.Добавьте к вашему .zshrc:
источник
fc
обозначает команду fix. Документация здесь .alias lastcmd="fc -ln -1 | pbcopy"
Я считаю , что это должно работать на Ubuntu (?):alias lastcmd="fc -ln -1 | xclip -selection clipboard
.