Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

65
Entrenamiento en Linux Clase #3 Clase #3 Por: Javier García Salgado Profundización en Bash

Transcript of Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Page 1: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Entrenamiento en Linux

Clase #3Clase #3

Por: Javier García Salgado

Profundización en Bash

Page 2: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Clase #3Clase #3 Profundización en Bash

Sumario

Algunos comandos básicos

Flujos de datos

Tuberías

Entornos de trabajo en Bash

Page 3: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicos

Hoy mencionaremos y describiremos brevemente la utilidad de un grupo de comandos básicos para interactuar con un sistema Linux.

Algunos de ellos como man, ls, chmod y umask ya han sido mencionados y otros se mencionarán más adelante en dependencia de los temas que se traten.

Para su mejor comprensión los clasificaremos en varias categorías:

• Comandos para manipular ficheros y directorios.

• Comandos para paginar, visualizar y editar ficheros.

• Comandos para hacer búsquedas de ficheros y patrones.

• Comandos para filtrar ficheros.

• Comandos para compactar y agrupar ficheros.

• Comandos para la comunicación entre usuarios.

• Comandos para desconectarse del sistema.

• Comandos para administrar usuarios y grupos.

• Comandos variados.

Page 4: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para manipular ficheros y directorios

Comando ls

Algunas opciones:

-l : muestra la salida en formato largo.

-R : lista recursivamente un directorio.

-a : lista además los ficheros ocultos (sus nombres comienzan con punto).

-h : muestra el tamaño de los ficheros en forma más legible (Ej: 16M, 4k, etc.)

-i : muestra el identificador del i-nodo asociado a cada elemento.

Ejemplos:

$ ls -hl /etc

$ ls -R /usr

$ ls -al

$ ls -ali ..

El comando ls ya mencionado anteriormente permite listar el contenido de un directorio.

Sintaxis: ls [opciones] [directorio|fichero]

Page 5: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para manipular ficheros y directorios

Comando cd

Ejemplos:

$ cd /tmp

$ cd # cambia hacia el directorio base del usuario actual

$ cd - # cambia hacia el directorio anterior

$ cd .. # cambia hacia el directorio padre

$ cd ~ # cambia hacia el directorio base del usuario actual. El # caracter ~ bash lo interpreta como el directorio base # de un usuario.

$ cd ~pepe # cambia hacia el directorio base del usuario pepe

El comando cd se utiliza para cambiar el directorio actual.

Sintaxis: cd [directorio]

Page 6: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para manipular ficheros y directorios

El comando pwd indica el camino absoluto del directorio en el cual nos encontramos actualmente.

Ejemplo:

$ pwd /home/pepe/backup/pruebas

Comando mkdir

Ejemplos:

$ mkdir bin

$ mkdir -p docs/linuxdocs/howtos/pdf # Se crean los directorios # intermedios si es necesario.

Comando pwd

El comando mkdir se utiliza para crear directorios.

Page 7: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para manipular ficheros y directorios

El comando mv mueve un fichero hacia otro, o varios ficheros hacia un directorio. Este permite a su vez renombrar ficheros o directorios.

Sintaxis:

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

Ejemplo:

$ mv mail.cf mail.cf.old # renombra un fichero

$ mv -i *.txt /tmp # mueve ficheros terminados en .txt al # directorio /tmp

Comando mv

Algunas opciones:

-i : ejecuta el comando de forma interactiva, o sea, pregunta ante de sobrescribir el destino si existiera.

-u : actualiza (upgrade) el destino con el fuente solo si este es más reciente

Page 8: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para manipular ficheros y directorios

Comando cp

El comando cp permite copiar un fichero en otro, o varios ficheros en un directorio.

Sintaxis:

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

Algunas opciones:

-d : preserva los enlaces simbólicos en lugar de copiar los ficheros a los que estos apuntan.

-L : no preserva los enlaces simbólicos, o sea copia los ficheros a los que estos apuntan.

-R : copia recursivamente un directorio.

-i : utiliza una forma interactiva (pregunta antes de sobrescribir el destino).

-l : hace enlaces fuertes a los ficheros fuentes en lugar de copiarlosContinua...

Page 9: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para manipular ficheros y directorios

Ejemplos:

$ cp /etc/passwd . # copia un fichero en el directorio actual.$ cp -i /usr/bin/*sh /tmp # copia interactivamente los ficheros

