Ayuda y ejemplos de shell y terminal de Linux

El shell de línea de comandos es una interfaz de usuario basada en texto para su sistema operativo. A diferencia de un shell GUI, que utiliza una representación gráfica de los servicios y recursos del sistema, el shell de línea de comandos solo usa texto. Es la interfaz fundamental entre usted y el sistema operativo, y en muchos casos le ofrece un control más directo sobre los procesos del sistema.

¿Para qué se usa el shell?

Cuando se trata de comunicarse con su sistema operativo, cualquier cosa que pueda hacer con una GUI se puede hacer en la línea de comandos. Por ejemplo, tomemos algo que necesita hacer todo el tiempo: mueva los archivos en su sistema de archivos. Usando una GUI, puede seleccionar los iconos que representan sus archivos, arrastrarlos a otra carpeta y soltarlos allí para moverlos.

Sin embargo, utilizando la línea de comandos, esta operación se puede realizar usando un solo comando:

La línea de comandos, una vez que te acostumbras a ella, te permite controlar tu sistema con mayor eficiencia y precisión que con una GUI.

¿Por qué se llama "Shell"?

La interfaz de usuario se conoce como "shell" porque es la capa externa que lo separa de las partes más internas del sistema operativo, llamado kernel. Técnicamente, la GUI de su sistema operativo también es un "shell", pero la línea de comandos a menudo se denomina "shell".

¿Cómo me meto en el shell de línea de comandos?

La forma más común de acceder al shell de línea de comandos es usar un emulador de terminal.

Si está utilizando una distribución de Linux, puede iniciarse en X Window System (o "X"), lo que le permite ejecutar programas en sus propias ventanas e interactuar con ellos usando el mouse. En X, hay diferentes maneras de iniciar un emulador de terminal, pero aquí están las más comunes:

  • Muchas distribuciones de Linux utilizan un entorno de escritorio similar a Microsoft Windows, que tiene un "Menú de Inicio". Desde este menú, su aplicación de terminal generalmente se encuentra en "Accesorios". Por ejemplo, Lubuntu viene con el emulador de terminal LXTerminal ya instalado, y el acceso directo se encuentra en el menú Accesorios.

    Al seleccionar el elemento del menú de terminal, se inicia el emulador de terminal y lo coloca en una línea de comando.

  • Las diferentes versiones de Linux utilizan diferentes tipos de gestores de ventanas, cada uno con una interfaz ligeramente diferente. Con muchos administradores de ventanas, al hacer clic con el botón derecho en el escritorio se muestra un menú que contiene una opción de terminal. Por ejemplo, el menú del botón derecho en Crunchbang Linux tiene una opción de "Terminal". A continuación se muestra el aspecto de ese menú, después de hacer clic con el botón derecho en cualquier lugar del escritorio.

    Aquí, el menú Accesorios también tendría una opción para ejecutar el terminal.

  • En muchas versiones de Linux, presionar Super Key y " T " al mismo tiempo es la tecla de acceso rápido predeterminada para iniciar un terminal. (La Súper Clave suele ser la primera clave a la izquierda de la barra espaciadora, también conocida como la clave de Windows).

Si no puede descubrir cómo iniciar su emulador de terminal, consulte la documentación de su sistema operativo en particular y busque "terminal".

El símbolo del sistema

Cuando inicia el emulador de terminal, aparece un indicador de comando.

Nota: Todos estos ejemplos se realizan utilizando el shell Bourne-Again ( bash ), que es el shell de línea de comandos predeterminado en Linux.

Echemos un vistazo a este símbolo del sistema de cerca. El indicador se puede configurar para que sea lo que desee, pero de forma predeterminada, se parece a lo que vemos aquí, brindándonos información útil antes de escribir un comando.

Específicamente, nos dice quiénes somos (nombre de usuario) y dónde estamos (qué sistema estamos usando y nuestro directorio de trabajo). Aquí está lo que significan las partes individuales del mensaje:

