2010-05-06 10 views
7

nunca he usado PHP con CLI, pero he visto guiones ejecutar con código php.php vs bash para CLI scripting?

me preguntaba, ¿por qué deberíamos usar bash, cuando php es tan popular y puede ejecutarse en CLI?

¿Cuáles son los pros y contras de cada uno?

¿Debería usar php para todos los scripts de CLI en el futuro?

Respuesta

7

Todavía es mucho más fácil realizar muchas tareas comunes en bash. Que no escribe equivalentes PHP para el siguiente golpe de una sola línea:

 
# 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 
+4

La única forma correcta es aquella que lo ayuda a lograr sus objetivos. Así que no importa si usas PHP, Bash, Python o lo que sea. Solo haz lo que mejor se adapte a ti. – Alrik

+0

Me gustaría señalar la posibilidad de, en PHP, utilizar los datos históricos para ejecutar 'rm -rf oldTrashFolder'. Eso esencialmente niega toda esta opinión. Código en lo que sea que te sientas cómodo, imo. Además, tenga en cuenta si su script estará en un entorno en el que no desea que PHP esté instalado (o lo moverá para una ejecución rápida y no querrá instalar PHP simplemente porque eligió escribirlo en PHP). –

1

Preferencia principalmente.

Los idiomas de nivel superior (como php) tienen mejores estructuras de datos de fácil acceso (entre otras cosas). Sin embargo, es bastante fácil hackear juntos un script bash que funcione.

Así que realmente, depende de usted.

4

Bash es más común para este tipo de aplicación, simplemente por el hecho de que es permanente. Pero cuando se trata de elegir uno sobre el otro. El idioma que ya conoces suele ser la mejor opción. Solo porque serás más productivo.

+0

No hay mejor respuesta que esta –

3

PHP es solo mejor en el directorio web. Bash es más adecuado para manejar las entradas de línea de comando y la semántica general del shell, IMO.

+0

Para ser honesto, elegiría python, ruby, o perl sobre php para escribir scripts de shell, por razones similares que podría elegir php sobre bash para servir contenido a través de HTTP. – chiggsy

3

Creo que python es mejor que php para CLI.

Si nunca ha usado PHP, recomiendo Python, porque PHP fue diseñado originalmente para el desarrollo web para producir páginas web dinámicas, y para Python, es más generoso y enfatiza la legibilidad del código.

+1

Python es mejor que PHP porque tiene módulos 'shutil' y' getopt' que simplifican muchas tareas CLI. Debes hacer estas cosas a mano para PHP. –

+0

Apoyo la recomendación de Python. Si tiene la mala suerte de trabajar en un entorno Windows como yo, escribir CLI en python es relativamente transferible de un sistema operativo a otro. Mientras que usar BASH directamente no lo es, a menos que pueda usar MINGW, que yo no soy. Lo bueno de Python es la capacidad de integrarse con las capacidades de la línea de comandos del SO de alojamiento. Si necesita utilizar un revestimiento como el anterior, puede acceder fácilmente a ellos desde Python. – topmulch

2

Para secuencias de comandos de tareas de propósito general yo sugeriría ir Bash todo el camino.

Bash es probablemente el shell más extendido y su script se podrá ejecutar en la mayoría de los sistemas * nix. Por el contrario, PHP no siempre estará disponible fácilmente. Por supuesto, si no tiene la intención de utilizar esos scripts en un sistema desconocido, estará bien con ambos.

Dicho esto, la mayoría de los comandos de shell estándar son más fáciles de escribir en bash que en php. En php abriría un subprocesos, ejecutaría comandos de shell a través de algunas funciones de envoltura o lo que no, mientras que en bash simplemente registraría su sesión de bash en un archivo y lo haría ejecutable. Tome la lista de un directorio, por ejemplo, en bash simplemente declare ls y en php probablemente use scandir que no es tan divertido como suena. También me imagino que scandir tiene muchas menos opciones de clasificación. grep -Ri something . alguien?

La mayoría de los lenguajes de uso general se pueden utilizar para scripts de shell, pero eso no significa que deban ser así, y al final del día todo se reduce a hacer el trabajo y una cuestión de preferencia subjetiva.

+0

buen ejemplo con ls vs scandir :) –

2

Supongo que lo principal es que bash siempre está ahí en un sistema Unix reciente (sus predecesores realmente siempre están ahí, incluso en unixen antiguo). Bash usa cada pequeña utilidad en el sistema, que puede incluir PHP, Python, Ruby, AWK, Perl (esos dos últimos especialmente).

Considere: ¿cómo se instala PHP? Un montón de scripts bash y un makefile, ¿verdad?O su administrador de paquetes del sistema operativo, que en estos días probablemente sea Python, pero que solía ser un script bash también.

No se puede administrar Unix sin conocer el shell realmente bien, ni se puede escribir o usar archivos make. Puede que no sea la respuesta correcta todo el tiempo, pero para un trabajo de scripting siempre trato de averiguar si se puede hacer primero en bash.

-1

Estaba investigando esto por mi cuenta, ya que estoy actualizando un LMS grande al encontrar este enlace y otro que tiene algún resultado en una prueba de proformance. Pensé que agregaría este enlace al post de this. mientras que la tarea es un ejemplo del mundo real que muestra algunas estadísticas interesantes.

+0

¡Bienvenido! Lea las reglas antes de publicar una pregunta o una respuesta. – transilvlad