10
votes

Php vs bash pour script CLI?

Je n'ai jamais utilisé php avec CLI, mais j'ai vu des scripts en cours d'exécution avec du code PHP.

Je me demandais:

  • Pourquoi devrions-nous utiliser Bash, lorsque PHP est si populaire et est capable de courir dans CLI?
  • Quels sont les avantages et les inconvénients avec chacun?
  • Devrais-je utiliser php pour tous les scripts CLI dans le futur?

0 commentaires

8 Réponses :


2
votes

Préférence principalement.

Les langues de niveau supérieur (comme PHP) ont de meilleures structures de données facilement accessibles (entre autres). Cependant, il est assez facile de pirater un script de bash de travail.

Donc vraiment, c'est à vous de décider.


0 commentaires

5
votes

bash est plus fréquent pour ce type d'application, simplement en vertu d'elle étant autour pour toujours. Mais quand il s'agit de choisir un sur l'autre. La langue que vous connaissez déjà est généralement le meilleur choix. Ce n'est pas parce que vous serez plus productif.


1 commentaires

Il n'y a pas de meilleure réponse que celle-ci



2
votes

php n'est que mieux dans le répertoire Web. Bash convient mieux à la manutention des entrées de ligne de commande et de la sémantique générale de la coquille, imo.


1 commentaires

Pour être honnête, je choisirais Python, Ruby ou Perl sur PHP pour écrire des scripts Shell, pour des raisons similaires que je pourrais choisir PHP sur Bash pour servir de contenu via HTTP.



2
votes

Je pense que Python est meilleur que php pour CLI.

Si vous n'avez jamais utilisé PHP, je recommande Python, car PHP a été conçu à l'origine pour le développement Web pour produire des pages Web dynamiques et pour Python, c'est plus généreux et mettez l'accent sur la lisibilité du code.


3 commentaires

Python est meilleur que php car il a shuttil et getopt des modules simplifiant de nombreuses tâches CLI. Vous devez faire ces choses à la main pour PHP.


Je seconde la recommandation Python. Si vous avez le malheur de travailler dans un environnement Windows comme moi, écrire CLI à Python est relativement transférable d'un système d'exploitation à un autre. Alors que l'utilisation de Bash directement n'est pas, à moins que vous ne puissiez utiliser Mingw, ce que je ne suis pas. La bonne chose à propos de Python est la possibilité d'intégrer avec les capacités de ligne de commande d'hébergement du système d'exploitation. Si vous devez utiliser une doublure comme ci-dessus, vous pouvez facilement les accéder à Python.


PHP a été conçu pour le Web est le pire argument. Cela fonctionne parfaitement comme un outil CLI plus, il est en faveur de tout ce que Python a, il n'est pas nécessaire d'utiliser Python à moins que vous n'ayez un fanatique d'indentation. Il est plus lent que PHP et plus cryptique. Quant à Bash, il est définitivement préféré ici. Utilisez une langue plus complexe s'il y a un besoin pour cela.



7
votes

Il est toujours beaucoup plus facile d'effectuer de nombreuses tâches communes dans Bash. Envisagez d'écrire des équivalents PHP pour les Bash One-Linders suivants:

# 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


2 commentaires

La seule façon droite est celle qui vous aide à atteindre vos objectifs. Alors, ce n'est jamais quand tu utilises php, bash, python ou autre chose. Il suffit de faire la façon dont il convient le mieux pour vous.


J'aimerais signaler la possibilité de, en PHP, d'utiliser des backtics pour exécuter RM -RF OldTrashFolder . Cela annule essentiellement cette opinion. Code dans tout ce que vous êtes à l'aise, imo. En outre, prenez en considération si votre script sera dans un environnement dans lequel vous ne voulez pas que PHP est installé (ou vous le déplacerez pour une exécution rapide et que vous ne souhaitez jamais installer PHP simplement parce que vous avez choisi de l'écrire dans Php).



2
votes

Pour les scripts de tâches générales, je suggérerais d'aller bash tout le chemin.

bash est probablement le plus largement répandu que votre script sera capable de fonctionner sur la plupart des systèmes * Nix. Par contraste PHP ne sera pas toujours facilement disponible. Bien sûr, si vous n'avez pas l'intention d'utiliser ces scripts sur un système inconnu, vous serez bien avec les deux.

Cela dit, la plupart des commandes de shell standard sont plus faciles à écrire dans BASH, puis à PHP. En PHP, vous ouvririez des sous-processus, exécutez des commandes Shell via certaines fonctions de wrapper ou sur la non-sie dans BASH, vous enregistreriez simplement votre session Bash dans un fichier de l'exécutable. Prenez la liste d'un répertoire par exemple, dans BASH, indiquez simplement LS et dans PHP, vous utiliseriez probablement Scandir qui n'est pas amusant car il sonne. De plus, j'imagine que le scandaire a beaucoup moins d'options de tri. grep -ri quelque chose. Quelqu'un?

La plupart des langues à usage général peuvent être utilisées pour les scripts shell, mais cela ne signifie pas qu'ils devraient être et à la fin de la journée, il s'agit d'obtenir le travail et une question de préférence subjective.


1 commentaires

Bon exemple avec ls vs scandir :)



3
votes

Je suppose que la chose principale est la suivante: Bash est toujours là sur un système UNIX récent (ses prédécesseurs sont toujours toujours là, même sur l'unixe antique). Bash utilise chaque petit utilitaire sur le système, qui peut inclure PHP, Python, Ruby, Awk, Perl (ces deux derniers surtout).

Considérez-vous: Comment obtenez-vous PHP installé? Bouquet de scripts Bash et d'un maquillage, non? Ou votre gestionnaire de packages OS, que ces jours-ci est probablement python, mais aussi d'être un script Bash.

Vous ne pouvez pas administrer UNIX sans bien connaître la coquille, vous ne pouvez pas écrire ou utiliser des maquillages. Ce n'est peut-être pas la bonne réponse à chaque fois, mais pour un travail de script, j'essaie toujours de comprendre si cela peut être fait à Bash en premier.


0 commentaires

-2
votes

Je cherchais moi-même dans ce moi-même comme je suis à jour effectuer une mise à niveau A sur de grands fichiers LMS après avoir rencontré ce lien et un autre qui en résulte d'un test de profilance, je pensais ajouter ce lien à Ceci poste. Alors que la tâche de la tâche est nota réel exemple, il montre des statistiques intéressantes.


1 commentaires

Bienvenue! Veuillez lire les règles avant de poster une question ou une réponse.