Terminal 终端sudo命令

Terminal 终端sudo命令,terminal,Terminal,我是Mac leopard终端的新手,希望能从网络上获得一条生命线,因为我确实遇到了麻烦 我想在终端中以根用户身份运行脚本。脚本保存为扩展名为.rtf的文本文件。我已在终端中插入: sudo filename.rtf 然后我被问到一个密码,我已经在管理员密码中输入并按下回车键;然后显示提示:sudo:Mac:command not found 我尝试过隐藏扩展名,但得到了相同的结果。有人指出我做错了什么吗 提前感谢您需要首先将脚本从.rtf文件中取出并放入纯文本文件中,在TextEdit中打开

我是Mac leopard终端的新手,希望能从网络上获得一条生命线,因为我确实遇到了麻烦

我想在终端中以根用户身份运行脚本。脚本保存为扩展名为.rtf的文本文件。我已在终端中插入:

sudo filename.rtf
然后我被问到一个密码,我已经在管理员密码中输入并按下回车键;然后显示提示:sudo:Mac:command not found

我尝试过隐藏扩展名,但得到了相同的结果。有人指出我做错了什么吗


提前感谢

您需要首先将脚本从.rtf文件中取出并放入纯文本文件中,在TextEdit中打开它,然后从“格式”菜单中选择“生成纯文本”,然后将其再次保存为myscript.sh

现在你可以打字了

sudo sh myscript.sh

神奇的sh字母是因为正如另一个回复者所说,sudo会暂时将你提升为超级用户并运行一个程序。在*nix环境中,这将是设置了可执行位的任何内容,这意味着有人明确告诉操作系统运行文件是安全的。在您的情况下,您的myscript.sh并没有以这种方式受到祝福,因此要运行它,您需要将它输入到一个知道如何理解它的程序中。该程序是sh,它确实设置了可执行位。将它看作sudo sh myscript.sh可能会使它更清晰一些

如果您计划大量运行此脚本,您可能希望实际使其能够自行执行。这相当于在文件中放入特殊指令,告诉操作系统文件应该如何运行。如果你坚持/bin/sh这称为shebang行,在脚本的第一行告诉操作系统如何处理您的文件,然后键入chmod u+x myscript.sh这告诉操作系统您,并且只有您可以执行您的文件,您可以使用sudo myscript.sh直接运行该文件。

sudo作为机器的根用户用于执行命令

你打字的时候

sudo [somthing]
shell授予临时根权限,然后执行给定的somthing

假设您的脚本在bash中,您应该已经完成了

sudo sh filename.rtf
另外,最好将脚本保存为纯txt,并带有sh扩展名,以便执行

sudo sh myscript.sh

首先将脚本设置为可执行文件:

chmod +x filename.rtf
然后您可以这样运行它:

sudo ./filename.rtf

使用纯文本,而不是rtf!TextEdit中有一个保存为或导出/转换为纯文本的选项,但我已经有一段时间没有使用Mac了,所以我记不清它是如何完成的。欢迎使用Stack Overflow!你的问题可能更适合我。我已投票决定将其移到那里;五个人投票后,它会自动移动。@Greg,我认为这是两回事。这个问题与编程有关,比如有人会问如何正确使用gcc、make等-1因为rtf包含随机格式化字符…99%的几率像这样执行它是行不通的。看南瓜的answer@davr,我假设他只是添加了文件扩展名.rtf,而不是一个富文本格式的文件。谢谢你的否决票,我很感激。因为尽管在这种特殊情况下它不起作用,但这确实回答了OP的问题,对他将来也很有用。只是不是为了这个特殊的fle。也许可以解释一下“sh”这个神奇字母的作用,询问者似乎很新,可能不理解为什么需要它们。谢谢你的建议:我编辑它是为了更清楚一点。