# terminados en sh. $ cp -l /bin/* bin/ # hace enlaces fuertes a todos los ficheros

# en un directorio.

Page 10: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando rm

El comando rm se utiliza para borrar (desenlazar) ficheros.

Sintaxis: rm [opciones] <ficheros | directorios>

Algunas opciones:

-r : borra recursivamente un directorio.

-f : borra forzosamente en caso de que no se tenga permiso de escritura en forma directa.

-i : ejecuta el comando de forma interactiva

Comandos para manipular ficheros y directorios

Ejemplos:

$ rm prueba $ rm -i bin/* $ rm -rf temp/

Page 11: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para manipular ficheros y directorios

Comando chown

Se utiliza para cambiar el dueño y el grupo de un fichero. Existe también el comando chgrp que se emplea de forma similar pero para cambiar el grupo solamente. El dueño de un fichero solo lo puede cambiar el usuario root mientras que el grupo además de root, lo puede cambiar el propio dueño, siempre que pertenezca al nuevo grupo.

Sintaxis:

chown [opciones] <dueño>[.grupo] <ficheros> chown [opciones] .<grupo> <ficheros>

Opción: -R en los directorios cambia el dueño y/o el grupo recursivamente.

Ejemplos:

# chown pepe.pepe tesis/

# chown -R root /tmp/oculto

# chgrp ftp /usr/ftp

Page 12: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para paginar, visualizar y editar ficheros

Comando cat

El comando cat concatena (catenate) ficheros y los imprime en la salida estándar. Si no se le pasa ningún argumento lee de la entrada estándar. Existe también zcat que hace lo mismo pero con ficheros compactados.

Ejemplo:

# cat /etc/passwd /etc/shadow

Page 13: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para paginar, visualizar y editar ficheros

Editor “pico”

El editor pico es un editor simple pero poderoso.

Sintaxis: pico [opciones] [fichero]

Algunas opciones:

-w : deshabilita el picado automático de las líneas.

-m : habilita la funcionalidad del mouse en entornos gráficos, para posicionarse en el texto.

+<n> : se establece el comienzo de la edición en la línea n-ésima.

Algunas opciones durante la edición:

Ctrl k : borra y copia la línea actual en el clipboard.

Ctrl u : inserta el contenido del clipboard en el texto.

Ctrl o : salva el texto.

Ctrl x : sale del editor. Pregunta si se desea salvar primero en caso de haberse modificado el texto

Page 14: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para paginar, visualizar y editar ficheros

Editor “vi”

El editor vi es el editor estándar de Unix.

Es orientado a comandos.

Para algunos usuarios, “vi” resulta incómodo pues para utilizar todas sus potencialidades es necesario conocer muchas combinaciones de teclas, pero si se llega a dominar resulta muy funcional.

Básicamente “vi” posee dos modos de interacción: el de inserción (edición) y el de comandos.

Para pasar al modo comando se pulsa Esc y para pasar al de inserción se pulsa i.

Continua...

Page 15: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para paginar, visualizar y editar ficheros

Algunos comandos útiles en “vi”:

dd - borra la línea actual.

D - borra desde la posición actual hasta el final de la línea.

u - deshace el último comando.

:q! - sale sin salvar.

:w - salva.

:wq - salva y sale.

:x - salva y sale.

<n><c> - ejecuta el comando c n veces.

Page 16: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para paginar, visualizar y editar ficheros

Comandos more y less

Los comandos more y less paginan los ficheros y los muestran en la terminal.

Se diferencian en las facilidades que brindan.

Por ejemplo more 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.

Cuando se alcanza el final del último fichero a paginar, more termina automáticamente, no así less.

También more muestra sucesivamente el porcentaje del fichero visto hasta el momento.

Tanto less como more proveen una serie de comandos para moverse con facilidad dentro del texto paginado.

Continua...

Page 17: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para paginar, visualizar y editar ficheros

Ejemplos:

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).

[n]f - en more se adelantan n páginas y en less, n líneas.

Page 18: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para hacer búsquedas de ficheros y patrones

Comando grep

El comando grep 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.

-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.

-v : devuelve las líneas que no contienen el patrón.

-r : busca en un directorio de forma recursiva.

-n : imprime el número de cada línea que contiene al patrón.

Continua...

Page 19: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Ejemplos:

# grep -n error /var/log/messages $ grep -c root /etc/group $ grep -l -r -i img /var/www/html/

Algunos comandos básicoscontinuación...Comandos para hacer búsquedas de ficheros y patrones

Page 20: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando find

Es uno de los más poderosos. Permite buscar de forma recursiva en un directorio 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]

Comandos para hacer búsquedas de ficheros y patrones

Algunas opciones:

-name <expresión> : permite especificar patrones para los nombres de los ficheros a buscar.

-type <tipo> : permite indicar el tipo de fichero a buscar. Puede ser d para directorios, f para ficheros regulares, l para enlaces simbólicos, etc.

-size +/-<n> : permite indicar el tamaño máximo y/o mínimo de los ficheros a buscar.

Continua...

Page 21: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para hacer búsquedas de ficheros y patrones

-nouser/-nogroup : permite referirse a aquellos ficheros o directorios que no posean dueño o grupo asociado.

-inum <n> : permite referirse a los ficheros a través de su número de i-nodo.

-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

Comando find (continuación...)

Continua...

Page 22: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Ejemplos:

$ 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 / -nogroup -nouser # Busca en toda la jerarquía de # ficheros aquellos que no posean # ni dueño ni grupo asociado

Algunos comandos básicoscontinuación...Comandos para hacer búsquedas de ficheros y patrones

Comando find (continuación...)

Page 23: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para hacer búsquedas de ficheros y patrones

Comando locate

El comando locate busca en una base de datos, actualizada periódicamente, todos los paths en la jerarquía de ficheros que contengan una cadena determinada.

Para crear esta base de datos o actualizarla se debe invocar por root el comando updatedb (o locate -u).

En las distribuciones actuales esta tarea se hace de forma automática

Ejemplo: $ locate passwd

Page 24: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para filtrar ficheros

Comando file

El comando file determina con cierto grado de precisión el tipo de un fichero que se le pasa como argumento.

Ejemplos:

$ file /etc/passwd /etc/passwd: ASCII text

$ file /usr/sbin/adduser /usr/sbin/adduser: symbolic link to useradd

$ file /usr/sbin/useradd /usr/sbin/useradd: ELF 32-bit LSB executable, Intel 80386, versión 1, dynamically linked (uses shared libs), stripped

$ file /etc /etc: directory

Page 25: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para filtrar ficheros

Comando sort

El comando sort ordena las líneas de un fichero mostrándolas por la salida estándar. De no especificarse un fichero toma la entrada estándar.

Sintaxis: sort [opciones] [fichero]

Algunas opciones:

-r : ordena al revés.

-f : trata las mayúsculas y minúsculas por igual

Ejemplo: $ sort -f /etc/passwd

Page 26: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para filtrar ficheros

Comando uniq

El comando uniq elimina las líneas repetidas de un fichero ordenado, imprimiéndolo por la salida estándar o en otro fichero argumento.

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

Algunas opciones:

-c : prefija a cada línea su número de ocurrencias.

-d : solo imprime las líneas duplicadas

Ejemplo: $ uniq -d lista.txt

Page 27: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para filtrar ficheros

Comandos tail y head

Los comandos tail y head muestran respectivamente el final y el comienzo de un fichero.

Sintaxis:

tail [opciones] [ficheros] head [opciones] [ficheros]

Algunas opciones:

-f : para el caso de tail se ejecuta de forma sostenida 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> : imprime las n últimas (primeras) líneas en lugar de las diez establecidas por defecto.

Ejemplos:

# tail -f /var/log/messages # head -50 /var/spool/mail/pepe

# tail -20 /var/log/secure # head -2 -q /etc/*.conf

Page 28: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para filtrar ficheros

Comando wc

El 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. De no especificarse un fichero toma la entrada estándar.

Sintaxis: wc [opciones] [ficheros]

Algunas opciones:

-l : sólo cuenta líneas.

-c : sólo cuenta bytes.

-w : sólo cuenta palabras.

Ejemplos:

$ wc -l /etc/passwd

$ wc -w /doc/dicciorario.txt

Page 29: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para filtrar ficheros

Comando stat

El comando stat muestra las características de un fichero. Por ejemplo: su nombre, permisos, tamaño en bytes, número del i-nodo que lo representa, las fechas de modificación y acceso, el tipo, el dueño, el grupo, etc.

Ejemplos:

$ stat /etc/shadowFile: "/etc/shadow" Size: 981 Blocks: 8 Regular File Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Device: 306 Inode: 129125 Links: 1 Access: Fri Oct 5 11:49:33 2001 Modify: Wed Oct 3 09:31:25 2001 Change: Wed Oct 3 09:31:25 2001

Continua...

Page 30: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para filtrar ficheros

$ stat /tmp/ File: "/tmp/" Size: 1024 Filetype: Directory Mode: (1777/drwxrwxrwt) Uid: ( 0/ root) Gid: ( 0/ root) Device: 3,9 Inode: 4018 Links: 5 Access: Fri Nov 17 08:17:48 2000 Modify: Fri Nov 17 08:17:56 2000 Change: Fri Nov 17 08:17:56 2000

Comando stat (continuación...)

Page 31: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para compactar y agrupar ficheros

Comandos gzip y gunzip

Los comandos gzip y gunzip permiten compactar y descompactar respectivamente uno o varios ficheros.

Sintaxis:

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

Algunas opciones:

-r : comprime los ficheros presentes en un directorio recursivamente.

-1 a -9 : especifica el grado de la compresión (-1 menor y más rápida).

-S <sufijo> : permite especificar un sufijo o extensión para el fichero resultado (por defecto es gz).

Continua...

Page 32: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para compactar y agrupar ficheros

Ejemplos:

$ gzip -9 big-file $ gunzip big-file.gz $ gzip -S .zip -r doc/ $ gunzip -S .zip -r doc/

Nota:

Todo lo compactado con gzip se puede descompactar con el Winzip de los sistemas Windows.

También existen los pares de comandos zip y unzip (compatibles en ambos sentidos con Winzip), y compress y uncompress

Page 33: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando tar

Comandos para compactar y agrupar ficheros

El comando tar es una herramienta para agrupar varios ficheros aislados o el contenido de un directorio en otro fichero o dispositivo especial.

Sintaxis: tar [opciones] <fuentes>

Algunas opciones:

-c : permite crear (tarear).

-x : permite extraer (destarear).

-v : activa el modo explicativo.

-f <fichero> : agrupa o desagrupa en o hacia un fichero y no utilizando la salida o entrada estándar como es por defecto.

-z : compacta o descompacta el fichero resultante una vez agrupado o desagrupado con gzip y gunzip respectivamente.

-t : lista el contenido de un fichero resultado de un agrupamiento.

-M : agrupa en volúmenes. Continua...

Page 34: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando tar (continuación...)

Comandos para compactar y agrupar ficheros

El comando tar conserva la estructura jerárquica original de lo agrupado excluyendo el caracter / que representa a la raíz.

Algunas opciones se pueden emplear sin el caracter -, siempre y cuando no haya ambigüedades entre ellas o con los argumentos.

Ejemplos:

$ tar cvfz /tmp/etc.tgz /etc

$ tar xvfz /tmp/etc.tgz

# tar cf uconf.tar passwd shadow groups

# tar xf uconf.tar

$ tar cM -f /dev/fd0 /tmp/etc.tgz

$ tar xM -f /dev/fd0

Page 35: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando exit

Comandos para desconectarse del sistema

El 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.

Comando logout

El comando logout permite desconectarse del sistema a partir de un login shell (primer shell que se ejecuta al establecer la conexión).

La secuencia de caracteres Ctrl-d permite terminar el shell actual. Si es un login shell equivaldrá a hacer logout y si no, a hacer exit.

Page 36: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando useradd

Comandos para administrar usuarios y grupos

El comando useradd permite añadir nuevos usuarios al sistema. Se encuentra enlazado simbólicamente por el nombre adduser. Ambos nombres se pueden emplear indistintamente.

Sintaxis: useradd [opciones] [login]

Ejemplos:

# adduser pepe # crea el usuario pepe con las propiedades por # defecto.

Page 37: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos para administrar usuarios y grupos

# useradd -D # muestra las propiedades por defecto de los #nuevos usuarios que se añadan.

GROUP=100 # grupo primario (no se emplea). HOME=/home # directorio base de todos los usuarios. INACTIVE=-1 # número de días entre que el password expire y

# la cuenta se deshabilite. EXPIRE= # fecha (YYYY-MM-DD) en que la cuenta expira. SHELL=/bin/bash # shell que empleará el usuario para interactuar

# con el sistema. SKEL=/etc/skel # directorio cuyo contenido se copiará en el

# directorio de cada usuario.# adduser -D -b /users # cambia el directorio base por defecto de

# los nuevos usuarios a /users. El # directorio /users debe existir

# previamente.

Page 38: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando userdel

Comandos para administrar usuarios y grupos

El comando userdel permite eliminar definitivamente un usuario del sistema.

Sintaxis: userdel [opciones] <login>

Ejemplo:

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

Page 39: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando passwd

Comandos para administrar usuarios y grupos

El comando passwd permite cambiar el password de un usuario. También puede bloquear, desbloquear y deshabilitar una cuenta. Si se invoca sin argumentos se asume el usuario actual.

Sintaxis: passwd [opciones] [login]

Ejemplos:

# passwd pepe # coloca una contraseña para pepe. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully

# passwd -d pepe # deshabilita la cuenta del usuario pepe # eliminando su password.

# passwd -l pepe # bloquea la cuenta del usuario pepe poniendo # un signo ! delante de su password en el fichero # /etc/shadow.

# passwd -u pepe # desbloquea la cuenta del usuario pepe.

Page 40: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando usermod

Comandos para administrar usuarios y grupos

El comando usermod se emplea para modificar algunas propiedades de los usuarios como: el login, el directorio base, el shell que se inicia al conectarse, los grupos a los que pertenece, la fecha de expiración de la cuenta, etc. También bloquea y desbloquea una cuenta.

Sintaxis: usermod [opciones] <login>

Ejemplos:

# usermod -s /bin/csh pepe # coloca el shell csh para el usuario # pepe.

# usermod -G users,disk pepe # señala como grupos secundarios de # pepe a users y disk.

# usermod -e 2001-10-20 pepe # indica que la cuenta de pepe expirará # el 20 de octubre del 2001.

Page 41: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando chfn

Comandos para administrar usuarios y grupos

El comando chfn permite cambiar la información de contacto de un usuario. Esta incluye aspectos como: el nombre completo, la oficina de trabajo y los teléfonos.

Se almacena en el fichero de usuarios /etc/passwd.

Sintaxis: chfn [opciones] [login]

Ejemplo:

# chfn pepe Changing finger information for pepe. Name [Pepito]: Pepon Pérez Office [Recepción]: Redes Office Phone []: 22-0909 Home Phone []: 44-3025

Page 42: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando groupadd y groupdel

Comandos para administrar usuarios y grupos

Los comandos groupadd y groupdel añaden y eliminan un grupo en el sistema respectivamente.

Sintaxis:

groupadd [opciones] <grupo> groupdel <grupo>

Ejemplos:

# groupadd admin

# groupdel admin

Page 43: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando groupmod

Comandos para administrar usuarios y grupos

El comando groupmod permite modificar en un grupo su identificador y nombre.

Sintaxis: groupmod [opciones] <grupo> Ejemplo:

# groupmod -n usuarios users # cambia el nombre del grupo users a # usuarios.

Comando gpasswd

Permite administrar los grupos. Se puede utilizar para añadir y eliminar usuarios, señalar un administrador e indicar un password de grupo.

Sintaxis: gpasswd [opciones] <grupo>

Ejemplos:

# gpasswd -A pepe admin # señala como administrador del grupo # admin al usuario pepe.

$ gpasswd admin # cambia el passwd del grupo admin. $ gpasswd -a joe admin # añade el usuario joe al grupo admin.

Page 44: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando su

Comandos para administrar usuarios y grupos

El comando su permite ejecutar un shell (u otro comando) cambiando los identificadores del grupo y del usuario actual. Si se le pasa - como primer argumento ejecuta el shell como un login shell, o sea se creará un proceso de login tal y como ocurre naturalmente cuando un usuario se conecta al sistema. Si no se especifica el login del usuario se asume root.

Sintaxis: su [opciones] [login]

Ejemplos:

$ su – Password: #

# su pepe Password:

$ su - -c "cat /etc/shadow" # ejecuta un comando con privilegios de Password: # root en lugar de un shell.

Page 45: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando newgrp

Comandos para administrar usuarios y grupos

El comando newgrp permite iniciar un nuevo shell cambiando el identificador del grupo (gid) del usuario actual. Sólo podrán hacerlo los usuarios que pertenezcan al grupo o en caso de que este tenga una contraseña, aquellos que la conozcan.

Sintaxis: newgrp [grupo]

Ejemplo:

# newgrp bin

Page 46: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando echo

Comandos variados

El comando echo muestra en su salida todo lo que se le pase como argumento.

Ejemplo:

$ echo Hola amigo... Hola amigo...

Page 47: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos variados

El comando alias permite asignarle otros nombres a los comandos.

Sintaxis: alias [nombre[=valor]...]

Sin argumentos muestra todos los alias definidos por el usuario actual. Para deshabilitar un alias se emplea el comando unalias

Comando alias

Ejemplos:

$ alias l='ls -l --color' $ alias l alias l='ls -l --color' $ alias alias c='clear' alias l='ls -l --color' alias l.='ls .[a-zA-Z]* --color=tty'

Page 48: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando tty

Comandos variados

El comando tty imprime el dispositivo de caracter asociado a la terminal en la que se está trabajando.

Ejemplos:

$ tty /dev/tty2

$ tty /dev/pts/0

Comando id

El comando id, imprime dado un usuario, sus identificadores de usuario y de grupo principal (gid y uid) así como del resto de los grupos a los que pertenece. Sin argumentos se asume el usuario actual.

Sintaxis: id [opciones] [login]

Ejemplo:

# id pepe uid=502(pepe) gid=502(pepe) groups=502(pepe),100(users)

Page 49: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando du

Comandos variados

El comando du permite conocer la longitud (expresada en kilobytes por defecto) de una jerarquía de ficheros a partir de un directorio.

Sintaxis: du [opciones] [ficheros | directorios]

Algunas opciones:

-h : 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.

Ejemplos:

$ du -h *

$ du -hsc /usr /home

Page 50: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando who

Comandos variados

El comando who muestra los usuarios conectados al sistema ya sea local o remotamente.

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

Sin argumentos who muestra los logins de los usuarios conectados, por que terminal lo han hecho y en que fecha y hora.

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, - que no y ?, desconocido).

-i : imprime además para cada usuario conectado que tiempo lleva sin interactuar con el sistema (idle time). Si lleva menos de un minuto pone un punto y si es más de 24 horas la cadena ''old''.

Continua...

Page 51: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos variados

-q : sólo muestra los logins de los usuarios conectados y la cantidad total.

Comando who (continuación...)

Ejemplos:

$ who coco tty2 Oct 17 15:59 root tty3 Oct 17 12:40 alma :0 Oct 17 08:21 pepe pts/0 Oct 17 10:20

$ who -H -w -i USER MESG LINE LOGIN-TIME IDLE FROM pepe + pts/2 Nov 16 09:26 old root - tty1 Nov 17 09:01 00:11 alma ? :0 Nov 17 09:10 . coco - pts/0 Nov 17 10:30 00:05

$ who -q pepe root alma coco users=4

Page 52: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando w

Comandos variados

El comando w muestra también los usuarios conectados al sistema además de lo que están haciendo (proceso que ejecutan en ese momento) y otras informaciones.

Sintaxis: w [opciones] [usuario]

Sin argumentos este comando muestra una primera línea con: la hora en que arrancó el sistema, cuanto tiempo lleva funcionando, cuantos usuarios hay conectados y tres porcientos de carga de la CPU: durante el último, los 5 y los 15 minutos anteriores. A continuación se muestra una tabla cuyas columnas representan: el login de cada usuario conectado con una serie de parámetros de lo que se encuentra haciendo.

Page 53: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos variados

Ejemplos:

$ w 4:06pm up 7:45, 3 users, load average: 0.01, 0.05, 0.07 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT coco tty2 - 3:59pm 6:53s 0.20s 0.12s -bash root tty3 - 12:40pm 0:00s 0.32s 0.16s w pepe pts/0 192.168.168.65 01:20am 6:40 0.10s 0.05s pine

$ w pepe USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT pepe pts/0 192.168.168.65 01:20am 6:40 0.10s 0.05s pine

Page 54: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando finger

Comandos variados

El comando finger permite buscar y mostrar información asociada a los usuarios del sistema de acuerdo a sus nombres, apellidos o login. La información que muestra es: el login, el nombre y los apellidos, el directorio base, el shell, la oficina y el teléfono, el teléfono de la casa, la lista de terminales a través de las que está conectado con la fecha, etc.

Ejemplos:

$ finger alina Login: alina Name: Alina Castellanos Leyva Directory: /home/alina Shell: /bin/bash Office: Aula, 79-7916 Home Phone: 00-0000 On since Fri Jul 20 09:07 (CDT) on :0 (messages off) On since Fri Jul 20 09:08 (CDT) on pts/0 2 hours 54 minutes idle On since Fri Jul 20 10:27 (CDT) on pts/1 14 minutes 29 seconds idle On since Fri Jul 20 10:29 (CDT) on pts/3 Mail last read Fri Jul 20 11:58 2001 (CDT)

Page 55: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando ping

Comandos variados

El comando ping permite enviar paquetes ICMP del tipo ECHO_REQUEST a otra computadora, con el objetivo de saber si esta es alcanzable a través de la red. Además muestra un resumen estadístico de la trasmisión. Este comando se ejecuta por defecto sostenidamente por lo que para interrumpirlo se debe hacer Ctrl-c.

Sintaxis: ping [opciones] <máquina>

Algunas opciones:

-c <n> : envía n paquetes exactamente.

-q : sólo despliega el sumario final.

Continua...

Page 56: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...Comandos variados

Ejemplos:

$ ping ec PING ec.minbas.cu (10.16.16.1) from 10.16.1.79 : 56(84) bytes of data. 64 bytes from ec.minbas.cu (10.16.16.1): icmp_seq=0 ttl=128 time=441 usec 64 bytes from ec.minbas.cu (10.16.16.1): icmp_seq=1 ttl=128 time=415 usec 64 bytes from ec.minbas.cu (10.16.16.1): icmp_seq=2 ttl=128 time=409 usec

--- ec.minbas.cu ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max/mdev = 0.409/0.421/0.441/0.027 ms

Comando ping (continuación...)

Page 57: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Algunos comandos básicoscontinuación...

Comando ifconfig

Comandos variados

El comando ifconfig permite configurar las interfaces de red. Sin argumento ifconfig despliega información de las interfaces de red activas. Ejemplos:

# ifconfig eth0 Link encap:Ethernet HWaddr 00:00:E8:EC:86:E9

inet addr:192.168.168.65 Bcast:192.168.168.255 Mask:255.255.255.0 UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:49607 errors:0 dropped:0 overruns:0 frame:0 TX packets:13557 errors:0 dropped:0 overruns:0 carrier:0 collisions:1207 txqueuelen:100 Interrupt:9 Base address:0xb800

lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:20 errors:0 dropped:0 overruns:0 frame:0 TX packets:20 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0

# ifconfig eth0 down # permite apagar la interfaz de red eth0 # ifconfig eth0 up # permite llevantar la interfaz de red eth0

Page 58: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Flujos de datos

En Linux al igual que en Unix todos los procesos (programas en ejecución) tienen asociados tres flujos de datos principales. Estos son:

• La salida de errores (2): Es donde un proceso escribe los posibles errores durante su ejecución. Por defecto es la terminal donde se invocó el programa correspondiente

• La salida estándar (1): Es donde un proceso escribe los resultados de su ejecución. Por defecto es la terminal donde se invocó el programa correspondiente.

• La entrada estándar (0). Es donde un proceso puede tomar los datos que maneja y que no se indican mediante argumentos u opciones. Por defecto se toma a partir del teclado.

En bash, al igual que en otros shells, los flujos de datos se pueden redireccionar libremente hacia distintos ficheros. En esencia este mecanismo consiste en que la salida de un proceso (estándar o de errores) puede escribirse en un fichero en lugar de la terminal asociada, así como la entrada puede tomarse también a partir de un fichero en lugar de utilizar lo escrito mediante el teclado.

Page 59: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Flujos de datoscontinuación...

Para indicar un redireccionamiento se utilizan los signos de comparación < y >. De esta forma se generan dos tipos de construcción:

• [x]>salida: indica el redireccionamiento del flujo de datos x al fichero nombrado salida. De no indicarse x se asumirá la salida estándar del programa que se haya invocado, o sea, ''1''.

• [x]<entrada: indica el redireccionamiento del contenido del fichero nombrado entrada hacia flujo de datos x. De no indicarse x se asumirá la entrada estándar del comando que se haya invocado, o sea, ''0''.

Ejemplos:

# cat /etc/shadow > cont # se redirecciona la salida estándar hacia # un fichero

$ cat > telefonos # se toma de la entrada estándar el DISAIC 79-7916 # contenido a procesar y se dirige la salida UH 54-3210 # hacia un fichero. La combinación "Ctrl-d" SIS 88-9977 # indica que se interrumpa la lectura de Ctrl-d # la entrada estándar.

Page 60: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Flujos de datoscontinuación...

Siempre que se emplee la forma [x]>salida, si el fichero salida existe se sobrescribirá y si no, se creará.

Para añadirle algo más a su contenido anterior (append) en lugar de sobrescribirlo, se puede emplear >>.

Ejemplos:

$ cat >> telefonos Pepe 44-3025 Ctrl-d

$ cat clase3.txt clase4.txt >> clases.txt

Page 61: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Tuberías

Las tuberías (pipes) son un poderoso mecanismo del shell en Unix. Este en esencia permite tomar la salida de un comando y pasársela como entrada a otro.

Muchos de los comandos mencionados anteriormente, que reciben como argumento un fichero, en caso de omitirse este, utilizan su entrada estándar. Esta entrada puede provenir a su vez de la salida de otros comandos.

El caracter que se emplea para separar un comando de otro mediante una tubería es |.

Ejemplos:

$ ls -l /dev | less # pagina la salida de un comando

$ locate user | grep bin # busca en la jerarquía de ficheros a # aquellos que contengan en su path la # cadena "user" y de estos selecciona los # que contengan además "bin".

Page 62: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Entornos de trabajo en Bash

Un entorno de trabajo en Linux no es más que la configuración que posee un usuario durante su interacción con el sistema y más específicamente con el shell.

Las características del entorno para el caso de bash pueden ser:

- la forma en que se muestra el prompt,

- los alias,

- las funciones definidas,

- las variables del entorno de forma general.

Las facilidades para cambiar el entorno de trabajo dependen de las capacidades del shell que se utilice.

Las variables del entorno almacenan valores que describen las propiedades del entorno de trabajo. Un usuario puede definir sus propias variables o modificar las ya existentes.

Page 63: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Para asignarle valor a una variable en el shell se emplea el operador de asignación tradicional entre el nombre de la variable y el valor asignado (no deben haber espacios intermedios).

Ejemplo:

$ MENSAJE="Hola amigo"

Para acceder al valor de una variable en el shell se emplea el caracter $ seguido por el nombre de la variable. Para imprimir en la terminal el valor de una variable se puede utilizar el comando echo. Ejemplo:

$ echo $MENSAJE Hola amigo

Entornos de trabajo en Bashcontinuación...

Para ver las variables del entorno definidas se puede emplear el comando set.

Ejemplo:

$ set

$ set | less

Page 64: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Entornos de trabajo en Bashcontinuación...

Para eliminar el valor de una variable se emplea el comando unset.

Ejemplo:

$ unset MENSAJE

Algunas variables del entorno en bash son:

• PATH: guarda la secuencia de caminos donde el shell busca los programas que se intenten ejecutar en la línea de comandos cuando no se utilizan los caminos absolutos. Estos caminos se separan por el caracter '' '':'‘.

• USER: contiene el login del usuario actual.

• HOME: guarda el directorio base del usuario actual

• PS1: almacena la estructura del prompt principal del usuario. Permite una serie de macros.

Ejemplo:

$ export PS1="[\T,\u\#]\$ " [14:12:15,pepe 315]$

Page 65: Entrenamiento en Linux Clase #3 Por: Javier García Salgado Profundización en Bash.

Entornos de trabajo en Bashcontinuación...

Para cada usuario existen tres ficheros muy importantes que permiten definir en gran medida las características del shell durante la interacción con este.

• .bash_profile: Se ejecuta siempre que se abre una nueva sesión en el sistema por parte de cualquier usuario.

• .bash_logout: se ejecuta al terminar una sesión de trabajo. Puede contener comandos para salvar lo hecho durante la sesión.

• .bashrc: se ejecuta siempre que se invoque un nuevo shell.

Cuando se crea un nuevo usuario se le colocan en su directorio base estos tres ficheros cuyos patrones están el directorio /etc/skel.

FINFIN