【发布时间】:2011-02-16 15:04:58
【问题描述】:
我从未在 CLI 中使用过 PHP,但我见过使用 PHP 代码运行的脚本。
我想知道:
- 既然 PHP 如此流行并且可以在 CLI 中运行,我们为什么还要使用 BASH?
- 各有什么优缺点?
- 以后我应该将 PHP 用于所有 CLI 脚本吗?
【问题讨论】:
标签: php bash command-line-interface
我从未在 CLI 中使用过 PHP,但我见过使用 PHP 代码运行的脚本。
我想知道:
【问题讨论】:
标签: php bash command-line-interface
在 bash 中执行许多常见任务仍然容易得多。考虑为以下 bash 单行代码编写 PHP 等效项:
# remove a folder full of rubbish
rm -rf oldTrashFolder
# create an archive of files containing the word 'localhost'
tar cf backup.tar $(grep -rlw localhost ~/my-source-code)
# make a copy of a mysql database
{ echo "create database NEWDATABASE; "; mysqldump OLDDATABASE; } | mysql NEWDATABASE
【讨论】:
rm -rf oldTrashFolder 的能力。这基本上否定了整个观点。在任何你喜欢的地方编码,imo。另外,请考虑您的脚本是否将在您不希望安装 PHP 的环境中(或者您将移动它以快速执行并且不想仅仅因为您选择编写它而安装 PHP PHP)。
Bash 在这种类型的应用程序中更为常见,因为它永远存在。但是当谈到选择一个而不是另一个时。您已经知道的语言通常是更好的选择。只是因为你会更有效率。
【讨论】:
我想主要的事情是:bash 总是存在于最近的 unix 系统上(它的前辈真的一直存在,即使是在古老的 unixen 上)。 Bash 使用了系统上的所有小工具,包括 PHP、Python、Ruby、AWK、Perl(尤其是最后两个)。
考虑:如何安装 PHP?一堆 bash 脚本和一个 makefile,对吧?或者你的操作系统包管理器,现在可能是 Python,但也曾经是一个 bash 脚本。
如果不真正了解 shell,就无法管理 unix,也无法编写或使用 makefile。这可能不是每次都正确的答案,但对于脚本工作,我总是试图弄清楚它是否可以首先在 bash 中完成。
【讨论】:
主要是偏好。
高级语言(如 php)具有更好的数据结构,易于访问(除其他外)。但是,将一个有效的 bash 脚本组合在一起非常容易。
真的,这取决于你。
【讨论】:
PHP 仅在 web 目录中更好。 Bash 更适合处理命令行输入和通用 shell 语义,IMO。
【讨论】:
我认为对于 CLI,python 比 php 更好。
如果你没用过PHP,我推荐Python,因为PHP最初是为web开发而设计的,用来制作动态网页,而对于Python来说,更加大方,强调代码的可读性。
【讨论】:
shutil 和 getopt 模块,可以简化许多 CLI 任务。你需要手动为 PHP 做这些事情。
对于通用任务脚本,我建议一直使用 Bash。
Bash 可能是传播最广泛的 shell,您的脚本将能够在大多数 *nix 系统上运行。相比之下,PHP 并不总是很容易获得。当然,如果您不打算在不熟悉的系统上使用这些脚本,那么两者都可以。
也就是说,大多数标准的 shell 命令在 bash 中比在 php 中更容易编写。在 php 中,您将打开一个子进程,通过一些包装函数执行 shell 命令,或者在 bash 中,您只需将 bash 会话记录在文件中并使其可执行。以目录列表为例,在 bash 中您只需声明 ls,而在 php 中您可能会使用 scandir,这听起来并不有趣。另外我会想象 scandir 的排序选项要少得多。 grep -Ri something . 有人吗?
大多数通用语言都可用于 shell 脚本,但这并不意味着它们应该如此,归根结底,这归结为完成工作和主观偏好问题。
【讨论】:
我自己正在研究这个问题,因为我目前正在对大型 LMS 进行升级,遇到了这个链接,另一个对性能测试有一些结果我想我会将此链接添加到 this 帖子。 虽然它的任务不是真实世界的示例,但它确实显示了一些有趣的统计数据。
【讨论】: