paint-brush
La línea de comandos: una guía completapor@marcinwosinek
2,192 lecturas
2,192 lecturas

La línea de comandos: una guía completa

por Marcin Wosinek9m2023/01/18
Read on Terminal Reader

Demasiado Largo; Para Leer

Hay muchos buenos argumentos para acostumbrarse a la interfaz de línea de comandos (CLI). Sin embargo, como principiante, puede ser difícil comenzar y una nueva sesión de shell puede parecer un poco intimidante. Para comenzar, necesita un emulador de terminal: un programa que emula el acceso de solo texto a su máquina.
featured image - La línea de comandos: una guía completa
Marcin Wosinek HackerNoon profile picture

Hay muchos buenos argumentos para acostumbrarse a la interfaz de línea de comandos (CLI). Sin embargo, como principiante completo, puede ser difícil comenzar, y una nueva sesión de shell puede parecer un poco intimidante:

¡Repasemos los conceptos básicos de CLI!

Donde empezar

Lo primero que necesita es un emulador de terminal: un programa que emule el acceso de solo texto a su máquina. Cualquier sistema operativo (SO) tendrá una gran variedad de emuladores: todos son bastante similares y las principales diferencias serán:


  • el número de colores soportados,


  • opciones disponibles para tipos de fuente, tamaños o esquemas de color,


  • atajos de teclado para aumentar el tamaño de fuente, etc.


Al principio, debería estar de acuerdo con lo que está disponible allí en su sistema operativo o entorno de desarrollo integrado (IDE).

conchas

Shell es un programa que interpreta sus comandos y ejecuta programas por usted. Es algo diferente al simulador de terminal del que hablamos anteriormente. En cierto modo, en su interfaz gráfica, abre la terminal, y dentro de la terminal, tiene un intérprete de comandos de solo texto.


Hay muchas opciones disponibles, con diferencias sutiles que pueden alterar mucho la experiencia del usuario.

Zsh

Z shell, o Zsh, es un intérprete de comandos moderno y popular. Su interfaz es fácil de usar y hay paquetes comunitarios disponibles que le permiten personalizar su experiencia de shell: Oh My Zsh . Lo he usado durante algunos años y la mayoría de mis hábitos CLI están adaptados de él.

Intento

Bash es una alternativa un poco más antigua a Zsh. Es muy común, por lo que puede esperar que esté disponible en muchas máquinas que encontrará por ahí. Muchos accesos directos de Zsh también funcionan allí, pero usa diferentes archivos de configuración y el lenguaje de secuencias de comandos es un poco diferente.

SH

La carcasa estándar. Es parte de los comandos estándar de Unix, y se garantiza que estará en cualquier máquina similar a Unix que encuentre. Por tanto, es una apuesta segura a la hora de escribir guiones.


La interfaz de usuario carece de muchas mejoras modernas, por lo que no la usaría para nada más que cableado de secuencias de comandos.

¿Cuál es mi caparazón de todos modos?

¿Puede verificar su caparazón con echo $? :
Descripción de la imagen

En mi caso, es zsh

Cómo cambiar tu caparazón

Cada shell es un programa y se puede ejecutar directamente desde otro shell. Por ejemplo:


asciicado

De esta forma, puedes comprobar qué shells tienes instalados y probarlos rápidamente. Para cambiar el shell de forma permanente, puedes usar el comando chsh (cambiar shell), tanto en Linux como en macOS:


asciicado

Si no tiene el shell que desea usar, primero debe instalarlo; el comando exacto depende de su sistema operativo o distribución de Linux.

Bloques de construcción

Entonces, una vez que tenga su terminal en funcionamiento, ¿cómo lo usa?

Comandos

CLI le permite ejecutar comandos escribiendo su nombre en la terminal y presionando enter. Cada comando es un programa separado que ofrece una interfaz extensa y cada uno viene con su propia documentación.


Asimismo, cada sistema operativo trae su propio conjunto de comandos, pero comparten similitudes, especialmente con los sistemas inspirados en Unix, macOS y Linux.


En Windows, la línea de comando estándar cmd tiene un conjunto de comandos muy diferente, pero también hay muchas opciones disponibles para obtener una interfaz similar:


  • Subsistema nativo de Windows para Linux


  • Git BASH proporcionado por Git para Windows


Unix fue un sistema operativo que estuvo disponible públicamente en 1973 e influyó en muchas cosas que vinieron después. Su especificación actual define 161 comandos , pero afortunadamente solo necesitas un puñado de ellos para beneficiarte de CLI.


