Introducción a los conceptos básicos de Linux

Introducción

Linux es una familia de sistemas operativos libres y de código abierto basados ​​en el núcleo Linux. Los sistemas operativos basados ​​en Linux se conocen como distribuciones Linux . Algunos ejemplos son Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux y muchos otros.

El kernel de Linux ha estado en desarrollo activo desde 1991 y ha demostrado ser extremadamente versátil y adaptable. Se pueden encontrar computadoras que ejecutan Linux en una amplia variedad de contextos en todo el mundo, desde servidores web hasta teléfonos móviles. Hoy en día, el 90 % de la infraestructura en la nube y el 74 % de los teléfonos inteligentes del mundo funcionan con Linux.

Sin embargo, a los recién llegados a Linux les puede resultar algo difícil de usar, ya que los sistemas de archivos de Linux tienen una estructura diferente a la de Windows o macOS. Además, los sistemas operativos basados ​​en Linux dependen en gran medida de la interfaz de línea de comandos, mientras que la mayoría de las computadoras personales utilizan interfaces gráficas.

Esta guía sirve como introducción a conceptos y habilidades importantes de la línea de comandos y prepara a los recién llegados para aprender más sobre Linux.

Prerrequisitos

Para seguir esta guía, necesitará acceder a un ordenador con sistema operativo Linux. Puede ser un servidor privado virtual al que se haya conectado por SSH o su equipo local. Tenga en cuenta que este tutorial se validó con un servidor Linux con Ubuntu 20.04, pero los ejemplos proporcionados deberían funcionar en cualquier ordenador con cualquier versión de Linux.

Si planea usar un servidor remoto para seguir esta guía, le recomendamos que primero complete nuestra guía de configuración inicial del servidor . Esto le permitirá configurar un entorno de servidor seguro, que incluye un usuario no root con sudoprivilegios y un firewall configurado con UFW, que puede usar para mejorar sus habilidades con Linux.

La terminal

Los términos “terminal”, “shell” e “interfaz de línea de comandos” a menudo se usan indistintamente, pero existen diferencias sutiles entre ellos:

  • Una terminal es un entorno de entrada y salida que presenta una ventana de solo texto que ejecuta un shell.
  • Un shell es un programa que expone el sistema operativo de la computadora a un usuario o programa. En sistemas Linux, el shell presentado en una terminal es un intérprete de línea de comandos.
  • Una interfaz de línea de comandos es una interfaz de usuario (administrada por un programa intérprete de línea de comandos) que procesa comandos a un programa de computadora y genera los resultados.

Cuando alguien se refiere a uno de estos tres términos en el contexto de Linux, generalmente se refiere a un entorno de terminal donde puede ejecutar comandos y ver los resultados impresos en la terminal, como esto:

Ejemplo de ventana de terminal

Para convertirse en un experto en Linux, es necesario familiarizarse con el uso de una terminal. Cualquier tarea administrativa, como la manipulación de archivos, la instalación de paquetes y la gestión de usuarios, se puede realizar a través de la terminal. La terminal es interactiva: se especifican los comandos a ejecutar y la terminal muestra los resultados. Para ejecutar cualquier comando, se escribe en el símbolo del sistema y se pulsa ENTER.

Al acceder a un servidor en la nube, lo más frecuente es hacerlo a través de una terminal. Aunque las computadoras personales con Linux suelen incluir el entorno de escritorio gráfico habitual para la mayoría de los usuarios, suele ser más eficiente o práctico realizar ciertas tareas mediante comandos introducidos en la terminal.

El estándar de jerarquía del sistema de archivos

Casi todas las distribuciones de Linux cumplen con un estándar universal para la estructura de directorios del sistema de archivos, conocido como el Estándar de Jerarquía del Sistema de Archivos (FHS) . El FHS define un conjunto de directorios, cada uno con una función específica.

La barra diagonal ( /) se utiliza para indicar el directorio raíz en la jerarquía del sistema de archivos definida por el FHS.

Cuando un usuario inicia sesión en el shell, se le redirige a su propio directorio de usuario, almacenado en [nombre del directorio] /home/. Este se denomina directorio de inicio del usuario . El FHS define [ /home/nombre del directorio] como el que contiene los directorios de inicio de los usuarios habituales.

El usuario root tiene su propio directorio de inicio, especificado por el FHS: /root/. Tenga en cuenta que /se denomina “directorio raíz” y que es diferente de root/, que se almacena dentro de /.

Debido a que FHS es el diseño del sistema de archivos predeterminado en las máquinas Linux, y cada directorio dentro del mismo está incluido para cumplir un propósito específico, se simplifica el proceso de organización de archivos según su función.

