Я часто забываю выполнять команды с помощью sudo. Я'м ищу способ сделать функцию bash (или псевдоним) для повторения последней команды с
судо`. Что-то вроде:
S() {
sudo $(history 1)
}
Любые идеи?
Не хватает?
sudo !!
если вы хотите Ы
проще говоря:
alias S=sudo
и использовать его
S !!
в !!
про последний приказ
Использование псевдонимов повтор='судо $(история -Р !!)'`. Это единственное, что я обнаружил, что работает с псевдонимами. Других ответов не работают в псевдонимы почему-то, испробовав их на себе, даже если они работают, когда непосредственно работает с ними.
!!
может быть использован для ссылки на последнюю команду. Так:
sudo !!
Добавляя и развивая Аарон Франке's не ответ (что правильно, но не хватает, зачем), что просто набрав повтор
работает после настройки псевдоним псевдонимов переделывать='судо $(в анамнезе -Р !!)`;
Это единственное, что я нашел, что работает с псевдонимами
Есть несколько вещей происходит, которые требуют объяснения.
alias redo='sudo !!'
не'т работу, как это не'т выполнить судо
часть, хотя это не решит !!
.
Чтобы получить команду sudo !!чтобы правильно решить, директивы, резолюции оболочка должна выполнить и объединить вместе с
судо`. Так что мы делаем;
alias redo='sudo $(history -p !!)'
Указывая на правую сторону псевдоним $(история -Р !!)
, это нужно сказать к оболочке;
переделать
- это псевдоним, оценки справа от =
судо
остается как есть, и это добавляется к...$ ()
- это оболочка директива, чтобы выполнить содержание в пределах текущего выполнения процесса (как противостоять суб-оболочки ` $ {}, которая порождает другой процесс для выполнения в пределах)!!
!!
расширяется до `истории -Р -р
часть говорит "история", чтобы распечатать только результаты, а не выполнятьсудо
, запускает остальные (сейчас печатается в той же командной строке), с повышенными привилегиями, предполагая, что пароль был введен правильноВ конечном итоге это означает, что история-п команда!!
эффективно выписывает постановление, а не выполняете после суда
.
Примечание: ' - Это крупное. Если вы используете
"В, С
!!` получает интерполированные в два раза и для достижения нашей цели мы должны очень внимательно контролировать действия разрешения; один/двойные кавычки в bash
ПС
Если вы're, используя ЗШ
+ О-мой-ЗШ
, есть судо
псевдоним на_
, такие, что вы можете сделать;
_ !!
Который будет повтор последней команды, как судо
. Однако, если вы'повторно настройка алиас в~/.zshrc, то
псевдоним переделывать='судо $(история -Р !!)` не получится как с ЗШ config как действия разные.
Что сказал, Вы можете поставить псевдоним в ~/.bashrc и "вместо"~/.zshrc и иметь тот же результат при выполнении псевдоним
повторить` из ЗШ (предполагая, что вы'вновь суб-обстрел ЗШ с Баша, хотя следует признать, что это немного Клудж - хоть и функциональная).