Я пользователь Ubuntu с небольшим опытом, и я использую sudo
.
Что sudo !!
делать и как?
command-line
sudo
RamHS
источник
источник
!!
части команды.!!
делать и как. Другой хочет метод сделать это.sudo !!
делает, и есть два ответа, которые на самом деле конкретно объясняют, что!!
делает.Ответы:
!!
в bash это псевдоним предыдущей команды (см. раздел «Обозначения событий» ). Таким образом, он повторно запускает предыдущую команду сsudo
разрешениями.источник
!
команды обычно недоступны в скриптах bash (только в интерактивных сеансах). Их можно отключить с помощьюset +o histexpand
.sudo bang bang
очень полезная команда при работе в интерфейсе командной строки.В некоторых дистрибутивах Linux вы входите как пользователь, а не как администратор.
Итак, чтобы сделать что-то административное, вы должны выполнить команду с
sudo
(DO-Super-User DO), которая говорит системе «вы сделаете это, потому что я так сказал». / bang-bang (! = bang) - это ярлык, который вы можете использовать, чтобы повторить предыдущую команду.Итак, типичный сценарий состоит в том, что вы пробуете команду, и она возвращает сообщение о том, что для этого вам нужно быть администратором. Таким образом, вы можете ввести ,
sudo
чтобы выполнить эту команду в качестве супер-пользователя / администратора, или вы можете ввести ,sudo !!
где!!
указывает системе использовать предыдущую команду , которая была предпринята попытка. НФГЕсть много других bang-команд. Список их и объяснения того, чем они являются , смотрите Linux Bang Commands , смотрите также Bash history и bang команды
источник
sudo
и посмотреть на командную строку.sudo
что-то забыли и получили сообщение об ошибке, поэтому вы сразу захотитеsudo
этогоsudo
не означает «делать супер-пользователя», оно идет так же, как команда, как если бы я это делалsu
(su означает переключение пользователя [и не супер-пользователя]); т.е. вы можете использовать команды sudo как любой пользователь, а не только root (-u
switch);su [user] [-c command]
su
, не стоит за такую вещь. См linux.die.net/man/1/su , gnu.org/software/coreutils/manual/html_node/su-invocation.html , linfo.org/su.html . Это должно означать замену пользователя .Команда
bang bang (!!)
- это сочетание клавиш для повторения и запуска предыдущей команды , введенной вами в вашем терминале. Эта команда очень полезна, когда вы забываете, что вам нужны права администратора для выполнения определенного действия, и позволяет вам повторить ее с правами суперпользователя, просто набрав:!!
захватывает команду последнего запуска.Например:
Выход будет,
После этого, если мы запустим
sudo !!
команду, вывод будетЭто означает, что
!!
часть захватывает предыдущую команду запуска,apt-get update
а предыдущаяsudo
часть заставляет команду работать с правами суперпользователя.И как эти
sudo !!
пробеги предыдущая команды с привилегиями суперпользователя средства, обычно все команды , которые мы вступили на терминале, хранятся вcommand history
.runhistory
команды на терминале, он показывает все команды , которые вы entered.The!!
части вsudo !!
ухватить последнюю команда хранится в истории команд и в целомsudo !!
запускается последняя команда с правами администратора.Некоторые другие команды bang описаны в этом посте .
источник
mkdir LongDirectoryName
иcd !$
должны быть выпущены отдельно, чтобы работать, если толькоLongDirectoryName
это не было последним словом предыдущей команды. Для целей истории оболочки,mkdir LongDirectoryName; cd !$
это одна команда. История взаимодействия с!!
,!^
и!$
использование последней команды, которую оболочка фактически полностью обработала перед просмотром!
. Вот пример. Если вы запустите,history
вы увидите, что команды в строке, к которой;
они присоединены , запоминаются как одна команда.Ответ состоит из двух частей:
!!
иsudo
!!
является частью функциональности оболочки (в случае с Ubuntu это, вероятно, bash, но другие оболочки, такие как zsh или csh, тоже поддерживают это), называемое «расширением истории». Он ведет себя аналогично другим расширениям в том, что оболочка расширяет «заполнитель» до набора слов. Хотяfoo*
будет расширен до списка всех файлов, начинающихся с 'foo',!!
будет расширен до содержимого предыдущей командной строки.Как и в других расширениях, это делается полностью оболочкой, поэтому, если вы наберете
!!
после какой-либо другой команды, эта команда не будет знать, что там было!!
, но увидит только предыдущую командную строку. (В отличие от других расширений, расширение истории происходит до того, как команда будет сохранена в истории, то есть вместо!!
замещенной командной строки будет сохранено в истории.)Команда
sudo
позволяет выполнять команды от имени другого пользователя при условии, что права доступа предоставлены политикой безопасности (по умолчанию настроено в/etc/sudoers
).По умолчанию пароль пользователя root не установлен в Ubuntu. Для выполнения задач системного администрирования пользователю, созданному во время установки, предоставляются права sudo. Теперь этот пользователь может выполнить любую команду в командной оболочке от имени пользователя root, просто добавив его
sudo
. Некоторые программы с графическим интерфейсом также используют механизм sudo, например, управление пакетами.Причина, по которой
sudo
другие команды могут выполняться от имени пользователя root (или другого пользователя), заключается в том, что для двоичного файла sudo (/usr/bin/sudo
) установлен бит setuid и он принадлежит пользователю root. Любой (двоичный) исполняемый файл с установленным битом setuid запускается с разрешениями своего владельца. Это означает, что sudo эффективно работает с правами root, независимо от того, какой пользователь на самом деле вызвал его. Только внутренняя политика безопасности sudo определяет, какому пользователю разрешено и что мешает произвольным действиям произвольных пользователей.Итак, в случае с
sudo !!
этим средствомв основном идентичен
просто меньше печатать. В обоих случаях sudo просто видит
mount /dev/sdb1 /mnt
и запускает его с правами root.источник
!!
является синтаксически самым простым и, вероятно, наиболее распространенным выражением для расширения истории .Как вы могли заметить, после подстановки последней выполненной команды
!!
bash делает две вещи (в конфигурации по умолчанию):Полная команда с замененным текстом показана вам.
Например, если ваша команда была
lshw -c video
и вы запускаетеsudo !!
следующую, то команда после расширения истории - этоsudo lshw -c video
.Эта команда запускается.
Обычно эти два шага выполняются без прерывания и без возможности взаимодействия с пользователем, поскольку
shopt histverify
по умолчанию не установлены (shopt -u histverify
).Однако, если вы включаете
shopt histverify
(shopt -s histverify
), то расширение истории работает иначе:(Обратите внимание, что параметр
histverify
оболочки вступает в силу только в том случае, если используется библиотека readline - но когда вы используете bash в интерактивном режиме в Ubuntu или другой системе GNU / Linux, это по сути всегда так.)Независимо от того
histverify
, включена ли опция оболочки , расширение истории отличается от многих других расширений оболочки. Другие расширения оболочки не показывают расширенную команду до ее запуска. В отличие от других расширений, которые предназначены для интерактивного и неинтерактивного использования (например, в сценарии оболочки), расширение истории почти всегда используется в интерактивном режиме.источник
! используется в Linux для ярлыков, связанных с историей Так, !! просто запустит предыдущую команду, которую вы выполнили.
Это очень полезно в тех случаях, когда вы либо забыли поставить sudo перед командой, которая требует этого, либо получили разрешение «Отказано», либо просто сделали что-то подобное.
и вы сделали.источник
!! Повторим и выполним предыдущую команду, и с помощью sudo она даст команде привилегию root. (Это не на странице руководства? !! Я не могу видеть это там.)
источник
man --pager='less -p "Event Designators"' bash