materials

Comandos en GNU/Linux

Introducción

La línea de comandos de Linux es una herramienta muy potente que nos permite realizar cualquier acción en el sistema. En Linux el entorno gráfico es una opción y, de hecho, podemos instalar el sistema operativo sin entorno gráfico con todas sus funcionalidades (se hace en servidores para optimizar los recursos).

Aunque podemos hacer cualquier cosa necesitamos los permisos necesarios para hacerlo. Por eso hay muchos comandos que sólo los puede ejecutar el administrador root. Cómo vimos anteriormente el prompt de cualquier usuario normal acaba en el carácter $ y el de root en #.

Cuando el usuario root ejecuta un comando el sistema operativo considera que sabe qué está haciendo y no nos pedirá confirmaciones, simplemente lo hace. Por eso tenemos que tener mucho cuidado cuando seamos root en un sistema Linux. La recomendación es que siempre trabajamos como un usuario normal y sólo cuando tengamos que ejecutar un comando que necesita permisos de administrador nos convirtamos en root.

Comandos de administración

Como hemos dicho, algunos comandos sólo puede ejecutarlos root. El comando para cambiar de usuario es su y se le pasa como parámetro el usuario al que queremos cambiar. Si no le pasamos ningún parámetro se supone que queremos ser root. Ejemplo:

su jmonllor

pasamos a ser el usuario jmonllor (después de escribir su contraseña)

su

pasamos a ser el usuario root (si escribimos la contraseña de root). Es lo mismo que su root.

IMPORTANTE: si nos convertimos en otro usuario no se cambian algunas de las variables de entorno (prueba a hacer echo $USER), lo que puede ser un problema. Para hacer que se cambien deberíamos siempre ejecutar este comando con el parámetro -:

su -
su jmonllor -

También es posible ejecutar un comando que necesita permisos de root desde nuestro usuario anteponiéndole el comando sudo. Para hacer esto nuestro usuario tiene que pertenecer al grupo de usuarios administradores (sudo).

En el caso de Ubuntu esta es la manera de trabajar por defecto: el usuario con que instalamos el sistema pertenece al grupo sudo. De hecho durante el proceso de instalación no se nos pide la contraseña de root por lo cual no podemos acceder como root (podemos hacerlo con el comando sudo su).

En el caso de Debian el usuario que se crea durante la instalación es un usuario normal (no puede hacer sudo) pero se nos pide la contraseña de root para poder acceder como root cuando queramos.

Autocompletado

En Linux no hay que escribir el comando entero sino que podemos utilizar la función de autocompletar: por ejemplo si queremos reiniciar el ordenador en cuenta de escribir el comando reboot entero podemos escribir reb y pulsar el tabulador para que aparezca el resto del comando. Si hay varios comandos que empiezan por los caracteres que hemos escrito aparece una lista de todos ellos al pulsar el tabulador dos veces (por ejemplo si en vez de escribir reb escribimos sólo re al pulsar el tabulador no pasa nada pero al volver a pulsarlo aparecen todos los comandos que empiezan por re, incluyendo reboot).

La función de autocompletar también funciona para los nombres de ficheros y directorios y es conveniente utilizarla por comodidad pero también porque así evitamos equivocarnos a la hora de escribir.

También utilizaremos a a menudo la utilidad de Linux de guardar los comandos que ya hemos escrito de forma que podemos volver a escribirlos sólo pulsando las flechas de cursor arriba y bajo. Podemos ver la lista de comandos almacenada con el comando history.

Las terminales en Gnu/Linux

Linux por defecto arranca 7 terminales para trabajar, 6 de texto y una terminal gráfica. Podemos cambiar de unos a otros con Ctrl+Alt+Fn donde n es el número de terminal al que queremos ir. La terminal gráfica es la 7 y las de texto son las terminales de la 1 a la 6. Por lo tanto para trabajar con la primera terminal de texto pulsamos Ctrl+Alt+F1 y para volver a la terminal gráfica Ctrl+Alt+F7 (normalmente, aunque puede ser la 8 u otra según la distribución).

