La línea de comandos (o terminal) para pythonistas

La línea de comandos (o terminal) para pythonistas

Introducción

A menudo surgen confusiones en quienes se introducen en Python respecto de la línea de comandos, la terminal, la consola, el símbolo del sistema, la consola interactiva, y otros términos relacionados. Intentaremos precisar estas definiciones.

Comencemos por consola. Se trata de una ventana, generalmente de fondo negro, en donde un programa imprime mensajes y eventualmente el usuario ingresa información.

Consola

Esta era la única forma de interactuar con un programa en los inicios de la informática. Aún hoy muchos programadores, administradores de sistemas o usuarios avanzados (especialmente en Linux) corren programas en la consola. De modo que los programas que están diseñados para ser corridos desde la consola se los denomina aplicaciones de consola. Se distinguen de las aplicaciones de escritorio, las más comunes entre los usuarios promedio, como, por ejemplo, el navegador que estás usando para leer este artículo.

En Python se pueden desarrollar ambos tipos de aplicaciones. Por defecto los programas de Python son aplicaciones de consola, a diferencia de otros lenguajes netamente gráficos, como Visual Basic.

Así, para interactuar con la consola desde un script de Python, usamos las funciones incorporadas print() e input().

name = input("Escribe tu nombre: ")
print("Hola", name)

El sistema operativo es capaz de determinar cuáles programas son de consola y cuáles de escritorio. De este modo, para los primeros, se encargará de abrir la consola antes de ejecutarlo, así podremos ver los mensajes e interactuar con él en general.

Ahora bien, todos los sistemas operativos incluyen una aplicación de consola a la que comúnmente se le llama terminal o línea de comandos. Y, en particular, en Windows tiene el nombre de Símbolo del sistema.

La terminal es un programa que interpreta instrucciones o comandos del usuario, y con ellos podemos ejecutar un muy variado conjunto de acciones: desde mover un archivo de un lugar a otro hasta apagar o reiniciar el sistema. Además, tiene la capacidad de ejecutar otras aplicaciones de consola. De modo que muchos de estos comandos son, en realidad, aplicaciones.

Para ejecutar la terminal, deberás buscar dicho nombre en el catálogo de aplicaciones de tu sistema. Como decíamos, en Windows lleva el nombre de Símbolo del sistema o simplemente cmd. Y se ve exactamente como lo mostramos en la imagen anterior.

La terminal de Ubuntu, por ejemplo, se ve así:

Terminal de Ubuntu

Cambiando la ubicación

Habrás notado que en todos los casos la línea de comandos nos muestra una ruta y nos solicita que ingresemos una instrucción. En este sentido, la terminal es algo así como un explorador de archivos, puesto que siempre está ubicada en alguna ruta, a la que se conoce como current working directory o simplemente cwd.

Para cambiar la ruta, usamos el comando cd (change directory) seguido de un directorio relativo (esto es, que se encuentre en la ruta actual) o bien absoluto.

C:\>cd Python27

C:\Python27>cd ../

C:\>cd C:\Python27\Scripts

C:\Python27\Scripts>

~$ cd Desktop/
~/Desktop$ 

El ../ indica que queremos subir un nivel en el árbol de directorios, de modo que al ser llamado desde C:\Python27, la ruta regresa a C:\.

Un programa de Python puede conocer la ruta desde donde está siendo ejecutado vía os.getcwd(), que no es otra cosa que lo que acabamos de explicar.

import os
print(os.getcwd())

Cuando a alguna función que trabaje con archivos le indicamos una ruta relativa, es en relación con este valor a partir del cual se resuelve la ruta final. Por ejemplo, el siguiente código:

f = open("archivo.txt")

Es siempre equivalente a:

import os
import os.path
f = open(os.path.join(os.getcwd(), "archivo.txt"))

Ejecutando aplicaciones

Dijimos que desde la terminal podemos ejecutar otras aplicaciones de consola. Por ejemplo, la consola interactiva de Python vía el siguiente comando:

C:\>C:\Python27\python.exe

$ /usr/bin/python

Puesto que el acceso a esta aplicación es bastante frecuente, podemos acceder a ella aun prescindiendo de su ruta compelta:

C:\>python

$ python

Esto es posible por cuanto la ruta de Python está configurada en la variable de entorno PATH, lo cual ocurre automáticamente durante la instalación. Si por alguna razón no está configurada, podemos hacerlo manualmente como explicamos en este artículo.

El comando where (Windows) o which (Linux) nos indica la ruta completa de alguno de estos «atajos»:

C:\>where python
C:\Python27\python.exe

~$ which python
/usr/bin/python

Otra aplicación de estas características es pip, la herramienta para instalar paquetes de terceros de Python, que por lo general se instala junto con él.

C:\>where pip
C:\Python27\Scripts\pip.exe

~$ which pip
/usr/local/bin/pip

Cuando tenemos múltiples versiones de Python instaladas, solo una de ellas estará asociada con los comandos python y pip. Para acceder a las otras, deberemos indicar su ruta completa.

Ahora bien, al llamar a una aplicación desde la terminal podemos pasarle argumentos o parámetros. Cuando al programa python le pasamos como argumento el nombre de un script, en lugar de abrir la consola interactiva ejecuta dicho archivo.

python script.py

O bien usando una ruta absoluta:

C:\>python C:\Programas\script.py

~$ python /home/francisco/Desktop/script.py

Cuando un argumento contiene espacios, a menudo es necesario indicarlo entre comillas.

C:\>python "C:\Programas\mi script.py"

~$ python "/home/francisco/Desktop/mi script.py"

Desde Python podemos acceder a los argumentos pasados a través de la consola, vía la lista sys.argv.

import sys
print(sys.argv)

Para algunos detalles sobre esto, véase Cómo obtener los argumentos de la línea de comandos.

Curso online 👨‍💻

¡Ya lanzamos el curso oficial de Recursos Python en Udemy! Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter en 2024.

Consultoría 💡

Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.

3 comentarios.

Deja una respuesta