是否有一个 *nix 工具可以通过管道输入,在执行所有先前的命令之前强制显示确认提示?我正在考虑一种工具,它允许您将命令行片段放在网页上,但保证命令的剪切和粘贴以及意外粘贴 CR/LF 不会对目标计算机造成损坏。
这是一个简单的示例,假设有一个名为“confirm”的工具并将 dev 替换为“safedev”:
head -c 32 /dev/urandom | sudo openssl enc -rc4 -nosalt -pass stdin -in /dev/zero -out /dev/safedev | confirm
这个问题源于我自己的经历,通过从浏览器剪切和粘贴命令来破坏我的 mbr,它意外地抓住 CR/LF 并在我有机会将 sda 更改为 sdc 之前开始执行。我被迫重新创建 mbr 并在现有分区上重新安装 Ubuntu Gnome,以便恢复/重新创建我的主操作系统。
如果这个工具不存在,是否有另一种方式在网页上提供命令,可以在执行命令之前强制确认?也许是这样的?
confirm && head -c 32 /dev/urandom | sudo openssl enc -rc4 -nosalt -pass stdin -in /dev/zero -out /dev/safedev
答案1
如果您将复制的文本粘贴到嵌入了 CRLF 的终端中,则任何带前缀的命令都无法拯救您(事实上,将命令附加到结尾当所有奶牛离开谷仓后,管道将关闭门)。一些终端模拟器(例如iTerm2OSX 上)最近添加了 CRLF 检测和拦截来缓解此类问题。
一旦你解决了嵌入器 CRLF 的问题,你可能可以用类似的东西来伪造你想要的东西:
/bin/false && ( your commands here )
一旦您验证了您想要的就是您所拥有的,您就可以删除/bin/false &&
.
答案2
答案3
如同多普戈蒂的回答,但不那么火箭科学:只需输入#
:
#(这里是你的命令)