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 o distros . Algunos ejemplos son Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux y muchos otros.
El núcleo 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 celulares. Hoy, el 90% de toda la infraestructura de la nube y el 74% de los teléfonos inteligentes del mundo funcionan con Linux.
Sin embargo, a los recién llegados a Linux puede resultarles algo difícil de abordar, ya que los sistemas de archivos de Linux tienen una estructura diferente a la de los que se encuentran en Windows o MacOS. Además, los sistemas operativos basados en Linux dependen en gran medida del trabajo con la interfaz de línea de comandos, mientras que la mayoría de las computadoras personales dependen de 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ás tener acceso a una computadora que ejecute un sistema operativo basado en Linux. Puede ser un servidor privado virtual al que te hayas conectado mediante SSH o tu máquina local. Ten en cuenta que este tutorial se validó con un servidor Linux que ejecuta Ubuntu 20.04, pero los ejemplos que se dan deberían funcionar en una computadora que ejecute cualquier versión de cualquier distribución de Linux.
Si planea utilizar un servidor remoto para seguir esta guía, le recomendamos que primero complete nuestra guía de configuración inicial del servidor . Al hacerlo, obtendrá un entorno de servidor seguro (que incluye un usuario no rootsudo
con privilegios y un firewall configurado con UFW) que puede utilizar para desarrollar sus habilidades en 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 los sistemas Linux, el shell que se presenta 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 se pueden ejecutar comandos y ver los resultados impresos en la terminal, como esto:
Para convertirse en un experto en Linux, es necesario que se sienta cómodo con el uso de una terminal. Cualquier tarea administrativa, incluida 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: usted especifica los comandos que desea ejecutar y la terminal muestra los resultados de esos comandos. Para ejecutar cualquier comando, escríbalo en el indicador y presione ENTER
.
Al acceder a un servidor en la nube, lo más frecuente es que lo hagas a través de una terminal. Aunque las computadoras personales que ejecutan Linux suelen venir con el tipo de entorno de escritorio gráfico que la mayoría de los usuarios conocen, suele ser más eficiente o práctico realizar ciertas tareas a través de comandos ingresados 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, por sus siglas en inglés) . El FHS define un conjunto de directorios, cada uno de los cuales cumple su propia función especial.
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 lo lleva a su propio directorio de usuario, almacenado en /home/
. Esto se conoce como el directorio de inicio del usuario . El FHS define /home/
como que contiene los directorios de inicio para los usuarios habituales.
El usuario root tiene su propio directorio de inicio especificado por el FHS: /root/
. Tenga en cuenta que /
se lo 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 (que son funcionalmente idénticos a las carpetas que se encuentran en otros sistemas operativos) dentro de otros directorios, y los archivos pueden existir en cualquier directorio.
Para ver en qué directorio estás activo actualmente pwd
, puedes ejecutar el comando que significa “imprimir directorio de trabajo”:
- pwd
pwd
Imprime 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 , que se encuentra en el 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 ls
comando:
- ls
Esto devolverá una lista de los nombres de los archivos o directorios que se encuentran en el 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.
Puede crear uno o más directorios nuevos dentro de su directorio de trabajo actual con el mkdir
comando, que significa “crear directorio”. Por ejemplo, para crear dos directorios nuevos llamados testdir1
y testdir2
, puede ejecutar el siguiente comando:
- mkdir testdir1 testdir2
Ahora, cuando ejecute el ls
comando, estos directorios aparecerán en la salida:
- ls
Outputtestdir1testdir2
Para navegar a uno de estos nuevos directorios, ejecute el cd
comando (que significa “cambiar directorio”) y especifique el nombre del directorio:
- cd testdir1
Esto cambiará el nuevo directorio de trabajo actual al directorio que haya especificado. Puede comprobarlo con pwd
:
- pwd
Output/home/sammy/testdir1
Sin embargo, como testdir1
ambos testdir2
se encuentran en el directorio de inicio del usuario sammy , residen en diferentes ramas del árbol de directorios. El cd
comando busca directorios dentro de su directorio de trabajo actual, por lo que esto significa que no puede cd
ingresar directamente al testdir2
directorio que creó anteriormente mientras testdir1
sea 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 una abreviatura del directorio de inicio del usuario con el que ha iniciado sesión. Si sabe esto, puede escribir el comando anterior de la siguiente manera y obtendrá el mismo resultado:
- cd ~/testdir2
Además, puedes especificar ..
que se cambie al directorio que se encuentra en 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 pwd
comando 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 a lo largo de esta sección.
Manipulación de archivos
No se puede utilizar cd
para interactuar con archivos; cd
significa “cambiar directorio” y solo permite navegar por directorios. Sin embargo, se pueden crear, editar y ver los contenidos de los archivos.
Una forma de crear un archivo es con el touch
comando. Para crear un nuevo archivo llamado file.txt
:
- touch file.txt
Esto crea un archivo vacío con el nombre file.txt
en su directorio de trabajo actual. El contenido de este archivo está vacío.
Si decide cambiar el nombre file.txt
más adelante, puede hacerlo con el mv
comando:
- mv file.txt newfile.txt
mv
significa “mover” y puede mover un archivo o directorio de un lugar a otro. Al especificar el archivo original, file.txt
, puede “moverlo” a una nueva ubicación en el directorio de trabajo actual, y así cambiarle el nombre.
También es posible copiar un archivo a una nueva ubicación con el cp
comando. Si queremos recuperarlo file.txt
pero conservarlo newfile.txt
, podemos hacer una copia de este newfile.txt
modo file.txt
:
- cp newfile.txt file.txt
Como habrás adivinado, cp
es la abreviatura de “copiar”. Al copiar newfile.txt
a 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, es necesario un editor de archivos.
Existen muchas opciones de editores de archivos, todos ellos creados por profesionales para uso diario. Entre estos editores se incluyen vim
, emacs
, nano
, y pico
.
nano
Es 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.txt
con nano
, ejecute el siguiente comando:
- nano file.txt
Esto abrirá un espacio donde puedes comenzar a escribir de inmediato para editar file.txt
. Agrega el texto que desees o puedes copiar el texto de este ejemplo:
archivo.txt
Say it's only a paper moonSailing over a cardboard sea,But it wouldn't be make believeIf you believed in me.Yes it's only a canvas skyHanging over a muslin tree,But it wouldn't be make believeIf 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 believeIf you believed in me.
Para guardar el texto escrito, presione CTRL + X
, Y
y luego ENTER
. Esto lo llevará de regreso al shell con un file.txt
archivo recién guardado.
Ahora que file.txt
hay algo de texto dentro, puedes verlo usando cat
o less
.
El cat
comando imprime el contenido de un archivo específico en la salida del sistema. Intente ejecutar cat
y pasar el file.txt
archivo que acaba de editar como argumento:
- cat file.txt
Esto imprimirá todo el contenido file.txt
en la terminal. Si utilizó el texto del ejemplo anterior, este comando devolverá un resultado similar a este:
OutputSay it's only a paper moonSailing over a cardboard sea,But it wouldn't be make believeIf you believed in me.Yes it's only a canvas skyHanging over a muslin tree,But it wouldn't be make believeIf 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 believeIf you believed in me.
El uso de la función cat
para ver el contenido de un archivo puede resultar complicado y difícil de leer si el archivo es especialmente largo. Como alternativa, puede utilizar el less
comando que le permitirá paginar la salida.
Úselo less
para ver el contenido del file.txt
archivo, de la siguiente manera:
- less file.txt
Esto también imprimirá el contenido de file.txt
, pero una página de terminal a la vez, comenzando desde el principio del archivo. Puede utilizar la barra espaciadora para avanzar una página o las teclas de flecha para subir y bajar una línea a la vez.
Presione q
para salir de less
.
Finalmente, para eliminar el file.txt
archivo, pase el nombre del archivo como argumento a rm
:
- rm file.txt
Nota: Sin otras opciones, el rm
comando (que significa “eliminar”) no se puede utilizar para eliminar directorios. Sin embargo, sí incluye la -d
opción que permite eliminar directorios vacíos:
- rm -d directory
También puedes eliminar directorios vacíos con el rmdir
comando:
- rmdir directory
Si desea eliminar un directorio que no está vacío, puede ejecutar el comando rm
con el -r
indicador . Esto eliminará el directorio especificado junto con su contenido, incluidos los archivos y subdirectorios:
- rm -r directory
Sin embargo, debido a que eliminar contenido es una acción permanente, solorm
-r
debes ejecutar la opción si estás seguro de que deseas 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 algo completamente nuevo para usted.
Cuando tienes una pregunta sobre cómo realizar una determinada tarea, existen varias vías de instrucción a las que puedes recurrir. Los motores de búsqueda como Google y DuckDuckGo son recursos invaluables, al igual que los sitios de preguntas y respuestas como Stack Exchange o la Comunidad de preguntas y respuestas de DigitalOcean . Es probable que, si tienes una pregunta, muchas otras personas ya la hayan formulado y hayan obtenido una respuesta.
Si su pregunta tiene que ver con 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 al man
comando:
- man command
Por ejemplo, man rm
muestra 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 está más allá del alcance de un solo tutorial. Por ejemplo, este tutorial no menciona los permisos , un concepto fundamental de la administración del sistema Linux.
Te invitamos a que consultes todo nuestro contenido introductorio de Linux, que se puede encontrar en nuestra página de etiquetas Conceptos básicos de Linux .
Deja una respuesta