OJF*_*ord 8 terminal sudo bash shell command-line
经常在终端中(尽管我完全希望任何答案都适用于 bash 和大多数其他人),我输入一些命令,然后由于缺少sudo.
好的,所以按“向上”,按住/锤“向左”,输入sudo并点击“输入”。
这很烦人。命令越长,越是如此。
请注意,丢失sudo是最坏的情况;比开头更接近结尾的错字同样令人讨厌。
我想要的是一种执行“向上和主页”键击的方法。实际上,也许这两招就可以了 - 但我的 Macbook 键盘没有 Home,所以我无法尝试。
sudo也可以通过 CMD+Shift+S 自动神奇地插入和点击“输入”的方法的奖励积分。
这能做到吗,还是我在做梦?
Has*_*tur 16
只需使用UP和CTRL-A。
两者兼而有之!sudo,sudo !!功能简单。有区别:
sudo !!将sudo在开头执行从历史记录中获取的最后一条命令。
!sudo将执行历史记录中以sudo.
通常CTRL-A将您带到 linux 终端中行的开头和CTRL-E结尾。
如果您愿意,您可以继续使用您的策略。您只需要发现系统的快捷方式。您可以找到图形和文本环境中的快捷方式列表,例如此处。
只是一个警告:sudo !!而且!sudo运行速度非常快,并且您无法对以超级用户身份运行的行进行可视化控制。这有时会导致有害。特别是如果您遇到印刷错误。
让我们做一个戏剧性的例子:
cd $HOME/Directory_To_Delete # You go to delete what is inside a directory
rm -rf . ; cd .. # You do it and go up of one
apt-get update # Note the space in the beginning of the line
sudo !! # Gone!! Now you realize you never really wanted
Run Code Online (Sandbox Code Playgroud)
太晚了,您刚刚删除了主目录和所有子文件夹!.
当您编写一个以空格作为第一个字符的命令时,它可能不会在历史记录中完成。这取决于变量 $HISTCONTROL 的值。如果其值列表包含ignorespace(或ignoreboth),则以空格字符开头的行不会保存在历史列表中。所以用 sudo !! 您将执行之前的最后一个命令。
您可以想象与 类似的情况!sudo,它将执行sudo历史记录中记录的最后一个命令,但是如果您记得的最后一个命令以空格开头...现在您知道您将使用另一个。
最后一点:你的错误越少越戏剧化,它可能是狡猾的,因为它可以在你没有注意到的情况下通过......而且你将冒着被要求支付你不记得的账单的所有利息的风险。
更新(Bash 很棒):
使用最新版本的 Bash 可以使用以下我建议放入~/.bashrc文件的命令来修复这种危险行为:
shopt -s histverify
Run Code Online (Sandbox Code Playgroud)
从man bash你可以阅读
如果启用了histverify shell 选项并且正在使用readline,则历史替换不会立即传递给 shell 解析器。相反,扩展的行被重新加载到 readline 编辑缓冲区中以进行进一步修改。
因此,您可以阅读并在需要时修改将要执行的命令。
由于它不是许多发行版中的默认设置,因此我们在使用其他帐户时仍然必须记住它。
小智 5
以下是许多 Mac 和 Linux 程序使用的一些常见键盘组合(但不确定大多数 Windows 应用程序遵循哪些组合):
| 归档时间: |
|
| 查看次数: |
2672 次 |
| 最近记录: |