tu nombreSu nombre de usuario.
@Un símbolo at separa el nombre de usuario y el nombre de host.
tu anfitriónEl nombre de host del sistema.
:Los dos puntos son el carácter que separa el nombre de host y el directorio de trabajo.
~Nuestro directorio actual ("trabajando"). La tilde (" ~ ") es un carácter especial que representa nuestro directorio principal. Cuando inicia una sesión de shell, este es el directorio donde normalmente comienza a trabajar de forma predeterminada.
PSUn carácter especial que indica que no tenemos privilegios de superusuario. Si inicia sesión como root (el superusuario), este carácter cambia a # .

Ingresar comandos

Vamos a escribir nuestro primer comando. Debemos comenzar listando los archivos que están en nuestro directorio de inicio. La forma más básica de ver todos estos archivos es usando el comando ls ; escriba ls en el indicador de comando y presione enter.

Como se muestra arriba, el comando ls enumera los contenidos del directorio y nos coloca en otro indicador de comandos.

Nota: Todos los comandos y nombres de archivos en Unix y Linux distinguen entre mayúsculas y minúsculas. El comando ls, por ejemplo, debe escribirse en minúsculas, tal como está arriba.

Para obtener una lista más detallada de los contenidos del directorio, podemos especificar opciones de línea de comandos, también conocidos como interruptores . Estos son argumentos adicionales al comando que modifican la forma en que funciona. Aquí, usaremos la opción -l (usar formato de lista larga) para obtener más información de nuestra lista.

Como se muestra arriba, el comando ls -l nos proporciona mucha más información sobre el contenido de nuestro directorio principal. En este momento, la información más importante que debemos observar es que la primera letra de los listados es una d, lo que significa que cada uno de esos contenidos del directorio es en sí mismo un directorio.

Antes de hacer nada más, limpiemos la pantalla para eliminar el desorden producido por la salida de nuestros comandos anteriores. Utilice el comando de borrado escribiendo claro en un nuevo símbolo del sistema y presione Entrar .

Después de presionar Intro, la pantalla se borra y lo coloca en un nuevo indicador de comando en la parte superior de la pantalla de su terminal.

Cambiando directorio

Vayamos a nuestra carpeta de documentos con el comando cd ("cambiar directorio"). Para cambiar el directorio actual, escriba " cd " y luego un espacio, luego el nombre del directorio al que le gustaría cambiar y luego presione intro.

El comando cd asume que el nombre de cualquier directorio que especifique es relativo a su directorio actual. Por lo tanto, para cambiar al directorio de documentos, que existe en nuestro directorio actual, escriba " documentos cd ".

El indicador de comando ahora refleja el nuevo directorio de trabajo: ~ / documents, que es equivalente a la ruta completa: / home / yourname / documents . No importa en qué usuario inicie sesión, " ~ " siempre representa su directorio de inicio. En el ejemplo, el nuevo directorio de trabajo también se ve en la barra de título de nuestra ventana de terminal.

Nota: A diferencia de MS-DOS y Microsoft Windows, los nombres de directorios jerárquicos en Linux están separados por una barra diagonal (" / ") en lugar de una barra diagonal inversa (" \ "). Este cambio de símbolos es una diferencia fundamental entre estos diversos sistemas operativos.

En cualquier momento, puede verificar su directorio actual usando el comando pwd ("imprimir directorio de trabajo").

El comando imprime el nombre del directorio actual en el terminal, en este caso " / home / yourname / documents ". De nuevo, con " ~ / documents " el " ~ " representa nuestro directorio de inicio, que es / home / yourname . Entonces, si estamos en nuestro directorio principal, al escribir " cd documents ", " cd / home / yourname / documents " o " cd ~ / documents " todos nos ubicaremos en el mismo directorio.

Ahora vamos a subir un directorio, de vuelta a nuestro directorio de inicio. El nombre de directorio especial " .. " (el punto doble) significa "un directorio arriba".