Los sistemas de archivos de Linux se basan en un árbol de directorios. Esto significa que se pueden crear directorios (funcionalmente idénticos a las carpetas de otros sistemas operativos) dentro de otros directorios, y los archivos pueden existir en cualquier directorio.

Para ver en qué directorio se encuentra activo actualmente, puede ejecutar el pwdcomando que significa “imprimir directorio de trabajo”:

pwd

pwdImprime la ruta a tu directorio actual. El resultado será similar a esto:

Output/home/sammy

Este ejemplo de salida indica que el directorio activo actual es sammy, que se encuentra dentro del home/directorio raíz, /. Como se mencionó anteriormente, dado que el sammy/directorio se almacena dentro del home/directorio, sammy/representa el directorio de inicio del usuario sammy .

Para ver una lista de archivos y directorios que existen en su directorio de trabajo actual, ejecute el lscomando:

ls

Esto devolverá una lista con los nombres de los archivos o directorios que se encuentran en su directorio de trabajo actual. Sin embargo, si sigue esta guía en una máquina nueva, es posible que este comando no devuelva ningún resultado.

Puedes crear uno o más directorios nuevos dentro de tu directorio de trabajo actual con el mkdircomando “crear directorio”. Por ejemplo, para crear dos directorios nuevos llamados testdir1y testdir2, podrías ejecutar el siguiente comando:

mkdir testdir1 testdir2

Ahora, cuando ejecute el lscomando, estos directorios aparecerán en la salida:

ls

Outputtestdir1
testdir2

Para navegar a uno de estos nuevos directorios, ejecute el cdcomando (que significa “cambiar directorio”) y especifique el nombre del directorio:

cd testdir1

Esto cambiará tu nuevo directorio de trabajo actual al directorio que especificaste. Puedes comprobarlo con pwd:

pwd

Output/home/sammy/testdir1

Sin embargo, dado testdir1que testdir2ambos se encuentran en el directorio personal del usuario sammy , residen en ramas diferentes del árbol de directorios. El cdcomando busca directorios dentro de su directorio de trabajo actual, lo que significa que no puede cdacceder directamente al testdir2directorio creado previamente mientras testdir1sea su directorio de trabajo:

cd testdir2

Outputbash: cd: testdir2: No such file or directory

Sin embargo, puede navegar a cualquier directorio existente independientemente de su directorio de trabajo actual si especifica la ruta completa del directorio al que desea navegar:

cd /home/sammy/testdir2

Nota: En Linux, una tilde ( ~) es la abreviatura del directorio de inicio del usuario con el que se ha iniciado sesión. Sabiendo esto, podría escribir el comando anterior así y obtendría el mismo resultado:

cd ~/testdir2

Además, puedes especificar ..que se cambie al directorio un nivel superior en tu ruta. Para volver a tu directorio original:

cd ..

Si alguna vez no sabe dónde se encuentra en el árbol de navegación, recuerde que siempre puede ejecutar el pwdcomando para encontrar su directorio actual. Muchos shells modernos (incluido Bash, el predeterminado para muchas distribuciones de Linux) también indican su directorio actual, como se muestra en los comandos de ejemplo de esta sección.

Manipulación de archivos

No se puede usar cdpara interactuar con archivos; cdsignifica “cambiar de directorio” y solo permite navegar por directorios. Sin embargo, sí se puede crear, editar y ver el contenido de los archivos.

Una forma de crear un archivo es con el touchcomando. Para crear un nuevo archivo llamado file.txt:

touch file.txt

Esto crea un archivo vacío con el nombre file.txten su directorio de trabajo actual. El contenido de este archivo está vacío.

Si decide cambiar el nombre file.txtmás adelante, puede hacerlo con el mvcomando:

mv file.txt newfile.txt

mvSignifica “mover” y permite mover un archivo o directorio. Al especificar el archivo original, file.txtse puede “mover” a una nueva ubicación en el directorio de trabajo actual, renombrándolo.

También es posible copiar un archivo a una nueva ubicación con el cpcomando. Si queremos recuperarlo file.txtpero conservarlo newfile.txt, podemos hacer una copia de newfile.txt`name` file.txtasí:

cp newfile.txt file.txt

Como habrás adivinado, cpes la abreviatura de “copiar”. Al copiar newfile.txta un nuevo archivo llamado file.txt, has replicado el archivo original en un nuevo archivo con un nombre diferente.

Sin embargo, los archivos no sirven de mucho si no contienen nada. Para editarlos, se necesita un editor de archivos.

Existen numerosas opciones de editores de archivos, todos creados por profesionales para uso diario. Entre estos editores se incluyen vim, emacs, nanoy pico.

