Comandos básicos para Linux

50 comandos básicos en Linux

Una vez instalado e inicializado, un sistema Linux dispone de dos vías fundamentales de interacción: una gráfica (si se instaló y se configuro adecuadamente) y una de texto conocida como consola o terminal. Esta última es desde donde podremos sacarle el máximo rendimiento a cualquier sistema Unix/Linux utilizando la línea de comandos.


Para empezar vamos a definir algunos conceptos básicos.

¿Que es el Prompt?

Pues no es más que la línea desde donde el sistema nos indica que está listo para recibir órdenes. Se puede modificar su apariencia que generalmente se parece a algo como:

[usuario/dominio directorio]$

El SHELL

El programa que se ejecuta en Linux cada vez que un usuario se conecta y que le permite interactuar con el sistema se conoce como shell (bash normalmente). Este es capaz de interpretar una gran cantidad de comandos y sentencias.

Existen muchos tipos de shells orientados a caracteres para Linux.

Algunos ejemplos:

sh: Shell Bourne
Es el más utilizado en la actualidad. Su símbolo del sistema es $ y se monta en casi todos los sistemas UNIX/Linux.
csh: C shell
Ofrece importantes características para los programadores que trabajan en lenguaje C. Su símbolo del sistema es %.
ksh: Korn Shell
Amplía el shell del sistema añadiendo historial de órdenes, edición en línea de órdenes y características ampliadas de programación.
bash: Bourne Again Shell
Es un shell o intérprete de comandos GNU que incorpora la mayoría de distribuciones de Linux. Compatible con el shell sh.

Algo muy útil es la función auto completar durante la escritura. Al teclear uno o varios caracteres se puede pulsar TAB para completar de forma unívoca un comando, nombre de fichero o una variable.

Obtener ayuda en el terminal Linux

Existen múltiples y variadas formas de obtener ayuda en un sistema Linux. Veamos algunas de ellas:

  1. Muchos comandos poseen una opción para mostrar una ayuda breve acerca de su utilización. Esta opción usualmente es -h, –help ó -?.
    chmod --help       // ayuda para el comando chmod.
  2. man manual en línea bastante amplio acerca de comandos, formatos de ficheros de configuración, llamados al sistema, etc.
    man chmod         // manual del comando chmod
  3. info despliega información acerca de comandos, en ocasiones más amplia que la que brinda man.
    info ln           // información sobre el comando ln
  4. whatis realiza una búsqueda en las secciones del man y muestra la descripción abreviada del comando en cada una de las secciones que aparezca.
    whatis chmod      // muestra la descripción del comando chmod.

USUARIOS Y GRUPOS

El usuario con más privilegios en Linux es root. Es el único con derechos suficientes para crear o eliminar a otros usuarios, además de acceder a todo el sistema de ficheros sin ninguna restricción.

Comandos su y sudo

su son las siglas de «Switch User» y sirve para cambiar de usuario sin necesidad de cerrar o cambiar de sesión.

su jose      // cambia al usuario jose
su -         // cambiar a root dentro de su carpeta personal y demás variables de entorno.

sudo permite a los usuarios ejecutar acciones con los privilegios de root de forma segura.

Sintaxis: sudo <comando>

En el archivo que determina quién puede usar el comando sudo es /etc/sudoers.

Por defecto en sistemas como Ubuntu el usuario root esta deshabilitado por defecto.
Habilitar la cuenta «root» y acceder directamente.

sudo passwd root  // nos pedirá introducir una contraseña y confirmarla

Deshabilitar la cuenta de root

sudo passwd -dl root

Siempre que se añada un usuario al sistema se creará un grupo con su mismo nombre, llamado grupo primario.

Todos los usuarios cuando se conectan al sistema poseen un identificador de usuario (uid) y un identificador de grupo (gid). El usuario root siempre tiene el uid=0.

La información asociada a los usuarios en un sistema Linux se guarda en el fichero /etc/passwd y las contraseñas en /etc/shadow. La información de los grupos, sus miembros y passwords están en /etc/group y /etc/gshadow respectivamente.

Comando useradd

Permite añadir nuevos usuarios al sistema, además de establecer la información por defecto de los nuevos usuarios que se añadan.

Sintaxis: useradd [opciones] [login]

sudo useradd -g staff -m -d /home/jose -s /bin/bash jose    // crea el usuario jose dentro del grupo staff y su directorio home. Si no se usa la opción -m no se creara el directorio del usuario y tendremos que crearlo despues
useradd –g users –s /bin/bash jose
Algunas opciones
-g Grupo principal al que pertenece el usuario; en este caso, users.
-m Crear carpeta home si no existe.
-d Establece el directorio de trabajo del usuario, por convenio es /home/nombre_de_usuario
-G Permite especificar una lista de grupos a la que también pertenecerá el usuario aparte del grupo principal. Por ejemplo -G audio,web,staff
-s Shell que utilizara por defecto el usuario. Por ejemplo -s /bin/bash