Ahora estamos de vuelta en nuestro directorio de inicio.

Nota: Si está más familiarizado con MS-DOS, tenga en cuenta que debe haber un espacio entre el CD y los dos períodos.

Mover archivos

Ahora vamos a familiarizarnos con cómo mover archivos.

Digamos que acabamos de descargar dos imágenes con un navegador web y que se guardaron en nuestra carpeta de descargas . Entremos allí y echemos un vistazo. Primero, cambiamos el directorio al directorio de descargas .

Luego liste los archivos en el directorio con el comando ls .

Aquí vemos dos archivos JPEG. Vamos a sacarlos de la carpeta de descargas y colóquelos en un lugar más apropiado, como la carpeta de imágenes. Para mover estos archivos, usaremos el comando mv ("mover").

El comando mv toma la siguiente forma general.

 mv [ OPCIONES ...] FUENTE DESTINO 

OPCIONES se incluye entre paréntesis porque no es necesario que especifique ninguna opción para completar el comando. Los argumentos SOURCE y DESTINATION son obligatorios.

FUENTE es el nombre del archivo o archivos que desea mover. DESTINO es donde quieres moverlos. Si DESTINO es un nombre de directorio, el archivo o archivos se mueven a ese directorio.

Actualmente estamos en el directorio / home / yourname / downloads y queremos mover los archivos a / home / yourname / images . Podríamos especificar nuestro DESTINO utilizando la ruta completa (" / home / yourname / images "), o como una ruta relativa a nuestro directorio actual (" ../images "), o usando una tilde como una abreviatura de nuestro directorio principal ( " ~ / imágenes "). Todos estos son equivalentes y dan el mismo resultado. Usemos el nombre de ruta relativo para nuestro DESTINO : ../images .

Entonces, ¿cómo vamos a especificar nuestra FUENTE ?

Queremos mover ambos archivos, y son los únicos archivos en el directorio. Por lo tanto, la forma más sencilla de especificarlos sería decirle a mv "mover todos los archivos de este directorio a ../images ". Podemos hacer esto usando un comodín.

Un comodín es un carácter especial que puede representar más de un nombre de archivo (o más de una parte del nombre de archivo). Aquí, vamos a utilizar el comodín asterisco (" * "). Si usamos * como nuestro nombre de archivo completo, el shell aplica nuestro comando a cada archivo en nuestro directorio de trabajo.

Por lo tanto, nuestro comando se leerá como sigue: " mv * ../images ". Entrémoslo ahora.

Parece que no ha pasado nada, pero esa es la forma en que la shell nos dice que no ocurrió ningún error. Si hubiera un problema, mostraría un mensaje de error o advertencia de algún tipo.

Vamos a verificar que los archivos se hayan movido. Podemos listar el contenido de otro directorio ejecutando ls y especificando una ruta de acceso. En este caso, nuestra ruta de acceso es " ../images ".

Las imágenes están allí, junto con otro directorio que ya existía (" fondos de pantalla "). Deberíamos crear nuestro propio directorio nuevo, para organizar mejor nuestras imágenes y evitar que el directorio principal de imágenes se vea desordenado. Vamos a hacer eso ahora.

Haciendo directorios

Cambiemos al directorio de imágenes donde residen nuestras dos imágenes de pingüinos.

Ahora vamos a hacer un nuevo directorio para nuestras imágenes de pingüinos. La creación de nuevos directorios se realiza con el comando mkdir .

La forma más simple del comando mkdir es darle un argumento: el nombre del nuevo directorio. Nos gustaría crear un nuevo directorio dentro de nuestro directorio actual, por lo que no tenemos que darle a mkdir un nombre de ruta completo, solo el nombre del directorio en sí. Llamemos a nuestro nuevo directorio penguin-pix .

Entonces, el comando que vamos a ingresar es " mkdir penguin-pix " para crear un nuevo directorio.

