Linux: Las 30 Preguntas más frecuentes y sus Respuestas
Soy hace varios años que imparto cursos de Linux. Mis alumnos suelen tener dudas que se repiten con frecuencia. He decidido hacer un recopilatorio por si la respuesta le puede servir a alguien más. Espero que te ayude.
Contenidos
- ¿Cómo instalo Linux?
- ¿Qué Linux es más parecido a Windows?
- En Linux, ¿dónde se instalan los programas?
- ¿Cómo instalar las páginas man es español?
- ¿La ruta de un directorio debe acabar con la barra / ?
- ¿Qué es el GRUB?
- ¿Por qué no funciona el comando aptitude?
- ¿Qué diferencia hay entre una partición extendida, lógica y una primaria?
- ¿Puedo practicar comandos de Linux sin tenerlo instalado?
- No me aparece el fichero /etc/inittab o no existe
- ¿Cómo guardo los cambios cuando edito un texto con nano?
- No puedo conectar a un ordenador por ssh usando el usuario root
- ¿Por qué aparecen las comillas en el nombre al hacer ls si las he utilizado para crear un elemento que contiene espacios?
- Cuando ejecuto pstree o killall me devuelve “orden no encontrada”
- Cuando intento habilitar un servicio (enable), me muestra un error diciendo que está masked
- ¿Qué difernecia hay entre usar / en una ruta o usar ~?
- En los permisos especiales setuid, setgid o sticky bit, ¿Cuál es la diferencia entre que se muestren en mayúsculas o minúsculas?
- ¿Cuál es la diferencia entre los comandos SU, SUDO Y SU – ?
- Error de comando no encontrado al ejecutarlo como root en Debian 10
- ¿Qué diferencia hay entre apt-get y apt?
- ¿Cómo puedo editar el prompt para que salga diferente?
- ¿Cuál es la distribución de Linux más usada en el entorno profesional?
- ¿Cuál es la diferencia entre un enlace duro (hard link) y un enlace simbólico (soft link) ?
- Poner colores en el terminal con el comando ls
- No funciona o no encuentra el comando ifconfig
- ¿Qué es un carácter de escape? ¿Para qué se usa?
- ¿Hay papelera de reciclaje en Linux? ¿Cómo recupero un archivo borrado?
- ¿Qué diferencia hay entre auto y allow-hotplug en el fichero /etc/network/interface?
¿Cómo instalo Linux?
La mayoría de las distribuciones de Linux son gratuitas, por lo que sólo tienes que descargarlo e instalarlo en tu equipo. Hay varias formas de hacerlo, aquí te enlazo videos donde se explica cómo instalar Linux en una máquina virtual y cómo instalar Linux en un ordenador que ya tiene windows.
¿Qué Linux es más parecido a Windows?
Aquí tienes algunas distribuciones que por su fácil manejo y cuidado aspecto te pueden facilitar la vida si sólo has usado Windows:
En Linux, ¿dónde se instalan los programas?
En general, el software se distribuye en un fichero llamado “paquete” que contiene todos los ficheros necesarios para su funcionamiento, así como la información necesaria sobre el propio software y sobre los requerimientos / dependencias que necesita. Tradicionalmente se han usado paquetes .deb en Debian y sus derivadas (Ubuntu, Mint, Kali, Deepin, etc), y paquetes .rpm en Red Hat y sus distribuciones derivadas (Fedora, CentOS, Suse, etc.). Pero Ubuntu apostó por otro tipo de paquete, más compatible con todas las plataformas, el snap.
Usando entornos gráficos
Todos los entornos gráficos tienen programas específicos para instalar software, depende de la distribución los encontrarás en un lugar u otro. Puedes ir a Sistema → Administración → Añadir/Eliminar Software, o buscar “software” en el buscador de entornos como Ubuntu + Gnome.
Estos programas suelen ser de fácil manejo, agrupando los programas por categorías y permitiendo que se instalen con unos pocos clics
Mediante comandos en el terminal usando repositorios de software
La manera más común es usar comandos ejecutados en un terminal (real o en un emulador del entorno gráfico). Siempre debemos ejecutarlos con permisos de administrador, mediante el usuario root o usando sudo.
Para instalar paquetes en Debian o derivadas, los .deb, utilizaremos el comando apt. Lo primero es configurar los repositorios, después:
- Actualizar la información de paquetes disponibles:
apt update
- Instalar:
apt install nombre_paquete
- Desinstalar:
apt delete nombre_paquete
. Para un borrado más profundo:apt purge nombre_paquete
Para instalar paquetes en Red Hat o derivadas, los .rpm, utilizaremos el comando yum.
- Instalar:
yum install nombre_paquete
- Desinstalar:
yum remove nombre_paquete
.
¿Cómo instalar las páginas man es español?
Los paquetes se llaman manpages-es
y manpages-es-extra
. Si utilizas Debian puedes hacer:
apt update
apt install manpages-es manpages-es-extra
¿La ruta de un directorio debe acabar con la barra / ?
Si la ruta termina con una / significa que es un directorio (o carpeta). Si no termina con / puede ser directorio o fichero. Así que si se trata de un directorio y puede haber confusión, es recomendable terminar con / .
¿Qué es el GRUB?
El GRUB2 es el gestor de arranque de Linux. Es un pequeño programa que se ejecuta al inicio del sistema para decidir qué sistema operativo tiene que arrancar el PC
¿Por qué no funciona el comando aptitude?
En algunas versiones lo han quitado de la instalación inicial, así que hay que instalarlo:
apt update
apt install aptitude
¿Qué diferencia hay entre una partición extendida, lógica y una primaria?
Una partición primaria es independiente. Una partición lógica está “dentro” de una partición extendida, así que si quieres hacer una lógica, por fuerza se tiene que crear una extendida. En resumen, si hablamos de MBR:
- Partición primaria: es independiente y sirve sobre todo para instalar sistemas operativos (como mucho puede haber 4)
- Partición extendida: su único objetivo es contener particiones lógicas (no guarda datos y hay como mucho 1)
- Partición lógica: se crea dentro de una extendida y sirve sobre todo para guardar datos (tradicionalmente, ahora puede guardar cualquier cosa, puede haber hasta 32).
¿Puedo practicar comandos de Linux sin tenerlo instalado?
Sí, usando web’s como esta: https://www.webminal.org
Aquí tienes un post con más enlaces parecidos: https://itsfoss.com/online-linux-terminals/
No me aparece el fichero /etc/inittab o no existe
El fichero /etc/inittab forma parte del sistema de arranque SysVinit, pero hace muchas versiones que ya no se utiliza, así que lo normal es que no esté el fichero. Tendrías que instalar una versión muy antigua como Debian 6.
Estas son las versiones que adoptaron Systemd y por lo tanto dejó de estar disponible SysVinit de forma nativa.
- Debian GNU/Linux desde la versión 8 “Jessie”.
- Ubuntu a partir de su versión 15.04 (abril de 2015).
- Fedora 15 y superior.
- Mandriva 2011.
- openSUSE 12.1 y superior.
- Arch Linux desde octubre de 2012.
- Red Hat Enterprise Linux desde la versión 7
- CentOS 7 desde julio de 2014.
¿Cómo guardo los cambios cuando edito un texto con nano?
Nano funciona igual independientemente de la distribución donde se use. Para utilizar las opciones del menú inferior tienes que pulsar la combinación de teclas que se muestran con el fondo blanco. El símbolo ^ significa que tienes que pulsar la tecla control. Así pues, para salir es ^X y eso significa que tienes que pulsar CONTROL+X.
No puedo conectar a un ordenador por ssh usando el usuario root
Por motivos de seguridad viene desactivado por defecto. Debes edita el fichero de configuración: nano /etc/ssh/sshd_config
Buscar la linea con la directiva PermitRootLogin y dejarlo así:
PermitRootLogin yes
Luego reiniciar el servicio:
service ssh restart
¿Por qué aparecen las comillas en el nombre al hacer ls si las he utilizado para crear un elemento que contiene espacios?
Los desarrolladores del comando ls
(paquete coreutils) han decidido ponerlo así desde la versión 8.25. Esas comillas no forman parte del nombre, pero ls lo muestra así para que tengas claro donde empieza y donde acaba el nombre. También por si quieres copiar y pegar o reutilizar el resultado en cualquier otro comando, que no tengas problemas con los espacios.
Al parecer ha sido una decisión muy controvertida ya que el resto de comando no lo hace. Puedes hacer por ejemplo du -s *
y verás como en su listado no aparecen las comillas.
Cuando ejecuto pstree o killall me devuelve “orden no encontrada”
Si quieres tenerlos en el sistema sólo tienes que instalar con apt el paquete psmisc
Cuando intento habilitar un servicio (enable), me muestra un error diciendo que está masked
Dicho servicio está “enmascarado”, eso significa que se ha desactivado para que nadie lo pueda usar.
Para volver a recuperarlo tendrías que poner:
systemctl unmask nombre_servicio
¿Qué difernecia hay entre usar / en una ruta o usar ~?
La / indica la raíz del sistema, es decir el directorio padre de todos, no puedes subir a ningún directorio por encima de /, todo estarán por debajo. Si piensas el sistema como un árbol, / sería la raíz, de ahí se crearía todas las demás “ramas”. Es algo absoluto, o sea que siempre significa lo mismo.
La ~ significa el directorio personal DEL QUE EJECUTA LA ORDEN, por lo que varía depende del usuario que lo utilice.
Si es root ~ es /root/
Si es alumno ~ es /home/alumno/
Usando un ejemplo de la vida real si Juan dice “Mi casa” se refiere a una dirección, por ejemplo Calle La Paz nº 4, si Marta dice “Mi casa” se refiere a otro lugar, por ejemplo Calle Libertad nº 54. Pero si Juan o Marta dicen “La plaza del pueblo” se estarán refiriendo al mismo lugar.
Si tienes problemas con las rutas relativas o absolutas en Linux te aconsejo que veas este video:
En los permisos especiales setuid, setgid o sticky bit, ¿Cuál es la diferencia entre que se muestren en mayúsculas o minúsculas?
Si se muestra en mayúsculas es que el permiso especial está presente y el ordinario no, si está en minúsculas es que están los dos. Fíjate en el siguiente ejemplo:
Si necesitas más ayuda sobre los permisos de Linux, te recomiendo ver este video.
¿Cuál es la diferencia entre los comandos SU, SUDO Y SU – ?
La orden su
lo que hace es cambiar de usuario (Switch User), si no pones el nombre del usuario al que quieres cambiar, de forma predeterminada lo hace al usuario root. La orden su -
hace lo mismo pero se usa desde Debian 10.
Sudo
es otra forma de ejecutar instrucciones con derechos de administrador pero sin estar identificado como root. Un usuario normal tendría derechos de administrador cuando añade sudo al principio de la orden a ejecutar. Esto se hace para que no use el sistema siempre como root, dado los riesgos que esto conlleva.
Unas distribuciones utilizan una manera u otra según su filosofía.
Error de comando no encontrado al ejecutarlo como root en Debian 10
Una posible causa es usar su en lugar de su – , en este post explico todo lo que ocurre: https://sanchezcorbalan.es/debian-10-error-command-not-found-administrador-root-su/
¿Qué diferencia hay entre apt-get y apt?
Primero estaba apt-get
, pero para algunas operaciones frecuente no sirve y hay que usar apt-cache
, por ejemplo
apt-cache search vlc apt-get install vlc
Esto es incómodo. Ahora todo se puede hacer directamente desde apt. También han incorporado alguna mejoras al ser un comando que han programado más recientemente.
¿Cómo puedo editar el prompt para que salga diferente?
Para modificar el prompt tienes que editar la variable $PS1
. Tiene ciertos códigos que hacen referencia a elementos del sistema como el usuario, el directorio actual, la hora, etc. Los puedes ver si ejecutas man bash
y luego vas a la sección PROMPTING (puedes buscar con la / )
Una vez que lo tengas definido lo puedes insertar en el ~/.bashrc para que se inicie cada vez que entres al intérprete de comandos, por ejemplo:
PS1='\[\e[0;32m\]\u\[\e[0;38m\][\W]\$ '
¿Cuál es la distribución de Linux más usada en el entorno profesional?
Depende del ámbito laboral, incluso del país en el que se trabaje pero yo destacaría:
- Debian
- CentOS
- Ubuntu Server
- RHEL (Red Hat)
- Suse
¿Cuál es la diferencia entre un enlace duro (hard link) y un enlace simbólico (soft link) ?
Un enlace simbólico es lo más parecido a lo que en entornos windows se conoce como “Acceso directo”. Es un pequeño archivo que “apunta” a otro archivo dentro del disco duro. Se hace para facilitar el acceso u organizar la información. Un enlace duro es como añadir un segundo nombre al mismo fichero, es decir, después de crear el enlace se podrá acceder a la información que hay guardada en el disco usando indistintamente el nombre archivo original o el nombre del enlace duro (no hay diferencia entre uno y otro).
Los enlaces duros se crean con ln
y los simbólicos con ln -s
Por si no te ha quedado claro, usaré un ejemplo más creativo. Supongamos que tienes un número de teléfono, por ejemplo el 111. Cuando la gente llama al 111 hablará contigo. Ahora quieres tener otro número. Tienes dos opciones:
1.- Te compras otro teléfono con otro número distinto 222. La gente cuando llame al 111 hablará contigo y cuando llame al 222 también. Si se te pierde el móvil 111 te podrán seguir llamando al 222 y contactarán contigo igualmente.
2.- Otra opción: Contratas un número 333 que no tiene un teléfono asociado, simplemente es un desvío de llamada al 111. Cuando la gente llame al 333 también hablará contigo, pero si se te pierde el teléfono con número 111, cuando llamen al 333 ya no podrán hablar contigo porque es un desvío de llama al 111 que ya no tienes.
La opción 1 es un enlace duro, la opción 2 es un enlace simbólico o débil. Tú eres la información en disco, jeje, y los números de teléfono son los nombres de los ficheros (o de los enlaces).
Poner colores en el terminal con el comando ls
En Debian, para el usuario root puedes hacer esto:
nano /root/.bashrc
Buscar estas lineas
# You may uncomment the following lines if you want `ls' to be colorized: # export LS_OPTIONS='--color=auto' # eval "`dircolors`" # alias ls='ls $LS_OPTIONS' # alias ll='ls $LS_OPTIONS -l' # alias l='ls $LS_OPTIONS -lA'
Y quitar la primer almohadilla de alguna lineas dejándolas así:
# You may uncomment the following lines if you want `ls' to be colorized: export LS_OPTIONS='--color=auto' eval "`dircolors`" alias ls='ls $LS_OPTIONS' # alias ll='ls $LS_OPTIONS -l' # alias l='ls $LS_OPTIONS -lA'
Luego guardas el fichero y sales de la sesión de root. Cuando vuelvas a entrar se deberían haber aplicado los cambios. Si en tu distribución o usuario no están esas lineas para descomentarlas, sólo tienes que copiarlas de este artículo y pegarlas en el fichero que te he indicado.
No funciona o no encuentra el comando ifconfig
Se puede instalar con el paquete net-tools
apt update apt install net-tools
El comando que lo sustituye se llama ip
y es bastante amplio. Te recomiendo este video sobre el comando ip para gestionar la red en Linux
¿Qué es un carácter de escape? ¿Para qué se usa?
Cuando un carácter tienen un significado especial pero necesitas quitarle ese significado especial, entonces tienes que usar otro carácter delante que realice esta acción. En cada lenguaje puede variar, en Bash es la \
Lo más común cuando se usa el sistema de ficheros es usarlo para utilizar espacios dentro de nombres de ficheros o directorios. El significado del carácter espacio en bash es separar dos parámetros distintos, así: mkdir casa azul
, significa hacer dos directorio, uno casa
y otro azul
, si le quiero quitar el significado de separar del carácter espacio pondré mkdir casa\ azul
y sólo creará un directorio casa azul
con el espacio incluido.
¿Hay papelera de reciclaje en Linux? ¿Cómo recupero un archivo borrado?
En los entornos gráficos sí hay papelera de reciclaje. Funciona igual que en Windows, pero en el modo comandos no se ofrece esa funcionalidad.
Aun así, es posible recuperar ficheros borrados ya que cuando se borra un fichero del disco no se elimina la información que contiene, simplemente se marca la zona como disponible para que se pueda escribir encima. Por lo tanto si no ha pasado mucho tiempo, con algunas herramientas se puede recuperar la información. En el caso de Linux se puede utilizar los comandos testdisk
, extundelete
, debugfs
, etc..
¿Qué diferencia hay entre auto y allow-hotplug en el fichero /etc/network/interface?
El fichero /etc/network/intefaces es el fichero tradicional de configuración de las tarjetas de red en sistemas Debian y derivados. Actualmente hay varios gestores de red, pero por compatibilidad, es recomendable conocer la manera clásica de configurar la red con dicho fichero. Hay dos directivas parecidas pero con matices diferentes, son estas:
Auto: Indica qué interfaces físicas se activarán cuando se ejecute el comando ifup -a
. Este comando se ejecuta siempre al arrancar el sistema.
Allow-hotplug: Indica que las interfaces físicas que se mencionan se activarán cuando se producen eventos hotplug en las interfaces de red, como la detección de la tarjeta por parte del kernel (kernel+drivers+udev), la conexión de una interface USB, etc.
Por lo tanto si es una tarjeta de red PCI, PCIe o similar sería conveniente usar auto porque vamos a querer tenerla activa al arrancar. Si estamos usando una externa USB que queremos activar al conectarla deberemos usar allow-hotplug.