nanoEs una opción adecuada para principiantes: es relativamente fácil de usar y no te sobrecarga con opciones o comandos crípticos.

Para agregar texto a file.txtcon nano, ejecute el siguiente comando:

nano file.txt

Esto abrirá un espacio donde podrás empezar a escribir para editar inmediatamente file.txt. Agrega el texto que desees o copia el texto de este ejemplo: archivo.txt

Say it's only a paper moon
Sailing over a cardboard sea,
But it wouldn't be make believe
If you believed in me.

Yes it's only a canvas sky
Hanging over a muslin tree,
But it wouldn't be make believe
If you believed in me.

Without your love,
It's a honky-tonk parade.
Without your love,
It's a melody played in a penny arcade.

It's a Barnum and Bailey world,
Just as phony as it can be,
But it wouldn't be make believe
If you believed in me.

Para guardar el texto escrito, pulse CTRL + X, Yy luego ENTER. Esto le llevará de vuelta al shell con un file.txtarchivo recién guardado.

Ahora que file.txttiene algo de texto dentro, puedes verlo usando cato less.

El catcomando imprime el contenido de un archivo específico en la salida del sistema. Intente ejecutarlo caty pasar el file.txtarchivo que acaba de editar como argumento:

cat file.txt

Esto imprimirá todo el contenido file.txten la terminal. Si usó el texto del ejemplo anterior, este comando devolverá un resultado similar a este:

OutputSay it's only a paper moon
Sailing over a cardboard sea,
But it wouldn't be make believe
If you believed in me.

Yes it's only a canvas sky
Hanging over a muslin tree,
But it wouldn't be make believe
If you believed in me.

Without your love,
It's a honky-tonk parade.
Without your love,
It's a melody played in a penny arcade.

It's a Barnum and Bailey world,
Just as phony as it can be,
But it wouldn't be make believe
If you believed in me.

Ver catel contenido de un archivo puede resultar complicado y difícil de leer si es muy largo. Como alternativa, puede usar el lesscomando que le permitirá paginar la salida.

Úselo lesspara ver el contenido del file.txtarchivo, de la siguiente manera:

less file.txt

Esto también imprimirá el contenido de file.txt, pero página por página, comenzando desde el principio del archivo. Puedes usar la barra espaciadora para avanzar una página o las flechas para subir y bajar una línea a la vez.

Presione qpara salir de less.

Finalmente, para eliminar el file.txtarchivo, pase el nombre del archivo como argumento a rm:

rm file.txt

Nota: Sin otras opciones, el rmcomando (que significa “eliminar”) no puede usarse para eliminar directorios. Sin embargo, incluye la -dopción que permite eliminar directorios vacíos:

rm -d directory

También puedes eliminar directorios vacíos con el rmdircomando:

rmdir directory

Si desea eliminar un directorio que no esté vacío, puede ejecutar rmla -rbandera. Esto eliminará el directorio especificado junto con su contenido, incluyendo archivos y subdirectorios:

rm -r directory

Sin embargo, debido a que eliminar contenido es una acción permanente, solorm-r debe ejecutar esta opción si está seguro de que desea eliminar el directorio especificado .

Una cultura de aprendizaje

Se necesita tiempo, dedicación y una mentalidad curiosa para sentirse cómodo navegando por un sistema Linux a través de una ventana de terminal, especialmente si es completamente nuevo para usted.

Cuando tengas una pregunta sobre cómo realizar una tarea, existen varias vías de aprendizaje a las que puedes recurrir. Motores de búsqueda como Google y DuckDuckGo son recursos invaluables, al igual que sitios de preguntas y respuestas como Stack Exchange o la Comunidad de Preguntas y Respuestas de DigitalOcean . Es probable que, si tienes una pregunta, muchos otros ya la hayan formulado y hayan obtenido respuesta.

Si su pregunta se refiere a un comando específico de Linux, las páginas del manual ofrecen documentación detallada y esclarecedora para casi todos los comandos. Para ver la página del manual de cualquier comando, pase el nombre del comando como argumento man:

man command

Por ejemplo, man rmmuestra el propósito de rm, cómo usarlo, qué opciones están disponibles, ejemplos de uso y más información útil.

Conclusión

Esta guía sirve como introducción al trabajo con un entorno Linux. Sin embargo, comprender completamente Linux y todos sus componentes va mucho más allá del alcance de un solo tutorial. Por ejemplo, este tutorial no menciona los permisos , un concepto fundamental de la administración de sistemas Linux.

Te invitamos a que revises todo nuestro contenido introductorio de Linux, que se puede encontrar en nuestra página de etiquetas Conceptos básicos de Linux .

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post