Ahora verifiquemos que está ahí, listando los contenidos del directorio.

Nota: Puede ver que cuando enumeramos el contenido del directorio, los nombres de los archivos y los nombres de los directorios tienen colores diferentes para ayudar a identificar los diferentes archivos y directorios. Aunque el resaltado de color es común con la mayoría de las carcasas, no todas las carcasas lo hacen de forma predeterminada.

Si no pudiéramos saber por el color de los nombres, siempre podríamos verificar cuáles de estos archivos son directorios invocando ls con la opción -l (lista larga).

La información adicional incluye lo siguiente.

  • Permisos : quién tiene acceso al archivo y qué tipo de acceso.
  • Propiedad - quién es el propietario del archivo.
  • Autoría - quién creó el archivo.
  • Tamaño del archivo : tamaño del archivo en bytes.
  • mtime : fecha y hora de la última modificación del archivo.

La primera letra en las líneas para penguin-pix y wallpapers es una " d ", que indica que esos son directorios. Para obtener más información sobre las listas de archivos, consulte la documentación del comando chmod .

Ahora podemos mover nuestras imágenes al nuevo directorio. Para decirle a mv qué archivos mover, podemos usar un comodín nuevamente, pero esta vez, asegurémonos de que sepa mover solo los archivos de imagen, no los directorios. Dado que ambos archivos de imagen terminan con la extensión .jpg, podemos especificar el nombre del archivo " * .jpg ": esto le dice al shell "los archivos que quiero mover son los archivos en el directorio actual que terminan con .jpg ". Entonces nuestro comando se verá así: " mv * .jpg penguin-pix ".

No se dio ningún mensaje de error, lo que significa que el comando se completó con éxito. Verifiquemos que los archivos fueron movidos listando el contenido de penguin-pix .

Eliminando archivos

Tenemos dos fotos de pingüinos, pero tal vez decidimos que solo necesitamos real-penguin.jpg, y ya no necesitamos tux-the-penguin.jpg . Podemos eliminar este archivo usando el comando rm ("eliminar").

Tendremos que proporcionar a rm el nombre del archivo para eliminar. Actualmente estamos en el directorio de imágenes, pero nuestra imagen ahora está en el subdirectorio penguin-pix . Podríamos cambiar nuestro directorio de trabajo a penguin-pix y luego ejecutar el comando, pero eso es solo un trabajo adicional, podemos omitir ese paso utilizando el directorio como parte de la ruta.

Nuestro comando se verá así: " rm penguin-pix / tux-the-penguin.jpg ".

Una vez más, el shell ejecuta nuestro comando sin dar ningún comentario. El comando se ejecutó con éxito, por lo que el shell nos devuelve al indicador de comandos, lo que nos permite saber que está listo para otro comando.

Advertencia: a diferencia de arrastrar un archivo a la papelera o la papelera de reciclaje de Microsoft Windows, no hay forma de deshacer una eliminación de archivos con rm . ¡Quita tus archivos con cuidado! Una vez que se han ido, es (virtualmente) imposible recuperarlos.

Simplemente verifiquemos que el archivo realmente se haya ido.

Eliminando directorios

Eso es genial para los archivos, pero ¿qué pasa con los directorios? Por defecto, rm solo elimina archivos y no directorios.

El comando rmdir ("eliminar directorio") elimina un directorio, asumiendo que está vacío. Probémoslo creando un nuevo directorio vacío, usando el comando " mkdir test-directory ".

Vamos a verificar que está ahí con el comando " ls -l ".

Ahora podemos eliminar nuestro nuevo directorio con el comando " rmdir test-directory ", y verificar que se haya ido ejecutando nuevamente el comando " ls -l ".

Sí, se ha ido.

Sin embargo, ¿qué pasaría si intentáramos " rmdir penguin-pix "?

No podemos reenviar ese directorio porque no está vacío.