Comando adduser

Este comando no se suele usar, en algunas distribuciones puede ser un enlace a useradd, o simplemente no existir.

Comando userdel

Este comando elimina definitivamente un usuario del sistema.

Sintaxis: userdel [opciones] [login]

userdel -r jose  // elimina al usuario jose y borra su directorio base. Por defecto el directorio base se mantiene.

Comando passwd

Permite cambiar la contraseña de un usuario. También puede bloquear, desbloquear y deshabilitar una cuenta. Si se invoca sin argumentos afectara al usuario actual.

Sintaxis: passwd [opciones] [login]

passwd jose     // coloca una contraseña para jose

passwd -d jose // deshabilita la cuenta del usuario jose eliminando su password passwd -l jose // bloquea la cuenta del usuario jose poniendo un signo ! delante de su password en el fichero /etc/shadow passwd -u jose // desbloquea la cuenta del usuario jose

Comando usermod

Sirve para modificar algunas propiedades de los usuarios y para bloquear/desbloquear una cuenta.

Sintaxis: usermod [opciones] [login]

usermod -G users,disk jose  // señala como grupos secundarios de jose a users y disk
usermod -e 2017-10-20 jose  // indica que la cuenta de jose expirará el 20 de octubre del 2017
Algunas opciones
-d Modifica el directorio de trabajo o home del usuario.
-e Cambia o establece la fecha de expiración de la cuenta.
-L Bloquea la cuenta del usuario, no permite que ingrese al sistema.
-l Modifica el login o nombre del usuario.
-G Permite especificar una lista de grupos a la que también pertenecerá el usuario aparte del grupo principal. Por ejemplo -G audio,web,staff
-e cambia o establece la fecha de expiración de la cuenta.
-g Modifica el número de grupo principal del usuario (GID).
-s Modifica el Shell que utilizara el usuario por defecto al ingresar en el sistma.
-u cambia el UID del usuario.
-U Desbloquea una cuenta previamente bloqueada con la opción -L.

Comando groupadd

Permite crear nuevos grupos en el sistema.

Sintaxis: groupadd [opciones] [grupo]

groupadd alumnos

Comando groupdel

Permite eliminar definitivamente un grupo del sistema.

Sintaxis: groupdel [opciones] [grupo]

groupdel alumnos

Comando gpasswd

Permite agregar o eliminar un usuario de un grupo. Tanto usuario como grupo deben existir.

Sintaxis: gpasswd [opciones] [usuario] [grupo]

gpasswd -a users jose  // Añade el usuario jose dentro del grupo users
-a Agrega un usuario a un grupo.
-d Elimina un usuario de un grupo

FICHEROS Y DIRECTORIOS

Comando ls

Muestra un listado del contenido de un directorio.

Sintaxis: ls [opciones] [directorio | fichero]

Algunas opciones
-l Muestra la salida en formato largo.
-R Lista recursivamente un directorio.
-r Lista el contenido de un directorio en orden inverso.
-a Lista los ficheros ocultos (sus nombres comienzan con punto).
-lh Muestra el tamaño de los ficheros en forma más legible (16M, 4k, etc.)
-i Muestra el identificador del i-nodo asociado a cada elemento.
ls -la /etc

Comando cd

Se utiliza para cambiar de directorios y moverse por el sistema de archivos.

Sintaxis: cd [directorio]

cd /tmp    // cambia al directorio tmp.
cd         // cambia al directorio home del usuario.
cd ~       // cambia al directorio home del usuario. 
cd ..      // retrocede al directorio anterior. 
cd ../..   // retrocede 2 directorios.

Comando pwd

Indica el camino absoluto del directorio en el cual nos encontramos actualmente.

Comando mkdir

Sirve para crear nuevos directorios.

Sintaxis: mkdir [opciones] [nombre_directorio]

mkdir bin   // Crea un directorio con el nombre bin en el directorio acual
mkdir /bin  // Crea un directorio con nombre bin en la raíz. 
mkdir -p docs/linuxdocs/howtos/pdf  //se crean los directorios intermedios si es necesario.

Comando mv

mv permite mover o renombrar ficheros o directorios.

Algunas opciones
-i Ejecuta el comando de forma interactiva, o sea, pregunta ante de sobrescribir el destino si existiera. (si no se pone se reemplazara el directorio que tenga el mismo nombre)
-u Actualiza (upgrade) el destino con el fuente solo si este es más reciente.
mv -i *.txt /tmp                      // Mueve ficheros terminados en .txt al directorio /tmp.
mv -u program.c src/                  // Actualiza el fichero destino si es menos reciente que el fuente 
mv uno.txt /home/Documentos           // Mueve el fichero uno.txt al directorio Documentos. 
mv uno.txt dos.txt                    // Renombra el fichero uno.txt con el nombre de dos.txt. 
mv uno.txt /home/Documentos/dos.txt   // Mueve uno.txt al directorio Documentos cambiando el nombre por dos.txt.

