如何执行命令行脚本?


17

在Windows中,我可以创建.bat文件。我双击它,所有行都被解释为好像已将其输入到控制台中。

在OS X中,我必须使用什么文件或程序?如果我想写一个文件;

 echo hello world

我想双击该文件,并使其在控制台中执行。我该怎么做?


双击该文件是否需要运行?还是只想通过键入文件名来运行该文件?
Phil M


双击文件会更快:)
Rodrigo

Answers:


24

OS X中的终端基础与Linux中使用的终端基础相同。您专门寻找的内容通常称为“ Shell脚本”。

打开时Terminal.app(位于中/Applications/Utilties)的默认外壳是bash外壳。

OS X具有内置的外壳处理程序,可通过.command扩展程序通过Finder和其他应用程序访问,尽管令人沮丧的是无法通过.sh扩展程序访问。但是,设置脚本以通过Finder运行仍然更加复杂。

  1. 创建一个简单的shell脚本,就像您的示例一样,我制作了一个Hello World应用程序:
#!/bin/bash
echo "Hello World"
  1. 将此文件另存为HelloWorld.command

  2. 授予该文件执行权限。chmod u+x HelloWorld.command应该这样做。

  3. 打开在Finder中保存此文件的目录。然后双击该HelloWorld.command文件。

这将打开一个终端并执行脚本,我的计算机上的输出如下:

$ /Users/jason/Applications/HelloWorld.command; 出口;
Hello World
注销

[处理完成]

执行此文件的另一种方法是自己仍在终端中,只需./HelloWorld.command假设您与该文件位于同一目录中,就可以发出该文件。

这样做将导致更简单的输出:

jason-mac应用程序$ ./HelloWorld.command
Hello World
jason-mac应用程序$

您刚刚在OS X中创建并执行了一个Shell脚本!


顺便说一句:令人沮丧的是,OS X不使用“ .sh”文件执行此操作,而仅使用“ .command”文件执行此操作。是的,可以更改此设置,但是.command已经存在,所以这是我建议的解决方案。
詹森·萨拉兹

您是否想问一个问题,如何将.sh注入启动服务数据库中?
bmike

您显然有这个主意(这种想法甚至还没想到),因此欢迎您这样做。
詹森·萨拉兹

我从你那里得到了这个主意
-ima

它给我:chown: u+x: Invalid argument
Rodrigo

4

Windows中的控制台或命令提示符等效于/ Applications / Utilities /

相当于DOS(或如今他们称呼它为DOS)的“ bash”

在Windows中,等效于批处理文件(.bat)的是Shell脚本(.sh)

只需在Google中搜索“ bash”“ reference”,其余的就可以弄清楚。我还建议您购买Bash Cookbook(O'Reilly)。

具体来说,这就是您要在终端窗口中键入以获取“ hello world”脚本的内容:

要创建文件:

    echo "echo hello world" > file.sh

更改权限以使文件可执行:

    chmod 755 file.sh

要运行脚本:

    ./file.sh

如果您希望能够从Finder中双击它,请右键单击(或按住Control单击)该文件,然后选择“获取信息”,然后在“打开方式”下,选择“终端”应用程序。或者,您可以使用.command扩展名而不是.sh扩展名。


2

您可能想看看AppleScript。Sal Soghoian的这本书被许多AppleScript入门书籍认为。

用户自动化Mac应用程序的另一种不错的方法是使用Automator。您可能还想尝试一下。希望这可以帮助。

更新资料

似乎您正在寻找类似Unix Shell脚本的内容。这两个 教程很不错,似乎涵盖了基础知识。


我看到了,但是AppleScript不是终端脚本。我认为您可以这样做:“转到终端并编写x命令”。好吧,.bat风格不是(更难一点)
Rodrigo

您似乎正在寻找Unix shell脚本。
Christian Correa

0

Shell脚本。我不认为“与众不同”是进行深入讨论的合适之地,但此处有一个非常详细的指南:http : //tldp.org/LDP/abs/html/index.html

Mac OS X已通过UNIX认证(从10.5开始)(对吗?),因此这里的知识也适用于Linux和其他类似UNIX的操作系统。

(以一种不太复杂的方式,Mac OS X的Automator和AppleScript Editor一样强大,它们都可以执行Shell脚本和程序中的其他命令,并将它们打包到一个方便的.app捆绑包中,以用于Launchpad或与之共享朋友)


从该指南的介绍中,我链接到:“一个称为脚本的shell程序,是一种易于使用的工具,可通过将系统调用,工具,实用程序和已编译的二进制文件“粘合在一起”来构建应用程序。 UNIX命令,实用程序和工具可用于Shell脚本的调用。如果这还不够的话,内部Shell命令(例如测试和循环结构)将为脚本提供更多功能和灵活性。”
Swizzlr 2011年

通过“合适的地方”,我认为最好在SuperUser上讨论shell脚本:superuser.com/questions/tagged/shell-script
Swizzlr 2011年


-2

对于Mac,.sh文件又称为Shell脚本


但是,当从取景器中调用它时,您将需要使用.command.sh是查找程序中未处理的文件类型(默认情况下)。
詹森·萨拉兹
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.