Práctica 14 Shell en Linux

Material necesario

Descripción de la práctica

Vamos a ver algunos de los comandos más usados en linux (Debian es una versión basada en Linux).

Realizar el curso: https://openwebinars.net/academia/portada/shell-linux/

Un poco de Ayuda

Man

Uso de man: man comando

Pequeña descripción: man -f comando

Buscar una palabra en todas las páginas man: man -k palabra1

Hacer una búsqueda or de palabras: man -k palabra1 palabra2 ....

Hacer una búsqueda and de palabras: man -k palabra1 | grep palabra2 | ....

Búsqueda hacia adelante dentro de una página man: /palabra

Búsqueda hacia atrás dentro de una página man: ?palabra

Búsqueda de información de un parámetro: man comando | grep "parámetro"

Búsqueda de información de un parámetro abriendo less: man comando | less +/parámetro

Ubicación de la página más de un comando: man -w comando

Instalación de bropages

http://bropages.org/

Recomiendo usarlo online

sudo apt-get install gem
gem install bropages
gem install bropages

Uso de las bropages: bro comando

Instalación de Manly: pip install --user manly
Ejemplo de uso: manly dpkg -i -R

Saber quién soy y cómo cambiar de usuario

whoami quien soy

su usuario cambiar de usuario

su para acceder como usuario root

exit salir

Directorio

Listar directorios

ls mostrar archivos en el directorio actual

ls /home mostrar archivos en el directorio /home

ls -a mostrar archivos en el directorio actual incluidos los archivos ocultos

ls -a . mostrar archivos en el directorio actual incluidos los archivos ocultos

ls -a .. mostrar archivos en el directorio padre incluidos los archivos ocultos

ls -l mostrar archivos en el directorio actual detallado

ls -lh mostrar archivos en el directorio actual detallado (h=human) capacida en K, M

ls -lhS mostrar archivos en el directorio actual detallado (h=human) capacida en K, M, ordenados

orden de los parametros da igual (-lhS o -lSh, etc)

Navega entre directorios (pwd, cd ~)

pwd directorio en el que estamos

cd cambiar de directorio /home/usuario

cd ~ cambiar de directorio /home/usuario

cd .. cambiar de directorio al padre

cd / cambiar de directorio raiz

cd /home cambiar de directorio /home

Navega entre directorios (popd, pushd)

Guarda en memoria las rutas con las que estamos trabajando

pushd /home cambio al directorio /home y lo guarda en memoria

pushd .. cambio al directorio padre y lo guarda en memoria

pushd /var cambio al directorio /var y lo guarda en memoria

dirs -v muestra las rutas guardadas

popd cambia al último directorio almacenado

popd +2 cambia al último directorio almacenado en +2

popd -1 probar

Un poco lioso de usar.

Crear un directorio (mkdir)

tree es un paquete para mostrar en pantalla el árbol de directorios

sudo apt install tree instalamos el comando tree

tree . muestar la estructura en arbol del directorio actual

tree /home muestar la estructura en arbol del directorio /home

cd cambiar de directorio /home/usuario

mkdir proyectos crea la carpeta proyectos en la ruta que estemos

ls muestra el contenido de la carpeta actual (observa que esta proyectos)

cd proyectos cambio al directorio proyectos

mkdir p1 p2 crea los directorios p1 y p2

mkdir {p3,p4} crea los directorios p3 y p4

rm -rf * borra todos los archivos y directorios en el directorio que estamos

Crear estructuras complejas. No poner espacios.

mkdir -p personal/{p1,p2} crea los directorios p3 y p4

Borrar directorios y ficheros (rm)

rm fichero borrar un fichero

rm fichero1 fichero2 borrar varios ficheros

rm fiche* borrar ficheros que comiencen por fiche

rm -r directorio borrar un directorio

rm -d directorio borrar solo los directorios vacios y archivos

rm -rf directorio borrar el directorio forzandolo

* comodin

Renombrar, mover y copiar un directorio

mv origen destino mover un fichero

mv viejoNombre nuevoNombre renombrar

cp origen destino copiar archivos

cp - r dirOrigen dirDestino copiar directorio

Imprimir un árbol de directorios (tree)

apt install paqueteAInstalar como instalar un paquete (programa)

apt install tree instalamos el paquete tree (ya lo hicimos antes)

apt install vls instalamos el paquete vlc

vlc ejecutamos el programa vlc

RETO. Crear una estructura de directorios compleja-

mkdir -p {a/{b,c},d/e/f/{a,b,c}}

Creación y lectura de ficheros

Creación de ficheros con touch

