
He estado estudiando bash durante las últimas tres semanas y es muy fácil de aprender ya que básicamente son solo entradas de línea de comandos. Decidí pasar a Python, pero estuve perdido todo el tiempo tratando de aprenderlo. Mi pregunta es en Python, todo parece girar en torno a números, listas, variables, etc. Mientras que bash parece ser mucho más sencillo con los comandos. No puedo encontrar un ejemplo en Python donde haya una manera de mover archivos, cambiar directorios u otras cosas por el estilo. Siento que ya estoy demasiado acostumbrado a bash para aprender Python. ¿Alguien puede explicarme algo de esto?
Respuesta1
Bash no es un lenguaje de programación, sino un shell destinado a ingresar comandos rápidamente y ejecutarlos. Por lo tanto, ejecuta otros comandos para hacer su trabajo (por ejemplo, mv
mueve archivos y directorios). Las variables en Bash son limitadas y dado que los comandos son todos cadenas, no hay razón para ser muy estricto con ellas. (Sin embargo, es posible forzar tipos, consulte help declare
).
Python, por otro lado, es un lenguaje de programación más extenso con más funciones de lenguaje. En lugar de ejecutar otros programas, utiliza funciones integradas u otras funciones de módulos (bibliotecas en otros idiomas). Para obtener un tutorial básico sobre entrada/salida en Python, consultehttp://docs.python.org/tutorial/inputoutput.html. Vale la pena leer el tutorial completo si desea comenzar a programar en Python.
Respuesta2
Python es un lenguaje de programación; y como todos los demás lenguajes de programación, está diseñado para describir procesos y datos. La mayoría de sus preguntas tratan sobre la API del sistema operativo en el os
módulo, por ejemplo, os.chdir()
y os.rename()
(para el comando UNIX mv
).
El shell es un entorno operativo destinado a brindarle fácil acceso al sistema operativo en varios niveles (archivos, procesos, etc.). Incluye construcciones de programación como variables, bucles y condicionales, por lo que en este sentido es un lenguaje de programación, pero no fue diseñado para serlo, sino que evolucionó. Puedes hacer cosas increíbles con un script de shell: una vez escribí un sistema de seguimiento de llamadas que manejaba 60.000 solicitudes al mes. Pero también tiene limitaciones que un lenguaje informático puede manejar mejor.
Por ejemplo tupodríaescribir un navegador web en Bash, pero sería ineficiente, especialmente cuando se intenta descargar simultáneamente las páginas html, css y javascript y manejar la entrada del usuario. Un lenguaje de programación como Python, que tiene acceso a subprocesos, manejaría esto de manera más eficiente.
Si bien Python también tiene un "shell", no es fácil de usar para acceder al sistema operativo. Pero es utilizable. Por ejemplo, el comando de shell mv * otherdirectory
se escribiría en Python como:
import os, glob
for fname in glob.glob('*'):
os.rename(fname, 'otherdirectory')
O más compacto:
import os, glob
[os.rename(fname, 'otherdirectory') for fname in glob.glob('*')]
La mayoría de los tutoriales de idiomas quieren que primero comprenda el idioma y luego cómo interactúa con el sistema operativo. Para un shell, primero debe comprender cómo interactúa con el sistema operativo.