Ejemplo de comandos:


  • ls enumera los archivos en una carpeta: de forma predeterminada, muestra el contenido de la carpeta actual:
    Descripción de la imagen

  • pwd muestra la ruta actual en la que está ejecutando sus comandos:


    Descripción de la imagen

  • cd cambia el directorio; de forma predeterminada, va al directorio de inicio ( https://asciinema.org/ grabación o captura de pantalla)


    asciicado

Argumentos

Cada comando puede tomar argumentos adicionales. Los argumentos son valores separados por espacios que vienen después del nombre del comando. El significado de los argumentos depende del programa. Puede leer acerca de los diferentes argumentos en la documentación del comando:


asciicado

Opciones

Muchos comandos estándar vienen con diferentes opciones que le permiten modificar el comportamiento del programa. Por ejemplo, ls se usa muy a menudo con las siguientes opciones:


  • -a : para mostrar todos los archivos, incluidos los que comienzan con . —una convención de Unix para archivos ocultos


  • -l —muestra archivos en formato largo—proporcionando más información


Una convención común es permitir opciones como parámetros separados, ls -a -l , o combinados en un solo parámetro, ls -la .
Descripción de la imagen

Parámetros

Un parámetro es un argumento que proporciona un valor al comando o una de sus opciones.


Entonces, por ejemplo, con el ejemplo anterior, puede proporcionar una ruta para cambiar el comportamiento predeterminado:


  • ls workspace de trabajo: enumera los archivos en la carpeta del espacio de trabajo:


    asciicado

  • cd workspace —cambia el directorio actual al espacio de trabajo:


    asciicado

  • cat file —muestra el contenido del archivo en la pantalla:


    asciicado

El significado de los parámetros depende del programa; al principio, puede esperar que necesite verificar mucho la documentación.

Salida estándar

La salida estándar es el texto que se agrega a la línea de comando cuando ejecuta el programa. Su texto se muestra por el camino feliz de la ejecución. Los ejemplos que hemos visto hasta ahora muestran la salida estándar de diferentes comandos.


Cuando aprende C++, una de las primeras cosas que aprende es cout , la salida estándar.


De forma predeterminada, la salida estándar solo se muestra en la pantalla, pero puede redirigirla fácilmente a un archivo con el operador > . Ejemplo:


asciicado

Salida de errores

La salida de error es donde los programas muestran información sobre los problemas encontrados durante la ejecución. Mientras se ejecutan comandos directamente desde la terminal, la salida de error y la salida estándar se tratan de la misma manera: solo se muestran en la pantalla. Por ejemplo, cuando trato de ls un archivo que no existe:


Descripción de la imagen

La diferencia se vuelve obvia cuando redirige la salida a un archivo:


Descripción de la imagen

Entrada estándar

En un flujo de trabajo normal, la entrada estándar es lo que escribe en su programa. Los comandos que hemos visto hasta ahora no suelen usarse en un modo interactivo. Un ejemplo simple puede ser una página de man que permita el desplazamiento:


asciicado

Para aquellos con experiencia en C++, han escuchado este término para cin :

 cin >> variable;


Para muchos comandos comunes, la entrada estándar se vuelve especialmente importante debido al operador de tubería.

Tubo

Los conductos son formas de conectar la salida estándar de un programa con la entrada estándar de otro. Así es como CLI logra la interoperabilidad que mencioné en mi artículo anterior .


El uso de canalizaciones le permite combinar diferentes comandos de muchas maneras creativas. Mostraré algunos ejemplos más adelante en esta serie. Por ahora, un ejemplo simple es:


asciicado

Donde:

  • cat … lee archivos y devuelve su contenido en salida estándar,


  • less : obtiene el valor de la entrada estándar y lo ajusta a la pantalla


Del mismo modo, mediante el uso de la utilidad de búsqueda grep :


asciicado

Donde:

  • cat … —como arriba


  • grep 1 : obtiene el valor de la entrada estándar y lo filtra solo a las líneas que contienen 1 .

Escribir en archivos

Ya hemos mencionado el operador > utilizado para escribir la salida estándar de un comando en un archivo. Este operador anula el archivo con la salida que proporcionamos. Si desea agregarlo a un archivo existente, puede usar >> en su lugar.

Directorio de trabajo

Todo lo que sucede en la línea de comandos se realiza en el contexto de una ubicación de disco específica: un directorio de trabajo. Cuando especifica rutas de archivo relativas, para lectura o escritura, se resuelven desde el directorio de trabajo.


Por lo general, configura su directorio de trabajo en una carpeta superior del proyecto en el que está trabajando. Cuando inicia una nueva sesión, generalmente el directorio de trabajo se establece en su directorio de inicio.

Ejecución de comandos

Los intérpretes de Shell le ofrecen muchos atajos para acelerar su trabajo. Con el tiempo, comenzarás a usarlos de manera intuitiva, sin pensar en ellos.


A menudo, cuando comparto la pantalla con principiantes, recuerdo que esos accesos directos son obvios: a continuación, le mostraré algunos trucos de productividad para trabajar con la línea de comandos.


Yo mismo estoy usando Zsh, y estos accesos directos funcionan allí. Al menos algunos de ellos también deberían funcionar en Bash, pero puede depender de la versión y configuración exactas.

No escriba dos veces: utilice las flechas

El truco principal para ser rápido con CLI es no escribir todo todo el tiempo. El caso más básico es recuperar un comando que ha ejecutado unas pocas líneas antes. Puede hacerlo presionando la tecla de flecha hacia arriba.


Con la flecha hacia arriba y la flecha hacia abajo, puede desplazarse por los comandos recientes y, una vez que encuentre uno similar al que desea ejecutar ahora, puede editarlo. Esto acelera mucho todo el proceso porque a menudo ejecuta comandos similares, con algunas pequeñas diferencias en los argumentos.


asciicado

Buscar comandos antiguos

El desplazamiento manual está bien para obtener uno o varios de los comandos más recientes. Sin embargo, si desea obtener algo más del pasado, puede utilizar la función de búsqueda. De forma predeterminada, el comando que puede usar es CTRL + R para comenzar una búsqueda en su historial de comandos:


asciicado

Usar para autocompletar

No tiene que escribir todos los comandos que le gustaría ejecutar. Tanto Zsh como Bash admiten la tecla de tabulación como una forma de solicitar autocompletar: completarán el comando o el nombre del archivo si son únicos o le mostrarán todas las opciones disponibles si lo que escribe coincide con muchas posibilidades.


Zsh también proporciona autocompletar para las opciones de comando.


El autorrelleno es una excelente característica en dos niveles: lo ayuda a ahorrar tiempo al escribir y reduce los errores. A medida que aprende CLI, debe asegurarse de adquirir el hábito de usar la función de autocompletar tanto como sea posible.


asciicado

Comodines de nombres de archivo

Puede acelerar aún más la escritura utilizando comodines para hacer coincidir los nombres de varios archivos:


asciicado

Buscapersonas—Menos

A menudo, cuando un programa tiene tantos resultados que no caben en la pantalla, utiliza otro programa como buscapersonas, una herramienta que le permite navegar por los resultados y desplazarse hacia arriba y hacia abajo. La mayoría de las veces, el programa utilizado para eso es less . Hay algunas cosas que vale la pena tener en cuenta cuando lo usa.

Desplazamiento simple

En primer lugar, no se desplace con la barra de desplazamiento proporcionada por su emulador de terminal. less vuelve a dibujar toda la pantalla de texto al final de la salida.


Si se desplaza hacia arriba dentro del emulador de terminal, verá lo que devolvieron otros programas antes, no el contenido del archivo que desea leer. En lugar de desplazarse con la barra de desplazamiento (rueda de desplazamiento), use las flechas hacia arriba y hacia abajo para moverse por el archivo.


asciicado

Salida

Otro punto común de confusión: ¿cómo me voy ahora? Puede salir del modo de pantalla completa de 'menos' presionando q . A menudo tiene el estilo :q porque otros programas (por ejemplo, vim ) usan : para iniciar un comando.

buscando

En la línea de comandos, todo es texto, y el texto es fácil de buscar. Puede buscar dentro del contenido mostrado por less escribiendo /<search term> y navegar a través de los resultados escribiendo n y N :


asciicado

Desplazamiento elegante

less admite otros comandos de navegación similares a los que puede encontrar en vim :


  • j : desplazarse hacia abajo una línea
  • k : desplazarse hacia arriba una línea
  • gg : desplazarse hasta el principio del archivo
  • G : desplazarse hasta el final del archivo
  • d/u —abajo/arriba media pantalla


Esos accesos directos lo ayudarán a navegar rápidamente por el archivo.

¿Está interesado en aprender más?

¡Eso es genial! La línea de comandos es una gran herramienta para aumentar su eficiencia mientras programa. Puede registrarse aquí para recibir mis actualizaciones a medida que publico otros materiales relacionados con la línea de comandos.


También publicado aquí