touch nombreArchivo crea un archivo vacio

Uso de nano

nano nombreArchivo abre un editor, se edita y se guarda

nano hola.txt Escribimos hola. Ctrl+O para guardar. Ctrl+X para salir.

Ctrl+W, escribimos el texto a buscar y pulsamos enter. Pone el cursor donde esta esa palabra.

Reemplazar texto: Ctrl+\, escribimos el texto viejo intro, escribrimos el texto nuevo intro y nos da opciones.

Ctrl+K cortar una linea de texto

Ctrl+U pegar texto

cat nombreArchivo Ver contenido de un fichero de texto

nano -m nombreArchico nos permite que al hacer click en una letra se nos posicione el cursor ahí

nano -B nombreArchivo crea un archivo de backup, llamado nombreArchivo~

Cat

Toma el contenido de un archivo y lo muestra en pantalla

cat nombreArchivo

cat nombreArchivo1 nombreArchivo2 concatena archivos (El orden importa)

cat nombreArchivo1 nombreArchivo2 > resultado concatena archivos y los guarda en resultado

> es un tipo de direccionamiento

Less

Es un visor de archivos de texto (para archivos grandes)

less nombreArchivo Teclas útiles: h ayuda y q salir.

Head y tail

head nombreArchivo muestra las 10 primeras líneas de un archivo

head -n x nombreArchivo muestra las x primeras líneas de un archivo

tail nombreArchivo muestra las 10 últimas líneas de un archivo

tail -n x nombreArchivo muestra las x últimas líneas de un archivo

tail nombreArchivo muestra las 10 últimas líneas de un archivo y se queda a la escucha de cambios

En otro terminal: nano nombreArchivo lo modificamos y al darla guardar vemos que el terminal que esta a la escucha cambia

Ctrl+C para terminal el proceso de escucha

Contar palabras de un fichero

wc nombreArchivo -w Nos muestra: total lineas, total palabras, capacidad (bytes) y nombre archivo

wc -w nombreArchivo -w Nos muestra: total palabras y nombre archivo

wc -l nombreArchivo -w Nos muestra: total líneas y nombre archivo

wc -c nombreArchivo -w Nos muestra: capacidad y nombre archivo

ls | wc -w Nos muestra: número de archivos y directorios en el directorio

ls -a Nos muestra: archivos, carpetar, ocultos + . y ..

ls -A | wc -w Total excepto . y ..

ls -a | wc -w Nos da 2 más que el comando anterior (. y ..)

Búsqueda de ficheros

Caracteres comodín

* Cualquier carácter o conjunto de ellos incluyendo la cadena vacía

? Cualquier carácter (solo uno)

[] Rango. Un conjunto concreto te caracteres

ls nombr?.txt

ls nombr*.txt

ls nombr??.txt

ls [1-3].log

ls [1-3].log

ls [a-z].avi | wc -l

ls [a-z]*.avi | wc -l

ls [a-z]*.avi

Uso de grep (buscar palabras o frases dentro de un archivo)

grep "palabra a buscar" fichero Buscar palabras o frases en un fichero

grep "palabra a buscar" * Buscar palabras o frases en todos los ficheros del directorio actual

grep -r "palabra a buscar" Buscar palabras o frases en todos los directorios desde al actual de forma recursiva

devuelve nombre de archivo: texto de la línea que contiene la palabra a buscar

grep -rn "palabra a buscar"

devuelve nombre de archivo: número de la ĺinea donde esta: texto de la línea que contiene la palabra a buscar

grep -rE '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}\b' Ejemplo buscar todos los documentos que tengan una ip