Comando cp

Sirve para copiar un fichero en otro, o varios ficheros en un directorio.

Sintaxis:

cp [opciones] <fuente> <destino>
cp [opciones] <ficheros> <directorio>

(Crea acceso directo).

-lHace enlaces fuertes a los ficheros fuentes en lugar de copiarlos.

Algunas opciones
-R Copia recursivamente un directorio. (copia todo lo que cuelga del directorio).
-i Utiliza una forma interactiva (pregunta antes de sobrescribir el destino).
cp /documentos/fich.txt .  // copia el fichero fich.txt en el directorio actual
cp -i /usr/bin/*sh /tmp    // copia interactivamente los ficheros terminados en sh en un directorio llamado /tmp

Comando rm

Se utiliza para borrar y/o desenlazar ficheros.

Sintaxis: rm [opciones] [ficheros | directorios]

Algunas opciones
-r Borra recursivamente un directorio (borra todo lo que cuelga del directorio).
-f Borra forzosamente en caso de que no se tenga permiso de escritura en forma directa.
-i Ejecuta el comando de forma interactiva (pregunta antes de ejecutar la acción).
rm prueba      // Borra el fichero prueba.
rm -i bin/*    // Borra todo lo que cuelga de bin pero no el directorio bin y preguntando por la acción que se va a realizar.
rm -rf temp/   // Fuerza el borrado del directorio temp y todo su contenido.

Comando chown

Permite cambiar el propietario y el grupo de un fichero.

Sintaxis:
chown [opciones] <usuario>[:grupo] [directorio | fichero]
chown [opciones] <grupo> [directorio | fichero]

Algunas opciones
-R En los directorios cambia el dueño y/o el grupo recursivamente.
-v Salida más descriptiva.
–dereference Actúa sobre enlaces simbólicos en lugar de hacerlo sobre el destino.
-h, –no-dereference En el caso de enlaces simbólicos, cambia el propietario del destino en lugar del propio enlace.
// Cambia el propietario a jose y el grupo a alumnos para el directorio Fotos.
chown -R jose:alumnos Fotos

Comando chgrp

Se emplea para cambiar el grupo de un fichero o directorio.

Sintaxis: chgrp [opciones] [directorio | fichero]

Algunas opciones
-R En los directorios cambia el dueño y/o el grupo recursivamente.
-v Salida más descriptiva.
-h, –no-dereference Actúa sobre enlaces simbólicos en lugar de hacerlo sobre el destino.
–dereference En el caso de enlaces simbólicos, cambia el propietario del destino en lugar del propio enlace.
chgrp ftp_user /usr/ftp  // Cambia el grupo a ftp_user para el directorio ftp.

Comando ln

Sirve para crear un enlace a un archivo. Un enlace puede ser duro o simbólico.

Sintaxis: ln [opciones] origen [destino]

Algunas opcioness
-s Simbólico, lo que proporciona un enlace blando (equivale a un acceso directo).
// Crea un enlace duro al fichero texto.sxw en el directorio donde esté situado.
ln /home/jose/documentos/texto.sxw 
// Crea un enlace simbolico al fichero texto.sxw en el directorio donde esté situado con el nombre link.sxw.
ln -s /home/jose/documentos/texto.sxw link.sxw 

Diferencia: Un enlace duro no es una copia separada del archivo anterior sino un nombre diferente para exactamente el mismo contenido, mientras que un enlace simbólico es un acceso directo al archivo destino.

Comando diff

Nos permite comparar ficheros de texto línea a línea, y nos indica en caso de que no sean iguales en que líneas cambian.

Sintaxis: diff [opciones] <directorio1 | fichero1> <directorio2 | fichero2>

Algunas opciones
-q Indica sólo si los ficheros son diferentes o no.
-r Compara recursivamente todos los subdirectorios.
-y Muestra en dos columnas.
-w Descarta los espacios en blanco.
diff -rq dir1 dir2     // comparamos recursivamente sólo los archivos diferentes.
diff fichero1 fichero2

Comando du

Se usa para conocer tamaño de un fichero o de un directorio con todo su contenido.

Sintaxis: du [opciones] [ficheros | directorios]

Algunas opciones
-h (human readable view) Imprime las unidades de la forma más representativa (Ej. M para megabytes).
-s Sumariza el tamaño de cada fichero/directorio sin profundizar recursivamente en estos últimos.
-c Produce un total cuando se utilizan varios argumentos.
du -h *  // Tamaño de cada archivo desde la posición actual.
du -hsc /home

Comando cat

Concatena ficheros y los imprime en la salida estándar, normalmente la pantalla. Si no se le pasa ningún argumento muestra el contenido del fichero. Existe también zcat que hace lo mismo pero con ficheros comprimidos.

Sintaxis: cat [opciones] [fichero]

Igual que >, pero la salida de la orden se añade a la salida que indiquemos. (no reemplaza el contenido del fichero destino).

Algunas opciones
> Redirecciona stdout. Vaciar o volcar a un destino no sea CON (monitor), (si el destino contiene algo lo sobreescribe).
2> Redirecciona stderror. Es decir, nos permite volcar una salida de error en un destino que no sea CON (monitor).
< Redirecciona stdin. Es decir, nos permite indicar una entrada para la orden que no sea CON (teclado).
>>
| El indicador de tubería. Nos permite indicar que la entrada de una orden será la salida de otra orden. Es decir, el stdout de la 1ª orden, será el stdin de la 2ª orden.
P? Localiza ficheros que contengan una ‘P’ y otra letra más.
P* Localiza ficheros que empiezan con ‘P’.
cat /etc/passwd           // Lista el contenido del fichero passwd.
cat > fichero             //Crea fichero y permite editarlo (si el fichero existe lo reemplaza).
cat < origen > destino    // Copia origen en destino.
cat fichero1 fichero2 > fichero3   // Concatena el contenido de los ficheros fichero1 y fichero2 en el fichero fichero3.
cat /dev/null > fichero   // Vacía el contenido del fichero sin borrarlo.

Comandos touch

Su uso más frecuente es para crear archivos (si el archivo no existe, lo crea). Además se puede utilizar para cambiar la fecha de acceso y/o modificación a un archivo.
Sintaxis: touch [opciones] [fichero]

Algunas opciones
-a Cambia solamente el tiempo de acceso.
-c No crear archivos que no existían antes.
touch archivo.txt    // Crea el archivo.txt en la ubicación actual.

Comandos more y less

Paginan uno o varios ficheros y los muestran en pantalla. El comando more (salta en páginas) y less (salta en líneas).

More muestra sucesivamente el porcentaje del fichero visto hasta el momento aunque es más restrictivo en cuanto al movimiento dentro del texto, mientras que less no limita este aspecto pues acepta el empleo de todas las teclas de movimiento tradicionales.
Sintaxis:
more [fichero]
less [fichero]

Algunas teclas que podemos usar
q Permite interrumpir el proceso y salir.
/p Realiza búsquedas del patrón p dentro del texto. Para repetir la búsqueda del mismo patrón sólo es necesario escribir /.
[n]b En more permite regresar n páginas (por defecto n es 1). Ejemplo 3b – retrocede 3 páginas.
[n]f En more se adelantan n páginas y en less, n líneas. Ejemplo 2f – avanza 2 páginas.
less /etc/passwd
more /etc/passwd
cat fichero | less  

También existen los comandos zless y zmore que permiten paginar los ficheros comprimidos sin necesidad de descomprimirlos previamente.

Comando sort

ordena las líneas de un fichero mostrándolas por la salida estándar.

Sintaxis: sort [opciones] [fichero]

Ejem: -t: madrid:valencia

Algunas opciones
-k Indica el campo que se va a ordenar. Ejem; -k4,5 Se refiere a los campos 4 y 5.
-t Indica que lo siguiente es un delimitador.
-r Ordena al revés.
-f Trata las mayúsculas y minúsculas por igual.
-g Ordena de forma numérica.
sort -f /etc/passwd 
sort -t: -k6 -g <archivo>   // Ordena el sexto campo de forma numérica. (Los campos se separan por el delimitador ':').

Comando uniq

Elimina las líneas repetidas de un fichero ordenado, imprimiéndolo por la salida estándar o en otro fichero argumento. De no especificarse un fichero toma la entrada estándar.

Sintaxis: uniq [opciones] [fichero] [salida]

Algunas opciones
-c Utiliza como prefijo en cada línea su número de ocurrencias.
-d Solo imprime las líneas duplicadas.
uniq -d lista.txt

Comandos tail y head

Muestran respectivamente el final y el comienzo (10 líneas por defecto) de uno o varios ficheros. De no especificarse al menos un fichero toman la entrada estándar.
Sintaxis:
tail [opciones] [ficheros]
head [opciones] [ficheros]

Imprime las n últimas/primeras líneas en lugar de las diez establecidas por defecto.

Algunas opciones
-f Para el caso de tail se ejecuta de forma sostenida o sea se continúa visualizando el final del fichero hasta que se interrumpa el proceso (Ctrl-c).
-q No coloca los encabezamiento con el nombre de los ficheros cuando se indican varios (quiet).
-<n>
tail -f /var/log/messages
tail -20 /var/log/secure   	 // Imprime las ultimas 20 líneas del fichero secure.
head -10 /var/spool/mail/jose    // Imprime las 10 primeras líneas del fichero jose.
head -2 -q /etc/*.conf

Comando wc

Imprime el número de líneas, palabras y bytes de uno o varios ficheros. Si son varios ficheros hace también un resumen de los totales.
Sintaxis: wc [opciones] [ficheros]

Algunas opciones
-l Sólo cuenta líneas.
-c Sólo cuenta bytes.
-w Sólo cuenta palabras.
wc -l /etc/passwd
wc -w /doc/dicciorario.txt
ls –l | wc –l     // Cuenta las líneas del directorio donde este situado.

BÚSQUEDAS DE FICHEROS Y PATRONES

Comando grep

(Globally Regular Expressions Pattern) Busca patrones en ficheros. Por defecto devuelve todas las líneas que contienen un patrón determinado en uno o varios ficheros.

Sintaxis: grep [opciones] <patrón> [ficheros]

Algunas opciones
-c Devuelve sólo la cantidad de líneas que contienen al patrón.
-H Imprime además de las líneas, el nombre del fichero donde se encontró el patrón.
-i Ignora las diferencias entre mayúsculas y minúsculas.
-l Cuando son múltiples ficheros sólo muestra los nombres de aquellos donde se encontró al patrón y no las líneas correspondientes.
-n Imprime el número de cada línea que contiene al patrón.
-r Busca en un directorio de forma recursiva.
-v Devuelve las líneas que no contienen el patrón.
grep linux /usr/share/doc // busca la palabra linux en el directorio doc.
grep root /etc/passwd 
grep -n error /var/log/messages 
grep -i pepe /etc/passwd 
grep -c root /etc/group 
ls –lia | grep “carta roja” 
grep palabra -r .      // busca la palabra de forma recursiva desde el directorio donde esté situado hasta recorrer todo el sistema. 
grep ^hola texto.txt   // Busca en el fichero texto.txt el patrón que empiece por hola. 
grep hola$ texto.txt   // Busca en el fichero texto.txt el patrón que termine con hola.

Comando find

Este comando es uno de los más potentes en un sistema Linux. Permite buscar de forma recursiva en un directorio a todos los ficheros que cumplan ciertas condiciones. Las condiciones pueden estar relacionadas con el nombre de los ficheros, el tamaño, los permisos, el tipo, las fechas de acceso y modificación, etc.

Sintaxis: find [camino] [opciones]

Algunas opciones
-name <expresión> Permite especificar patrones para los nombres de los ficheros a buscar.
-iname <expresión> Permite especificar patrones para los nombres de los ficheros a buscar sin tener en cuenta mayúsculas y minúsculas.
-type <tipo> Tipo de fichero a buscar. Este puede ser d para directorios, f para ficheros regulares, l para enlaces simbólicos, b para dispositivos de bloque, c para dispositivos de carácter, p para tuberías y s para sockets.
-size +/-<n> Tamaño máximo y/o mínimo de los ficheros a buscar. Por defecto el tamaño se expresa en bloques de 512 bytes, pero si se precede este por un carácter c se referirá a bytes, k a kilobytes, w a palabras de dos bytes y b a bloques.
-exec <comando> ; Permite definir un comando a ejecutarse para cada resultado de la búsqueda. La cadena {} se sustituye por el nombre de los ficheros encontrados. El caracter ; permite indicar la finalización del comando. (Tanto {} como ; tienen que ir entre comillas o entre contrabarras para evitar que sea sustituido por el shell).
find /etc -name '*.conf'                           // Busca en /etc todos los ficheros con extensión .conf
find / -size +10240k -size -20480k                 // Busca los ficheros cuyo tamaño esté entre 10M y 20M.
find / -name core -exec rm -i "{}"  ";"            // Busca todos los ficheros que se llamen core y los borra de forma interactiva.
find /home -type f -exec chmod -R 644 {} \;        // Cambia los permisos de forma recursiva a todos los ficheros dentro del directorio home.
find . -type d -exec chmod -R 755 {} \;            // Cambia los permisos de forma recursiva a todos los directorios desde la ubicación actual.
find . -name “*.txt” -type f -delete               // Borrar repulsivamente todos los archivos con extensión .txt
find Documents -name .DS_Store -exec rm -rf {} \;  // Otra forma de borrar repulsivamente todos los archivos .DS_Store

COMPRIMIR Y AGRUPAR FICHEROS

Comandos gzip y gunzip

Permiten comprimir y descomprimir respectivamente uno o varios ficheros.

Sintaxis:
gzip [opciones] <ficheros/directorio>
gunzip [opciones] <ficheros/directorio>

Algunas opciones
-r Dado un directorio comprime todos los ficheros presentes en él recursivamente.
-1 a -9 Especifica el grado de la compresión (-1 menor y más rápida -9 mayor y más lenta).
-S Permite especificar un sufijo o extensión para el fichero resultado (por defecto es gz).
gzip -9 *           // Comprime todos los ficheros del directorio actual (su extensión cambia a .gz)
gunzip big-file.gz  // Descomprime el fichero big-file.gz

Comando tar

Este comando por defecto no comprime absolutamente nada, se limita a agrupar varios ficheros en uno solo, sin comprimirlos.
Sintaxis: tar [opciones]<fuentes>

Algunas opciones
-z Compacta o descompacta el fichero resultante una vez agrupado o desagrupado con gzip y gunzip respectivamente.(Ojo, esta opción la usaremos siempre).
-c Permite crear, agrupar ficheros en uno solo.
-x Permite extraer, desagrupar ficheros.
-v Activa el modo debug, donde se ven todos los mensajes
-f Agrupa o desagrupa en o hacia un fichero y no utilizando la salida o entrada estándar como es por defecto.
-l Lista el contenido de un fichero agrupado.
-M Agrupa en volúmenes.
// Crea un fichero grande donde estarán agrupados todos los ficheros del directorio actual y que además lo comprime.
tar cvzf grande *
tar xvzf grande *  // Desagrupa en el directorio actual el fichero grande y además lo descomprime. 
// Agrupa en el fichero archivo.tar los ficheros passwd, shadow y groups. 
tar cf archivo.tar /etc/passwd /etc/shadow /etc/groups 
tar tf archivo.tar // Muestra el contenido de archivo.tar 
tar xf archivo.tar // Desagrupa el fichero archivo.tar 
tar -tf archivo.tar // Lista el contenido del archivo.tar

Comandos zip y unzip

Comprime y descomprime un fichero o directorio.
Sintaxis:
zip [archivo.zip] [ficheros_a_comprimir]
unzip [archivo.zip]

zip -r ejemplo.zip ejemplo  // Comprime todo el contenido de ejemplo de forma recursiva dentro del archivo ejemplo.zip
unzip -v archivo.zip        // Muestra el contenido de archivo.zip

REDES

Comando ping

Permite enviar paquetes ICMP (Internet Control Message Protocol) a otra computadora, con el objetivo de saber si esta es alcanzable a través de la red.
Este comando se ejecuta por defecto sostenidamente por lo que para interrumpirlo se debe pulsar Ctrl-c.

Sintaxis: ping [opciones] <máquina>

Algunas opciones
-c <n> Envía n paquetes exactamente.
-i <n> Espera n segundos entre los envíos.
-s <n> Envía paquetes de n bytes. Se le suman los 8 bytes del header del paquete ICMP.
-q Sólo despliega el sumario final.
ping www.google.es  // Envía un ping contra el dominio de google.es
ping 192.168.1.25   // Envía un ping contra una dirección IP.

Comando ifconfig

Permite configurar por parte del usuario root las interfaces de red. Los usuarios distintos de root lo pueden invocar también con fines informativos.
Sin argumentos ifconfig despliega información acerca de la configuración y funcionamiento actuales de las interfaces de red activas.

Sintaxis: ifconfig [opciones]

Algunas opciones
-s Muestra un resumen de los interfaces.
ifconfig eth0	     // Muestra información solo sobre el interface eth0.
ifconfig eth0 up     // Levanta la tarjeta de red. 
ifconfig eth0 down   // Tira la tarjeta de red.

ifconfig puede usarse también para configurar los interfaces de red, aunque suele ser mejor configurarlos editando el fichero /etc/network/interfaces.

ifconfig eth0 hw ether 00:30:CA:52:0A:F0  // Cambia la dirección MAC del interface.
ifconfig eth0 address 192.168.100.2       // Cambia la ip. 
ifconfig wlan0 netmask 255.255.255.0      // Cambia la mascara de red.

Comando hostname

Envía paquetes ICMP (Internet Control Message Protocol) a otro host, con el objetivo de saber si esta es alcanzable a través de la red.
Este comando se ejecuta por defecto sostenidamente por lo que para interrumpirlo se debe hacer Ctrl-c

Sintaxis: hostname [nombre_equipo]

hostname             // Imprime el nombre del equipo
hostname masqueweb   // Nombra el equipo como masqueweb.

El nombre del equipo se almacena en el fichero /etc/host.conf

Comando traceroute

Traza la ruta que siguen los paquetes desde el origen hasta el destino, indicando los saltos que existen entre los dos puntos. Tambien existe el comando tracepath, para ejecutar este comando no son necesarios privilegios de root.

Sintaxis: traceroute [opciones] hostname/ip

traceroute www.miweb.es  

Comando who

Muestra los usuarios conectados al sistema ya sea local o remotamente.

Sintaxis: who [opciones] [fichero] [am I]

desconocido). Si lleva menos de un minuto pone un punto y si es más de 24 horas la cadena ‘old’.

-i Imprime además para cada usuario conectado que tiempo lleva sin interactuar con el sistema (idle time).

Algunas opciones
-H Imprime un encabezamiento para las columnas.
-w Indica si está activada o no la posibilidad de recibir mensajes por parte de cada usuario conectado (+ indica que si,  indica que no y ?
-q Sólo muestra los logins de los usuarios conectados y la cantidad total de ellos.
who
who am I 

Comando netstat

Muestra información sobre las conexiones de red, las tablas de enrutamiento, las estadísticas de los interfaces de red, etc.

Sintaxis: netstat [opciones]

Algunas opciones
-i Imprime un encabezado para las columnas.
-r Mostrar la tabla de enrutamiento (similar al comando route).
-a Para visualizar todas las conexiones activas en el sistema, tanto TCP como UDP.
-l Muetra los zócalos a la escucha de servidores.
-t Mostrar sólo las conexiones TCP activas.
-u Mostrar sólo las conexiones UDP activas.
// Aplicaciones instaladas y "escuchando" en la red usando un puerto tcp.
netstat -l -t  
// Aplicaciones instaladas y "escuchando" en la red usando un puerto udp.
netstat -l -u 
// Muestra todas las conexiones activas de forma páginada. (pulsar q para terminar)
netstat -a | less  

Comando wget

Permite descargar ficheros de la red (incluida Internet) de forma no interactiva, mediante los protocolos https, ftp, ssh, etc.

Sintaxis: wget [opciones] [url]

Algunas opciones
-r Descarga recursivamente, buscando en los subdirectorios del sitio.
-c Continua una descarga que se interrumpió anteriormente.
-o Registra mensajes en un fichero (logs).
–tries=n Establece el número de reintentos.
–limit-rate=n Establece una velocidad máxima de descargas en KB.
-m, –mirror Hace una copia completa de el directorio o url de el sitio que indiquemos.
-P Sirve para indicar el sitio donde descargar los archivos.
wget --trues=10 https://www.miweb.es/images/cartel.jpg
// Descargar página completa en el directorio Descarga y crear un registro en el archivo log.txt
wget -P/descarga https://www.miweb.com -o log.txt 
// Nos autentica en el servidor ftp y descarga el documento.
wget -c --user=usuario --password=contraseña ftp://servidor.es/documento.odt  
// Crear un backup de nuestra pagina
wget --mirror /descarga https://www.miweb.com

Comando nslookup

Permite saber la ip de un host a través de su nombre y viceversa, realizando consultas al servidor de nombres DNS.

Sintaxis: nslookup [url/ip]

nslookup www.miweb.es  

Comando ssh

Permite acceder a otra maquina a través de la red, ejecutar comandos y mover ficheros entre dos máquinas. Este comando ofrece conexión cifrada entre dos sistemas proporcionando una conexión segura.

Sintaxis: ssh [opciones] <usuarior@maquinaremota>

Algunas opciones
-p Permite especificar el puerto ssh
-l Permite especificar el nombre de usuario (login name).
// Si la conexión es correcta pedirá usuario y contraseña.
ssh -p 22 jose@midominio.es 
// Conectarse al servidor usando el puerto 22 
ssh -p 22 jose@servidor.es 
// Conexión del usuario jose a la maquina remota usando el puerto 2220 y la dirección ip 
ssh -l jose -p 2220 192.168.20.31

Comando scp

Permite copiar ficheros entre dos máquinas. Utiliza ssh para la transmisión de datos.

Sintaxis: scp [opciones] <usuarior@maquinaremota>

Algunas opciones
-r Permite copiar directorios recursivamente.
-l Límite del ancho de banda expresado en Kbits/s.
-P Permite especificar el puerto scp
// Copiar todo el contenido del directorio local a un directorio remoto.
scp -r /origen/* usuario@dominio:/ruta/destino/
// Copiar el archivo.txt de una maquina remota a nuestra maquina local.
scp usuario@maquinaremota:/ruta/archivo.txt /ruta/destino
// Copiar multiples archivos en la maquina remota limitando el ancho de banda a 50Kbit/s.
scp -l50 archivo1 archivo2 archivo3 usuario@192.168.20.31:/destino/
// Copiar todos los archivos con extensión .php del directorio local a un directorio remoto utilizando el puerto 2222.
scp -r -P 2222 /origen/*.php usuario@dominio:/ruta/destino/

Comando ftp

Permite la conexión con un servidor FTP.

Sintaxis:
ftp <servidor|ip> [puerto]
ftp <usuario@servidor|ip> [puerto]

ftp 192.168.20.7
ftp usuario@maquinaremota 2100  // Conexión ftp usando el puerto 2100

DESCONEXIÓN DEL SISTEMA

Comando exit

Permite terminar el shell actual. Si se tiene un único shell es equivalente a desconectarse del sistema, pero si se está en un subshell sólo se terminará este, retornando al shell anterior.

Sintaxis: exit

Comando logout

Permite desconectarse del sistema a partir de un login shell.
Sintaxis: logout

Comandos halt, reboot y poweroff

Permiten suspender, reiniciar o apagar el sistema respectivamente.
Sintaxis:

halt [opciones]
reboot [opciones]
poweroff [opciones]

Esto es por defecto cuando el halt se llama como poweroff.

Algunas opciones
-h Poner todos los discos duros en modo de espera antes de que el sistema se detenga o apague.
-i Apagar todas las interfaces de red.
-p Cuando detenga el sistema, lo apaga también.

Comando shutdown

Nos permite “echar abajo” el sistema.

Sintaxis: shutdown [opciones]

-hCuando el sistema se apaga, apaga el ordenador (o lo intenta).-rCuando el sistema se apaga, intenta reiniciarlo.

Algunas opciones
-c Cancela un shutdown que esta en proceso de ejecución.
-f Reinicia más rapido, ya que omite la comprobación del sistema de archivos (fsck) al reiniciar.
shutdown -h now   // Apaga el sistema inmediatamente, ahora.
shutdown -h +4    // Apaga el sistema en 4 minutos. shutdown -h 20:00 // Apaga el sistema a la hora indicada.

OTROS

Comando clear

Limpia el terminal, y coloca el prompt al principio.
Sintaxis: clear

Comando history

Nos permite controlar el historial de comandos que se van almacenando en el shell.

history 10               // Muestra los ultimos 10 comandos ejecutados.
history > historial.txt  // Copia el historial en el fichero historial.txt.
history | grep chmod     // Muestra las líneas que coinciden con el comando chmod.
!35                      // Ejecutar un comando específico de nuestro historial.
history -c               // Limpiar el historial.

Comando uname

Muestra información sobre el sistema, como el nombre del kernel, su versión, el nombre de la maquina, etc.
Sintaxis: uname [opciones]

Algunas opciones
-a Toda la información de nuestro sistema.
-r Versión del Kernel.
-o Nombre del sistema operativo.
-m Muestra la arquitectura de nuestro procesador.
-v fecha de publicacion del Kernel.
uname -a

Comando top

Muestra los procesos que se están ejecutando en nuestra maquina en tiempo real, y cuantos recursos están ocupando.
Sintaxis: top

top - 17:36:26 up  9:43,  1 user,  load average: 0,38, 0,07, 0,02
Tareas: 203 total,   5 ejecutar,  198 hibernar,    0 detener,    0 zombie
%Cpu(s):  3,8 usuario,  3,8 sist,  0,0 adecuado, 86,4 inact,  6,0 en espera,  0,0 hardw int,  0,0 softw int,  0,0 robar tiempo
KiB Mem:  1024992 total,     85368 free,   496992 used,   441632 buff/cache
KiB Swap: 1998844 total,   1829804 free,   169040 used.   326700 avail Mem

 PID  USUARIO   PR  NI    VIRT     RES     SHR S  %CPU %MEM     HORA+  ORDEN                                                     
 913  jose      20   0  332204   69580   24720 S  12,7  6,9    0:56.36 Xorg                                                   
1620  jose      20   0  902092  142228   33900 R   2,6  13,9  14:19.24 compiz                                                    
3072  jose      20   0 1138196  282700  110108 S   2,0  1,7    2:14.22 chrome                                                    
   7  root      20   0       0       0       0 R   0,3  0,0    0:39.46 gnome-screensho

Lectura de las 5 primeras líneas.

  1. Tiempo de actividad y carga media del sistema
  2. Tareas
  3. Tiempo de actividad y carga media del sistema
  4. Memoria física
  5. Memoria virtual

Lectura de los procesos.

  • PID: identificador único de proceso.
  • USUARIO: usuario propietario del proceso.
  • PR: prioridad del proceso. Si muestra RT, se está ejecutando en tiempo real.
  • NI: asigna la prioridad. Valores desde 19 hasta -20. Cuanto más bajo mayor prioridad.
  • VIRT: cantidad de memoria virtual utilizada por el proceso.
  • RES: cantidad de memoria RAM física que utiliza el proceso.
  • SHR: memoria compartida.
  • S: estado del proceso.
  • %CPU: porcentaje de CPU utilizado.
  • %MEM: porcentaje de memoria física utilizada por el proceso.
  • TIME+ (HORA+): tiempo total de CPU usado por el proceso desde su inicio.
  • COMMAND: comando utilizado para iniciar el proceso.

 

Hasta aquí este manual sobre algunos de los comandos más útiles para usar un terminal de Linux/Unix.

Comentarios y opiniones

Puede que tarde en responder, se paciente.

*
*