所有应用程序都有命令行界面吗?

时间:2016-10-13 13:17:50

标签: bash shell

我最近在Mac上学习shell脚本。以像Atlassian的SourceTree这样的应用程序为例。我的理解是它只是git命令的GUI,可以通过命令行执行。按下按钮只会触发相应的git命令,该命令通过后台的命令行有效运行。如果是这种情况,那么具有GUI功能的所有应用程序都是这样做的吗?所有应用程序基本上只是通过机器的shell脚本运行命令吗?如果是这样,那么公开使用的基础命令是否可用,为任何应用程序提供各种API?

2 个答案:

答案 0 :(得分:2)

这比这更复杂。

许多应用程序只有一个GUI(例如Safari),其他许多应用程序只有一个CLI(例如find)。

当GUI应用程序和CLI应用程序执行相同的功能时,它们可能会相互通信,也可能不会:

  • 正如您所指出的,GUI应用程序可以在场景后面运行CLI命令(例如system()popen()

  • 另一种方法是两个应用程序都使用相同的底层库

  • 或者根本没有共享代码(想想ls与Mac上的Finder)

  • 最后在Mac上,可以使用Applescript语言控制一些GUI应用程序,该语言可通过osascript命令获得。换句话说,您可以使用bash脚本控制iTunes。

答案 1 :(得分:0)

当然,并非所有应用程序都采用这种方式。事实上,根据我的经验,我会说很少有应用程序遵循这一点。大多数应用程序直接依赖于操作系统平台和功能执行自己的操作,而不是执行shell命令,此外,在操作系统之间移植是很困难的(并且大部分时间都是不可能的)。

相关问题