Cada terminal tiene un nombre que es ttyN, donde N es el número de terminal (es decir tty1, tty2, …, tty7).

Además dentro de la terminal gráfica podemos abrir tantas pseudoterminales cómo queramos, cada una en su ventana. El nombre de estas terminales es pts/N.

Ejemplo - Abre desde el entorno gráfico un par de terminales y además accede con el usuario root desde la primera terminal de texto. Ahora desde cualquier terminal de las que tienes abiertas teclea la orden who que muestra los usuarios logueados en este momento. Aparecerá algo pareciendo a:

who

En GNU/Linux podemos elegir el shell o interprete de comandos que queremos utilizar, es decir, el programa encargado de interpretar y ejecutar el comando que tecleamos en la terminal. El más utilizado es el bash (se encuentra en /bin/bash) pero podemos utilizar otros como el sh, ksh, etc.. En el fichero de usuarios del sistema (/etc/passwd) entre otras informaciones de cada usuario se almacena cuál es su shell.

Ayuda

En Linux podemos obtener ayuda de un comando de diferentes maneras. La más completa y utilizada es utilizando el comando man seguido del nombre del comando que queremos. Por ejemplo:

man cp

man cp

Esto nos muestra la página del manual en lo referente al comando indicado. Para salir del manual pulsamos la tecla q (quit = salir).

También podemos obtener ayuda de algunos comandos con help y el nombre del comando (ejemplo help cd) y otros con el nombre del comando con la opción –help (ejemplo cp --help).

Sintaxis

La sintaxis general de cualquier comando es:

comando [ -o | --opción ] [argumentos]

En primer lugar escribimos el nombre del comando y a continuación las opciones que queremos (o ninguna) y después los argumentos que le pasamos. Para escribir cada opción normalmente podemos elegir entre la forma normal (ejemplo --all) o la reducida (ejemplo -a). Fijaos que la forma reducida sólo es una letra y está precedida de un signo menos (-) mientras que la forma normal es una palabra y siempre está precedida de dos signos menos (--).

Respecto a los argumentos, algunos comandos no tienen, otros tienen argumentos opcionales y otros obligatorios. Tendremos que escribir la sintaxis correcta de cada comando para que se ejecuto (recordáis que podemos obtener ayuda con man).

Para trabajar con directorios

ls

Lista el contenido del directorio pasado como parámetro. Si no le pasamos ningún parámetro muestra el contenido del directorio actual. Principales opciones:

Ejemplos:

cd

Cambia el directorio actual por el que le pasamos como parámetro. Ejemplos:

mkdir

Crea un nuevo directorio que le pasamos como parámetro. Ejemplos:

rmdir

Elimina el directorio que le pasamos como parámetro, que tiene que estar vacío. Ejemplos:

pwd

Muestra la ruta absoluta del directorio actual.

Para trabajar con ficheros

cp

Copia el fichero o ficheros especificados como primer parámetro en el directorio especificado como segundo parámetro. Ejemplos:

El comando cp NO copia directorios a menos que utilizamos la opción -R (recursivo). Ejemplo:

cp -R /home/juan/* /media/KINGSTON - Copia todos los ficheros y subdirectorios del directorio /hombre/juan al directorio indicado

mv

Funciona como el comando cp pero en cuenta de hacer una copia mueve los ficheros de ubicación. Después de hacer un cp tendremos el fichero 2 veces: donde estaba y donde lo hemos copiado. Si hacemos un mv se borra de donde estaba y se sitúa donde lo copiamos.

También mueve directorios y su contenido.

Este comando también se utiliza para cambiar el nombre de un fichero o directorio. Ejemplos:

rm

Elimina el fichero o ficheros pasados como parámetro. Ejemplos:

Con la opción -R elimina directorios con todo su contenido:

touch

Crea un nuevo fichero vacío si no existe con el nombre que le pasamos como parámetro o actualiza la fecha de acceso.

find

Busca ficheros en la ruta pasada como primer parámetro que cumplan las condiciones pasadas como segundo parámetro. Principales opciones:

Ejemplos:

file

Indica el tipo del fichero pasado como parámetro.

stat

Muestra las características del fichero que le pasamos como parámetro: nombre, permisos, medida, fecha, propietario, i-nodo, etc.

stat

gzip

Comprime el fichero que le pasamos como parámetro. El fichero comprimido tendrá el mismo nombre y extensión gz.

gunzip

Descomprime el fichero que le pasamos como parámetro (normalmente con extensión gz).

tar

Agrupa o desagrupa los ficheros pasados como parámetro. También tiene una opción para comprimir el fichero agrupado. Puede utilizarse para hacer copias de seguridad. Principales opciones:

tar permite no poner el guion (-) ante las opciones. Ejemplos:

Para trabajar con el contenido de un fichero

cat

Muestra por pantalla el contenido del fichero o ficheros pasados como parámetro.

more

Igual que el anterior pero si el contenido del fichero ocupa más de una pantalla lo muestra pantalla a pantalla, esperando a que el usuario pulse una tecla para mostrar la siguiente pantalla.

less

Igual que more pero permite también volver atrás en el fichero.

tail

Muestra por pantalla las últimas líneas del fichero pasado como parámetro, por defecto 10. La opción -f va mostrando las últimas líneas según va creciendo el fichero (se utiliza para ver como cambian ficheros de log). Ejemplo:

Muestra por pantalla las primeras líneas del fichero pasado como parámetro, por defecto 10.

head

sort

Ordena las líneas contenidas en un fichero de texto. Si no cambiamos las opciones la ordenación la hace por el primer carácter de cada línea.

Opciones:

Ejemplos:

grep

Busca el texto pasado como primer parámetro en el fichero pasado como segundo parámetro y muestra por pantalla las líneas que lo contengan.

Opciones:

Ejemplo:

cut

Muestra sólo los caracteres o campos indicados de cada línea de un fichero de texto. Opciones:

Este comando permite filtrar campos en 2 tipos de ficheros de texto:

Ejemplos:

A todos estos comandos (cat, grep, cut, sort, tail, …) se los denomina filtros porque reciben unos datos de entrada, los filtran o modifican y devuelven una salida que es esos datos modificados.

tr

tr es más que una abreviación de translate. Las principales utilidades de tr son las siguientes, cambiar caracteres, palabras y frases de mayúscula a minúscula o viceversa, buscar palabras y reemplazarlas por otras, borrar caracteres, palabras o frases, eliminar caracteres repetidos de forma innecesaria, cambiar letras o palabras de mayúscula a minúscula.

uniq

Herramienta de línea de comando que se utiliza para informar u omitir cadenas o líneas repetidas.

diff

Compara el contenido de los ficheros pasado como parámetro y muestra por pantalla las líneas que tengan alguna diferencia.

Ejemplo:

wc

Muestra el número de líneas, palabras y letras del fichero pasado como parámetro.

Para gestionar permisos

chmod

Cambia los permisos de los ficheros o directorios pasados por parámetro. Funciona de dos formas:

Permite añadir (+), eliminar (-) o asignar (=) permisos de lectura (r), escritura (w) o ejecución (x) para el propietario (uno , el grupo (g), el resto de usuarios (o) o todos a la vez (a)

Ejemplos:

También permite establecer directamente qué permisos tendrá, en notación octal:

Por lo tanto, lectura y escritura será 4+2=6 (puesto que rw- = 110 = 6), lectura y ejecución 5 (4+1) y todos los permisos será 7 (4+2+1). De este modo para establecer los permisos indicamos un número octal para el usuario, otro para el grupo y otro para el resto de usuarios. Ejemplos:

Este comando permite la opción -R para ejecutarse recursivamente sobre el contenido de un directorio. Ejemplo:

chown

Permite cambiar el propietario y el grupo propietario de los ficheros o directorios pasados por parámetro. Ejemplos:

Igual que el anterior permite el uso de la opción -R para funcionar recursivamente.

chgrp

Permite cambiar el grupo propietario de los ficheros o directorios pasados por parámetro.

Para gestionar usuarios

whoami

Muestra el nombre del usuario en que estoy logueado

groups

Muestra el nombre de los grupos a que pertenece el usuario que le pasamos como parámetro (o el usuario actual si no se le pasa ningún parámetro)

id

Muestra el id y el nombre del usuario, el gid y el nombre de su grupo principal y los gids y nombre de todos los grupos a que pertenece

who

Muestra los usuarios conectados al sistema ahora.

who

passwd

Permite especificar una nueva contraseña para el usuario pasado como parámetro (o para el usuario actual si no pasamos ningún usuario).

También permite bloquear (con el parámetro -l) o desbloquear (con -u) una cuenta de usuario. Entre otras opciones.

useradd

Crea el usuario que le pasamos por parámetro, pero no la activa porque no crea su contraseña (tenemos que hacerlo después con passwd). Principales opciones:

Ejemplos:

useradd -m -d /hombre/alumnos/amiro -g empleados -G alcoi,ventas amiro - Crea el usuario amiro y crea también su carpeta personal que será /hombre/alumnos/amiro. Su grupo principal es empleados y pertenece también a los grupos alcoi y ventas

adduser

También crea la usuario que le pasamos por parámetro pero nos pide también su contraseña y activa el usuario creado. Se crea el usuario, un grupo que se denomina como él y que será su grupo principal, la carpeta personal del usuario (en /hombre/usuario) y su contraseña. Ejemplo:

adduser amiro - Crea el usuario amiro después de preguntar su contraseña y le suyos datos (nombre, dirección, teléfono, etc)

También permite añadir un usuario a un grupo (tienen que existir los dos). Ejemplo:

adduser amiro produccio - Añade el usuario amiro (ya creado) al grupo produccion (también tiene que estar creado ya)

userdel o deluser

Borra el usuario pasado por parámetro. Por defecto no elimina su directorio personal. Para hacerlo tenemos que possar el parámetro -r

usermod

Modifica el usuario pasado por parámetro. Tiene las mismas opciones que useradd.

Ejemplos:

Si queremos que pertenezca además de a el grupo cabes a los grupos alcoi y ventas a los que pertenecía antes grupos tendríamos que hacer:

groupadd o addgroup

Crea el grupo pasado por parámetro

groupdel

Borra el grupo pasado por parámetro.

Para gestionar la red

ping

Envía señales de ping al host indicado

ifconfig

Muestra la configuración de la red y permite cambiarla

dhclient

Vuelve a pedir IP a un servidor DHCP

ifup ethX

Activa la interfaz de red indicada (eth0, eth1, wlan0, etc)

ifdown ethX

Desactiva la interfaz de red indicada

nslookup

Resuelve el nombre de dominio indicado, mostrando qué es su IP

ip

ss

Display socket statistics.

NET-TOOLS VS IPROUTE

Compare

Para gestionar dispositivos de bloque

fsck

Permite comprobar un sistema de archivos (hay versiones para los diferentes FS) Ejemplo:

mkfs

Formatea una partición con sistema de archivos ext, FAT, NTFS, etc.

mount

Monta una partición en una carpeta para poderla utilizar. Hay que indicar el dispositivo que queremos montar y en qué directorio se montará (el directorio debe existir). Ejemplo:

La partición permanecerá montada hasta que la desmontemos con umount o hasta que reiniciemos la máquina. Si queremos que una partición se monte automáticamente cada vez que iniciamos el equipo hay que añadir una línea con sus opciones al fichero /etc/fstab.

Sin parámetros muestra todas las unidades montadas y sus opciones de montaje.

capturademount

df

Muestra un resumen de todas las particiones montadas en el sistema y el espacio usado y libre de cada una:

df

dd

Permite copiar directamente bloques a o desde un dispositivo, como el disco duro. Ejemplo:

Este ejemplo copia 1 bloque (count=1) de 512 bytes (bs=512) del disco duro (/dev/sda) a un fichero llamado copia_mbr. Este primer bloque del disco duro es el MBR por lo que estamos haciendo una copia del MBR en un fichero.

fdisk

Se trata de un programa en modo texto que permite gestionar las particiones del disco pasado como parámetro.

fdisk

Con la opción -l muestra todos los discos del sistema con sus particiones:

fdisk

cfdisk

Igual que el anterior pero con una interface visual (en modo texto) que nos facilita el trabajo.

cfdisk

parted

Se trata de una utilidad similar a fdisk pero que permite gestionar también discos con tipo de partición GPT.

parted

blkid

Enumerará todos los dispositivos disponibles con su Identificador único universal (UUID), el TIPO del sistema de archivos y la ETIQUETA, si está configurada.

Algunas opciones:

lsblk

El comando lsblk nos muestra información de todos los dispositivos de bloque (discos duros, SSD, memorias flash, CD-ROM…).

Algunas opciones:

lsblk

Otros comandos

ps

Muestra información sobre los procesos del sistema.

date

Muestra la fecha y hora actuales del ordenador

clear

Borra la pantalla.

shutdown, poweroff, halt, reboot, logout, exit

Permiten apagar el ordenador (shutdown -h, poweroff y halt), reiniciarlo (shutdown -r, reboot) o cerrar la sesión actual (exit, logout). Ejemplo:

su

Permite cambiar al usuario indicado como parámetro o a root si no indicamos ninguno.

sudo

Permite ejecutar el comando pasado como parámetro con permisos de root. Sólo pueden usarlo los usuarios con permisos de administración (sudoers)

uname

Muestra información del sistema operativo y del ordenador. Opciones:

uname

hostname

Muestra el nombre del equipo y si le pasamos un nuevo nombre cambia el nombre del equipo (pero sólo por esta sesión, para cambiarlo para siempre tenemos que hacerlo en el fichero /etc/hostname)

ln

Crea un nuevo enlace a un fichero. Un enlace es como darle otro nombre al fichero (que ahora tendrá dos nombres diferentes pero existe sólo un fichero). Opciones:

-s lo que crea es un nuevo enlace simbólico, que es como un acceso directo.

Redireccionamiento de comandos

Dispositivos

En GNU/Linux los dispositivos se tratan como ficheros. Cada dispositivo tiene un fichero asociado dentro del directorio /dev. Los más comunes son:

La comunicación del sistema con el exterior se hace, por defecto, mediante 3 dispositivos:

También hay un dispositivo especial que es como un agujero negro donde desaparece todo el que se le envía denominado null (/dev/null)

Operadores de redireccionamiento

El redireccionamento en GNU/GNU/Linux es exactamente igual que en Windows. Cómo hemos comentado la entrada y salida por defecto son el teclado y el monitor respectivamente.

Pero es posible redireccionar la entrada y la salida para que se utilizo otro dispositivo, un fichero o, incluso, otro comando. Los operadores que lo hacen posible son:

Ejemplos:

Shell Scripts

En ocasiones para hacer una tarea se tienen que ejecutar una serie de comandos y a veces esa tarea tiene que ejecutarse día detrás día.

Para automatizar ese tipo de tareas se crearon los scripts, que son un fichero de texto que en cada línea tiene un comando (son iguales que los ficheros de proceso por lotes en Windows). Habitualmente tienen extensión .sh. Cuando ejecutamos un script el que pasa es que se ejecuta un por uno los comandos que contiene.

Para ejecutar un script tenemos dos formas:

Depuración de Shell scripts

También es posible depurar sólo parte del script insertando en él los siguientes comando.

Obra publicada con [Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0](http://creativecommons.org licenses/by-nc-sa/4.0/)