Uso de which (conocer la ruta del ejecutable

which python

Updatedb y locate (Mejor usar find)

sudo updatedb Actualizar la base de datos de ficheros

locate fichero Localizar un fichero a través de la base de datos

Uso de find

find -type f Buscar solo ficheros

find -type d Buscar solo directorios

find -name palabra Buscar con case sensitive

find -type d -name "src" Buscar directorios llamados src

find -type d -iname "sRc" Buscar directorios llamados src sin tener en cuenta minusculas ni mayúsculas

find -iname openwebinars Buscar sin case sensitive

find -size +XMBuscar ficheros de menos de x MegaBytes: find -size -XM donde x es el numero en MegaBytes

k para KiloBytes

M para MegaBytes

G para GigaBytes

find . -cmin -x Ficheros que han sido modificados hace menos de X minutos

find . -cmin +x Ficheros que han sido modificados hace más de X minutos

find . -maxdepth 1 -cmin +5 Buscar solo en el directorio actual.

find -size +300M | xargs ls -lh

RETO: Busca todos los ficheros .avi mayores de 10MB

find . -size +10M -iname *.avi

dd if=/dev/zero of=video_1M.avi bs=1M count=1 Crear un archivo avi de 1M

Tuberías y redireccionamiento

Entrada y salida estándar y direcciones

Entras y salidas existentes

stdin - Entrada estándar - 0

stdout - Salida estándar - 1

stderr - Salida de error estándar - 2

Redireccionamientos

comando < fichero Toma la entrada de un fichero

comando > fichero Envía la salida del comando al fichero sobreescribiendo este

comando 2> fichero Envía la salida de error del comando al fichero

comando >> fichero Añade al final del archivo

comando 2>&1 Envía la salida de error a la salida estándar

comando &> fichero Envía la salida estándar y error al fichero

comando 2> errorfile 1>stadout Enviar las salidas en archivos separados

Tuberías

La saiida de un comando se convierte en entrada de otro comando.

| La tuberia se representa con el carácter

comando | comando | comando | ... Uso

Ejemplo: la salida estandard de aquí | entra aquí

Ejemplo:cat filename | less

Tee

tee sirve para leer desde la entrada estándar y escribe en la salida estándar y ficheros

Ejemplo: ls | tee fichero1 fichero2

Y si queremos agregar al final en vez de sobrescribir: -a

Ejemplo: ls | tee -a fichero1 fichero2

Xargs

xargs sirve para pasar argumentos de la salida estándar de otro comando por ejemplo

Uso: comando | xargs comando

Ejemplo: ls fichero[12] | xargs rm

Compresión

Zip

Instalar zip: sudo apt install zip unzip

Comprimir ficheros: zip nombreArchivo.zip [fichero | carpeta | patrón | ficheros]

Comprimir ficheros de forma recursiva: zip -r nombreArchivo.zip [fichero | carpeta | patrón | ficheros]

Ver el contenido de un fichero zip: unzip -vl archivo.zip

Borrar un fichero dentro de un zip : zip -d fichero.zip fichero_a_borrar

Descomprimir en la carpeta actual: unzip archivo.zip

Descomprimir en otra ruta: unzip archivo.zip -d ruta

RETO COmprimir todos tus archivos *.avi

Solución: find . -iname '*avi' | xargs zip videos.zip

Tar

Crear un contenedor: tar vcf archivo.tar archivos

Crear un contenedor y comprimirlo: tar cfz archivo.tar.gz archivos

Descomprimir todo y sacar del contenedor: tar xcf archivo.tar.gz

cfz create archivho comprimido

Permisos

Entendiendo los permisos

ls -lh

Significado de las letras en los permisos: (r)ead, (w)rite, e(x)cution y - sin permisos

---:---:---: Lo podemos dividir en tres ---:

Para cada grupo los permisos tienen el siguiente valor:

rwx
421

Ejemplos:

r-- = 4
rw- = 6
r-x = 5
-wx = 3
rwx = 7

Ejemplo una vez dado algún permisos a los usuarios, grupo y anónimos

777 = rwx:rwx:rwx

Cambiando los permisos

ls -lh

whoami

chmod permisos ficheros

chmod o=rw fichero o=otros r=lectura w=escritura

sudo -u usuario chmod ugo=rwx fichero u=usuario, g=grupo, o=otros r=lectura, w=escritura, x=ejecución

chmod ugo=rwx hola.txt permiso a todos para todo (no recomendado)

chmod 777 hola.txt hace lo mismo que el de arriba

chmod 000 hola.txt quito todos los permisos

chmod 710 hola.sh

Alias

Es como crear atajos del teclado.

ls -lh

Creamos un alias para el comando anterior (modificamos .bashrc)

Nos ponemos al final del archivo y añdimos nuestros alias.

nano -m .bashrc

Sobre el final podemos descomentar alǵun alias que exista y crear otro como;

alias='ls lh' Se cierra el terminal y se vuelve a abrir para que funcione.

Conclusiones

Aún quedan muchos comandos que podemos usar

Libros:

The linux command line

LPIC-1 Linux Professional Institute Certification

Dentro de openwebinars hay otros 2 cursos interesantes:

- Curso de LPIC 1 Examen 102 - Temas 105 y 106: Shell Scripting, interfaces y entornos

- Curso de bash scripting y automatización de procesos

Método de entrega

Realizar un listado de los comandos usados en la práctica y una breve descripción de su utilidad

Subirlo a la carpeta que os he compartido en drive.

Nombre documentaciónp14.pdf