例如:

例如:

我是一名 Ubuntu 用户,没有太多经验,一直在使用sudo

做什么sudo !!以及怎么做?

答案1

!!在 bash 中是前一个命令的别名(参见事件指示器)。因此它会以权限重新运行上一个命令sudo

答案2

sudo bang bang在命令行界面下工作时是一个非常有用的命令。

一些 Linux 发行版要求您以用户身份而不是管理员身份登录。

因此,要以管理员身份执行某些操作,您必须使用sudo(Super-User DO) 继续执行命令,这会告诉系统“您将执行此操作,因为我这么说。” !! / bang-bang (! = bang) 基本上是一个快捷方式,您可以用来重复上一个命令。

因此,典型的情况是,您尝试一个命令,它会返回一条消息,提示您必须以管理员身份执行该命令。因此,您可以键入sudo以超级用户/管理员身份运行该命令,也可以键入sudo !!where!!告诉系统使用之前尝试的命令。超滤

还有许多其他的 bang 命令。有关它们的列表及其解释,请查看Linux Bang 命令, 也可以看看Bash 历史记录和 bang 命令

答案3

bang bang (!!)命令是重复并运行上一个命令您在终端中输入的命令。当您忘记需要管理员权限才能执行特定操作时,此命令非常有用,并且只需输入以下内容即可使用超级用户权限重复此操作:

sudo !!

!!抓住最后的运行命令。

例如:

apt-get update

输出将是,

E:无法打开锁定文件 /var/lib/apt/lists/lock - open (13:权限被拒绝)
E:无法锁定目录 /var/lib/apt/lists/
E:无法打开锁定文件 /var/lib/dpkg/lock - open (13:权限被拒绝)
E:无法锁定管理目录 (/var/lib/dpkg/),您是 root 吗?

之后,如果我们运行sudo !!命令,输出将是

Hit http://extras.ubuntu.com saucy/main amd64 Packages
Get:3 http://mirror.sov.uk.goscomb.net saucy-updates Release.gpg [933 B]
Hit http://ppa.launchpad.net saucy Release                                  
Hit http://extras.ubuntu.com saucy/main i386 Packages 
Hit http://mirror.sov.uk.goscomb.net saucy Release                             
99% [Waiting for headers] [Waiting for headers] [Waiting for headers]

这意味着!!部分抓取前一个运行的命令apt-get update,并且前面的sudo部分使命令以超级用户权限运行。

如何以超级用户权限运行sudo !!上一个命令的意思是,通常我们在终端上输入的所有命令都存储在中command historyhistory在终端上运行命令,它会显示你输入的所有命令。!!其中的部分sudo !!抓取存储在命令历史记录中的最后一条命令,而整个sudo !!以管理员权限运行最后一条命令。

其他砰砰命令解释如下博客文章

答案4

!!是语法上最简单、也可能是最常见的表达历史扩展

您可能已经注意到,在用 替换最后执行的命令后!!,bash 会执行两件事(在其默认配置中):

  1. 带有替换文本的完整命令将显示给您。

    例如,如果您的命令是lshw -c video,并且您接下来运行sudo !!,那么历史扩展后的命令是sudo lshw -c video

  2. 该命令已运行。

通常这两个步骤不会中断,并且没有用户交互的机会,因为shopt histverify默认情况下未设置(shopt -u histverify)。

然而,如果你启用shopt histverifyshopt -s histverify),那么历史记录扩展的工作方式会有所不同:

  1. 您将获得一个新的主提示符,其中自动输入了扩展的文本。就好像您自己输入了该文本,光标位于末尾,但尚未运行命令。
  2. 然后,您(用户)必须按Enter来运行该命令。或者您可以编辑该命令、取消它(Ctrl+ C)等。请注意,这不是特殊提示,而是常规主提示。这真的就像您自己输入文本一样。

(请注意histverify shell 选项仅在以下情况下生效readline 库正在使用——但是当你在 Ubuntu 或其他 GNU/Linux 系统上以交互方式使用 bash 时,基本上总是如此。)

shell 选项是否histverify启用,历史扩展与许多其他 shell 扩展不同。其他 shell 扩展不会在命令运行前显示扩展后的命令。与其他旨在以交互和非交互方式使用的扩展(例如,在 shell 脚本中)不同,历史扩展几乎总是以交互方式使用。

相关内容