Si está seguro de que desea eliminar penguin-pix y todo lo que contiene (incluidos todos los archivos y los directorios que pueda contener), puede usar el comando rm con la opción -r .

Normalmente, rm no funcionará en un directorio. Sin embargo, si se invoca con la opción -r, rm elimina un directorio de forma recursiva, lo que significa que viaja al directorio y a cualquier subdirectorio, eliminando todo, incluido el directorio. Entonces, si ejecutamos el comando " rm -r penguin-pix ", elimina el directorio y el archivo que estaba dentro. Si hubiera algún directorio dentro, también se habrían eliminado.

¡Advertencia! Una vez más, no hay deshacer para este comando. Cuando rm -r un directorio, ese directorio y todo lo que contiene es eliminado para siempre. Como la mayoría de los comandos de Linux, rm es muy potente y debe usarse con cuidado.

Para copiar un archivo, use el comando cp .

 cp FUENTE DESTINO 

FUENTE es el nombre del archivo que desea copiar, y DESTINO es la ruta que especifica el destino del nuevo archivo. El destino puede ser un nuevo nombre de archivo o el nombre del directorio donde desea ubicar una copia.

Digamos que tenemos un archivo de texto en nuestra carpeta de documentos llamado orig.txt, y queremos hacer una copia de él llamada copy.txt . El comando que debemos usar es " cp orig.txt copy.txt ".

Si, por otro lado, especificamos un directorio como el destino del comando cp, hace una copia con el mismo nombre que el original en el directorio de destino. En el siguiente ejemplo, hacemos seis cosas.

  1. Listar los contenidos del directorio de trabajo.
  2. Hacer un nuevo directorio, llamado copias .
  3. Liste los contenidos del directorio de trabajo, que ahora incluye el directorio de copias .
  4. Listar los contenidos del directorio de copias (no hay ninguno. Está vacío).
  5. Copie copy.txt en el directorio de copias .
  6. Liste el contenido del directorio de copias, que ahora contiene una copia de copy.txt .

Renombrando un archivo

El comando mv también se puede utilizar para cambiar el nombre de un archivo. Por ejemplo, el comando " mv orig.txt original.txt " cambiará el nombre del archivo orig.txt a original.txt .

Renombrando un directorio

El cambio de nombre de los directorios funciona exactamente igual que el cambio de nombre de los archivos, con el comando mv . Aquí, creamos un directorio llamado " copiar ", pero lo cambiamos de nombre a " copias " usando el comando " mv copy copy ".

Si el directorio de copia contuviera algún archivo o directorio, no se modificaría. Lo único que cambiaría es el nombre del directorio que los contenía.

Autocompletar

La mayoría de los shells de línea de comando de Linux completan automáticamente la palabra que ha comenzado a escribir si presiona la tecla Tab. La finalización automática puede ayudarlo a ahorrar tiempo, especialmente con nombres de archivo largos. Por ejemplo, digamos que tiene tres archivos en su carpeta de documentos: penguin-diving.jpg, penguin.jpg y penguins.jpg .

Si escribe un comando y luego escribe " p " y presiona la tecla Tab, el shell completa la palabra "pingüino" para usted.

Se detiene allí porque todos los archivos comienzan con la palabra pingüino, pero después de eso no está seguro de qué archivo desea especificar.

Si se encuentra en una situación en la que hay más de una coincidencia de autocompletado para lo que ya ha escrito, al presionar la tecla Tab dos veces se solicita al shell que enumere todas las coincidencias posibles. Así que en la situación anterior donde escribió p y Tab y el shell completó automáticamente el pingüino para usted. Presione la tecla Tab dos veces más para obtener todas las opciones posibles y volver a colocarlo en el indicador, con el comando completado donde lo dejó.

La función de autocompletar también funciona para completar nombres de rutas y nombres de comandos.

Saliendo de la concha

Al escribir el comando exit, se sale del shell de comandos y se cierra la ventana de terminal o se prepara para cerrar manualmente la ventana de terminal.