Comandos Prácticas FS
Comandos Prácticas FS
* (Asterisco):
● Descripción: Representa cualquier secuencia de cero o más caracteres.
● Uso: Permite buscar archivos con nombres que coincidan con cualquier secuencia de
caracteres.
● Ejemplo: ls *.txt
● Resultado: Mostrará todos los archivos que tengan una extensión ".txt", independientemente
del nombre que tengan.
[] (Corchetes):
● Descripción: Designan un carácter o rango de caracteres que representan un carácter simple a
través de una lista de caracteres o mediante un rango.
● Uso: Permite buscar archivos cuyos nombres coincidan con un conjunto específico de
caracteres.
● Ejemplo: ls *[0-9].txt
● Resultado: Mostrará todos los archivos que tengan un número en su nombre seguido de ".txt".
{} (Llaves):
● Descripción: Sustituyen conjuntos de palabras separadas por comas que comparten partes
comunes.
● Uso: Permite generar listas o secuencias de archivos de forma automática.
● Ejemplo: mv archivo{1,2,3}.txt destino/
● Resultado: Moverá los archivos "archivo1.txt", "archivo2.txt" y "archivo3.txt" al directorio
"destino/".
~:
● Descripción: Se usa para abreviar el camino absoluto (path) del directorio HOME.
● Uso: Permite referenciar el directorio HOME del usuario de manera abreviada.
● Ejemplo: cd ~/Documentos
● Resultado: Cambiará al directorio "Documentos" dentro del directorio HOME del usuario.
; (Punto y coma):
● Descripción: Separador entre órdenes que se ejecutan secuencialmente.
● Uso: Permite escribir dos o más órdenes en la misma línea, ejecutándolas secuencialmente.
● Ejemplo: ls -l ; pwd
● Resultado: Mostrará la lista detallada de archivos y luego imprimirá el directorio actual.
() (Paréntesis):
● Descripción: Se usan para aislar órdenes separadas por ";" o "|". Las órdenes dentro de los
paréntesis son tratadas como una única orden.
● Uso: Permite agrupar órdenes para aplicar sobre ellas otro metacarácter o para aislar un
conjunto de órdenes del resto de la línea de órdenes.
● Ejemplo: (ls -l ; pwd) | wc
● Resultado: Primero mostrará la lista detallada de archivos y luego imprimirá el número de
líneas, palabras y bytes del resultado.
&& (Y lógico):
● Descripción: Concatena dos órdenes de tal forma que la segunda se ejecuta solo si la primera
se ejecuta correctamente.
● Uso: Permite ejecutar una orden basada en el resultado exitoso de otra.
● Ejemplo: ls -l && pwd
● Resultado: Mostrará la lista detallada de archivos y luego imprimirá el directorio actual solo
si el comando ls -l falla.
|| (O lógico):
● Descripción: Concatena dos órdenes de tal forma que la segunda se ejecuta solo si la primera
no se ejecuta correctamente.
● Uso: Permite ejecutar una orden alternativa en caso de que la primera falle.
● Ejemplo: ls -l || pwd
● Resultado: Mostrará la lista detallada de archivos y luego imprimirá el directorio actual solo
si el comando ls -l falla.
ÓRDENES DE TERMINAL LINUX
ls:
● Descripción: Lista los contenidos de un directorio.
● Uso: Se utiliza para mostrar los archivos y subdirectorios dentro de un directorio específico.
● Ejemplo: ls -l
cd:
● Descripción: Cambia de directorio de trabajo.
● Uso: Permite moverse entre diferentes directorios del sistema de archivos.
● Ejemplo: cd directorio_destino
pwd:
●Descripción: Imprime el camino absoluto del directorio actual.
● Uso: Proporciona la ruta completa del directorio en el que te encuentras actualmente.
● Ejemplo: pwd
mkdir:
● Descripción: Crea un directorio a partir del nombre dado como argumento.
● Uso: Se utiliza para crear nuevos directorios en la ubicación especificada.
● Ejemplo: mkdir nuevo_directorio
rmdir:
● Descripción: Borra un directorio existente (si está vacío).
● Uso: Permite eliminar directorios vacíos del sistema de archivos.
● Ejemplo: rmdir directorio_a_borrar
cat:
● Descripción: Muestra el contenido de un archivo o varios, concatena archivos, copia un
archivo, crea un archivo de texto o muestra los caracteres invisibles de control.
● Uso: Se utiliza para mostrar el contenido de uno o más archivos en la terminal.
● Ejemplo: cat archivo.txt
cp:
● Descripción: Copia el archivo1 en el archivo2. Si archivo2 no existe, se crea.
● Uso: Permite copiar archivos de una ubicación a otra en el sistema de archivos.
● Ejemplo: cp archivo_origen archivo_destino
mv:
● Descripción: Renombra archivos y puede mover de lugar un archivo o directorio.
● Uso: Se utiliza para cambiar el nombre de un archivo o moverlo a una nueva ubicación.
● Ejemplo: mv archivo_origen archivo_destino
file:
● Descripción: Muestra el tipo de archivo dado como argumento.
● Uso: Proporciona información sobre el tipo de archivo especificado.
● Ejemplo: file archivo
more:
● Descripción: Visualiza un archivo fraccionándolo una pantalla cada vez.
● Uso: Permite visualizar el contenido de un archivo en la terminal, paginándolo para una
lectura más fácil.
● Ejemplo: more archivo.txt
rm:
● Descripción: Borra archivos y directorios con contenido.
● Uso: Se utiliza para eliminar archivos o directorios del sistema de archivos.
● Ejemplo: rm archivo.txt
touch:
● Descripción: Si existen los archivos dados como argumentos se modifican su fecha y hora. En
caso contrario, se crean con la fecha actual del sistema.
● Uso: Permite crear nuevos archivos vacíos o actualizar la fecha de los archivos existentes.
● Ejemplo: touch nuevo_archivo.txt
clear:
● Descripción: Borra el contenido del terminal actual.
● Uso: Limpia la pantalla de la terminal, eliminando todo el contenido visible.
● Ejemplo: clear
tail:
● Descripción: Muestra la parte final del contenido de un archivo dado como argumento.
● Uso: Permite visualizar las últimas líneas de un archivo en la terminal.
● Ejemplo: tail archivo.txt
head:
● Descripción: Muestra la parte inicial del contenido de un archivo dado como argumento.
● Uso: Permite visualizar las primeras líneas de un archivo en la terminal.
● Ejemplo: head archivo.txt
sort:
● Descripción: Ordena, según un criterio elegido (ver con man), el contenido de los archivos
dados como argumentos.
● Uso: Se utiliza para ordenar las líneas de texto de un archivo en orden alfabético o numérico.
● Ejemplo: sort archivo.txt
chmod:
● Descripción: Cambia los permisos de acceso a archivos en sistemas UNIX/Linux.
● Uso: Permite modificar los permisos de lectura, escritura y ejecución para el propietario, el
grupo y otros usuarios.
■ u (usuario): Representa al propietario del archivo.
■ g (grupo): Representa al grupo al que pertenece el archivo.
■ o (otros): Representa a los usuarios que no son el propietario ni están en el grupo.
■ a (todos): Representa a todos los usuarios.
Puedes asignar permisos de lectura (r), escritura (w), y ejecución (x) utilizando estas
letras junto con los operadores + (para añadir permisos) y - (para eliminar permisos).
Para utilizar chmod con permisos octales, debes utilizar números para representar los
permisos:
4: Permisos de lectura (read).
2: Permisos de escritura (write).
1: Permisos de ejecución (execute).
Puedes sumar estos números para asignar permisos y luego aplicarlos al archivo.
set:
● Descripción: Muestra todas las variables de entorno, así como también otras variables y
funciones definidas en la sesión actual de la terminal (variables locales, solo visibles en la
shell donde se definen).
● Ejemplo: set
unset:
● Descripción: Se utiliza para eliminar una variable de entorno específica.
● Ejemplo: unset VARIABLE (donde "VARIABLE" es el nombre de la variable de
entorno que se desea eliminar). Por ejemplo: unset PATH eliminará la
variable de entorno PATH.
help:
● Descripción: Muestra información de ayuda sobre comandos integrados en la terminal de
Linux.
● Ejemplo: help variables (lista de variables propias del shell bash)
expr:
● Descripción: Evalúa expresiones aritméticas y de cadena de caracteres en la terminal.
● Uso: Útil para realizar operaciones matemáticas y manipular cadenas de texto en scripts de
Bash.
● Ejemplo: resultado= ‘expr 5 + 3’
declare:
● Descripción: Se utiliza para declarar variables y darles atributos específicos, como el tipo de
variable (local o global), la posibilidad de asignarles valores de solo lectura, exportabilidad y
si son matrices (vectores o listas). También se puede utilizar para ver los atributos de las
variables.
● Uso: Útil para definir variables con atributos especiales en scripts de Bash.
● Atributos:
-i: Indica que la variable es de tipo entero.
-r: Indica que la variable es de solo lectura.
-a: Indica que la variable es una matriz (vector o lista).
-x: Indica que la variable es exportable.
-p: Muestra los atributos de las variables.
● Ejemplo:
if/else
● Descripción: ejecuta una lista de declaraciones dependiendo de si se cumple o no cierta
condición, y se podrá utilizar tanto en la programación de guiones, como en expresiones más
simples.
● Uso: if condición;
then declaraciones
[elif condición;
then declaraciones ]...
[else declaraciones ]
fi
● Ejemplo: if [ -d "$directorio" ]; then
echo "El directorio $directorio existe."
else
echo "El directorio $directorio no existe."
fi
TEORÍA
1. VARIABLES:
Para asignar valores a variables, se usa el nombre de la variable seguido de un signo igual y el valor deseado,
sin espacios alrededor del signo igual para evitar errores. Las variables pueden contener dígitos pero no
pueden empezar con uno. Para mostrar el valor de una variable se usa el comando "echo". Por ejemplo:
numero=1
echo $numero
Para crear variables de tipo vector, se utiliza la misma sintaxis, pero los elementos se encierran entre
paréntesis y se separan por espacios. Para acceder a un elemento del vector, se utiliza
"${nombre_vector[indice]}". Por ejemplo:
La sustitución de órdenes en Bash permite ejecutar comandos y usar su salida como si fuera el valor de una
variable. Se puede usar $(comando argumentos) o ‘comando argumentos’. Esta técnica es útil en
expresiones, incluyendo expresiones aritméticas. Por ejemplo:
Cuando se quitan las comillas dobles del final y se colocan después de los dos puntos, o se sustituyen por
comillas simples, se afecta la interpretación de los caracteres especiales. Las comillas dobles ofrecen una
protección débil, excepto para !, $, , y `, mientras que las comillas simples ofrecen una protección fuerte,
excepto para !. Las comillas simples son útiles para proteger variables o comandos. Por ejemplo:
Si se usa echo sin escape en una cadena con comillas simples que contiene una comilla, se generará un
prompt para completar la orden. Para corregirlo, se debe escapar la comilla con \ o dividir la frase en dos
partes con comillas simples.
Podemos asignar el resultado de una orden a una variable utilizando el operador de comillas invertidas (`):
listadearchivos=`ls .`
Es importante tener en cuenta que algunas órdenes entre comillas invertidas pueden generar errores. Para
depurar, se puede utilizar $?, donde 0 indica una ejecución correcta y 1 un error.
Al intentar realizar operaciones aritméticas directamente en una asignación se debe utilizar la orden expr
para evaluar la asignación: numero=1
numero=`expr $numero + 1`
2. GUIONES
Los guiones en el shell (scripts o programas shell) son archivos de texto que contienen órdenes del shell y
del sistema operativo. Estos archivos se utilizan como guía para el shell sobre qué órdenes ejecutar. Para
ello, abriremos un editor de textos ascii (vi, kedit, gedit, emacs, xemacs, ...) y escribimos las ordenes a
ejecutar. Para ejecutar este script, escribimos en la terminal: bash nombre_doc
Esta orden, lanza un shell bash y le indica que lea las órdenes del guion de prueba, en lugar de usar el propio
terminal. De esta forma podemos automatizar procesos al liberar al usuario de estar escribiendo las órdenes.
Para ello, debemos poner siempre en la primera línea del archivo los símbolos #! seguidos del nombre del
programa del tipo de shell que deseamos ejecutar, para nuestro caso, /bin/bash. Con esto, nuestro ejemplo
anterior quedaría:
#!/bin/bash
printf "El directorio $HOME // $1 contiene los siguientes archivos:\n"
ls $HOME // ls $1 (si pasamos parámetros)
Ahora, podemos hacer nuestro archivo ejecutable (chmod +x prueba) con lo que la ejecución sería:
$ ./prueba
➢ `$0`: Nombre del guion o script que se ha llamado. Sólo se emplea dentro del guion.
➢ `$1 .. $9` y `${n}, n>9`: Son los distintos argumentos que se pueden facilitar al llamar a un guion.
Los nueve primeros se referencian con `$1`, `$2`, ..., `$9`, y a partir de ahí es necesario encerrar el
número entre llaves, es decir, `${n}`, para `n>9`.
➢ `$*`: Contiene todos los argumentos que se le han dado. Cuando va entre comillas dobles es
equivalente a “$1 $2 $3 … $n”.
➢ `$@`: Contiene todos los argumentos que se le han dado. Cuando va entre comillas dobles es
equivalente a “$1” “$2” … “$n”.
➢ `$#`: Contiene el número de argumentos que se han pasado al llamar al guion.
➢ `${arg:-val}`: Si el argumento tiene valor y es no nulo, continua con su valor, en caso contrario se le
asigna el valor indicado por val.
➢ `${arg:?val}`: Si el argumento tiene valor y es no nulo, sustituye a su valor; en caso contrario,
imprime el valor de val y sale del guion. Si val es omitida, imprime un mensaje indicando que el
argumento es nulo o no está asignado.
Como se ve en la tabla anterior, las variables numéricas nos permiten pasar argumentos a un guion para
adaptar su comportamiento, son los parámetros del guion. ./prueba nombre1 nombre2
Dentro del script, los parámetros se accederán a través de las variables $1, $2, y así sucesivamente. $1
contendrá el primer nombre pasado como parámetro, $2 contendrá el segundo nombre, y así sucesivamente.
Si un argumento va asociado a nombres de archivos o directorios y se usan los metacaracteres ya conocidos,
se sustituiría el argumento por tanto archivos/directorios que cumplieran el patrón (por ejemplo, dado un
directorio que contiene los archivos ar1.txt y ar2.txt, si un argumento es *.txt, lo consideraría como ar1.txt
ar2.txt). Por lo tanto, en lugar de un argumento pasaría a tener 2, es decir, $1=ar1.txt y $2=ar2.txt.
El shell bash proporciona dos formas de manejar expresiones aritméticas: la expansión aritmética, que se
realiza utilizando $((...)) o $[...]. Estas formas evalúan la expresión aritmética y sustituyen su resultado en el
lugar donde se utiliza.
Características:
echo "Faltan $(( (365 - $(date +%j)) / 7 )) semanas hasta el fin de año"
Operadores aritméticos:
➢ +: Suma y resta, también puede ser utilizado como más unario (+) y menos unario (-).
➢ -: Suma y resta, también puede ser utilizado como más unario (+) y menos unario (-).
➢ *: Multiplicación.
➢ /: División (truncando decimales).
➢ %: Resto de la división.
➢ **: Potencia.
➢ ++: Incremento en una unidad. Puede ser prefijo (++variable) o sufijo (variable++).
➢ --: Decremento en una unidad. Puede ser prefijo (--variable) o sufijo (variable--).
➢ ( ): Agrupación para evaluar conjuntamente.
➢ ,: Separador entre expresiones con evaluación secuencial.
➢ =: Asignación. (no puede haber huecos en blanco a los lados)
➢ +=: Suma y asignación. (x+=y equivale a x=x+y igual ocurre con los sucesivos operadores)
➢ -=: Resta y asignación.
➢ *=: Multiplicación y asignación.
➢ /=: División y asignación.
➢ %=: Módulo y asignación
En el resultado del cálculo de expresiones aritméticas, bash solamente trabaja con números enteros, por lo
que si se necesitase calcular un resultado con decimales, habría que utilizar una forma alternativa, como
puede ser la ofrecida por la orden bc.
Operadores relacionales:
A = B, A == B, A -eq B: A es igual a B.
A != B, A -ne B: A es distinta de B.
A < B, A -lt B: A es menor que B.
A > B, A -gt B: A es mayor que B.
A <= B, A -le B: A es menor o igual que B.
A >= B, A -ge B: A es mayor o igual que B.
! A: A es falsa; representa al operador NOT (negación lógica).
A && B: A es verdadera y B es verdadera; es el operador AND (conjunción lógica).
A || B: A es verdadera o B es verdadera; es el operador OR (disyunción lógica).
Estos operadores relacionales permiten evaluar expresiones aritméticas y relacionarlas entre sí, devolviendo
un valor numérico que indica si la relación es verdadera (1) o falsa (0).
Ejemplos:
A veces es necesario conocer características específicas de los archivos o directorios para saber cómo
tratarlos. Para aplicar los operadores de consulta de archivos haremos uso de dos órdenes nuevas, test e if.
$ xacceso=`test -x cat && echo “true” || echo “false”` # se pueden omitir las “”
Además es posible combinar expresiones para evaluar con los operadores !, -a y -o, not, and y or
ejemploAND=`test –O ejemplo –a –s ejemplo && echo true || echo false`
La orden `if` en bash es única porque cada condición no es una simple expresión booleana, sino una lista de
órdenes. El resultado se basa en el estado de finalización de estas órdenes: `0` para verdadero y `1` para
falso. Se evalúa la primera condición y, si es verdadera, se ejecutan las órdenes asociadas a `then`. Si es
falsa, se busca un bloque `elif`, evaluando cada uno en secuencia hasta encontrar uno verdadero. Si ningún
bloque `elif` es verdadero, se ejecutan las órdenes de un bloque `else` si existe. Una vez ejecutado un bloque,
la ejecución del `if` termina.
xacceso=`if test -x cat; then echo “true”; else echo “false”; fi
La condición de la orden if puede expresarse utilizando la orden test para hacer una comprobación. De forma
análoga se puede utilizar [ ... ]; si se usa “if [ expresión ];”, expresión puede ser una expresión booleana y
puede contener órdenes, siendo necesarios los huecos en blanco entre los corchetes y expresión
La comparación entre valores aritméticos se puede realizar de dos maneras en bash: tratando los valores
como cadenas de caracteres o como números. Para comparar la igualdad con el valor numérico, debemos
usar el operador =; para comparar caracteres debemos usar -eq o ==. También podemos realizar
comparaciones aritméticas utilizando el doble paréntesis.
if [ $valor == "34" ]; then echo sí; else echo no; fi # caracteres
if (( $var1 == 234 )); then echo sí; else echo no; fi #aritmética
Cuando se usa doble paréntesis, no es posible utilizar –eq, -ne, -le, -lt, -ge y –gt. En su lugar se utilizarán los
operadores equivalentes mostrados en la tabla 4.3 (operadores relacionales <,>,!=...) . Además, la última
comparación obliga a usar el operador de igualdad ==. Si se emplea el = responderá con un mensaje de error.
Los operadores == y !=, también pueden utilizarse para comparar si dos cadenas de caracteres A y B
coinciden o no, respectivamente; además, los operadores < y > permiten comparar si una cadena de
caracteres A se clasifica antes o después de otra cadena B, respectivamente, siguiendo el orden lexicográfico.
Además, si se deja un espacio en blanco antes y después del operador =, también se realiza una comparación
en lugar de una asignación si se hace sin los pertinentes espacios en blanco.
Cuando la variable de caracteres que se desea comparar pueda contener algún espacio en blanco, es
obligatorio poner la variable entre comillas para realizar correctamente la comparación (cuando la variable
contiene un valor numérico o una palabra, no es necesario representarla entre comillas).
if [ “$valor” == "hola amigos" ]; then echo sí; else echo no; fi #valor entre
comillas y el texto también
valor=6
if [ valor=3 ]; then echo sí; else echo no; fi
sí # se hace internamente la orden que hay entre corchetes y no
echo $valor # da error, pero la supuesta asignación en la condición del
6 # if no tiene efecto sobre la variable que se estaba usando
Las expresiones regulares son patrones utilizados para describir conjuntos de cadenas y se emplean en
búsquedas dentro de archivos o cadenas. Para aprovechar al máximo ciertas órdenes en bash, como find,
grep y egrep.
Dos expresiones regulares también pueden concatenarse; la expresión que se obtiene representa a cualquier
cadena formada por la concatenación de las dos subcadenas dadas por las subexpresiones concatenadas. Esto
no debe confundirse con el uso del operador OR
Ejemplo: Buscar en el directorio /bin/usr los archivos cuyo nombre comience con las letras a o z y acabe con
la letra m:
➢ \: la barra de escape; si se quiere hacer referencia a este mismo carácter en un patrón, debe ir
precedido por él mismo y ambos entre comillas simples.
➢ .: cualquier carácter en la posición en la que se encuentre el punto cuando se usa en un patrón con
otras cosas; si se usa solo, representa a cualquier cadena; si se quiere buscar un punto como parte de
un patrón, debe utilizarse \. entre comillas simples o dobles.
➢ ( ): un grupo; los caracteres que se pongan entre los paréntesis serán considerados conjuntamente
como si fuesen un único carácter. (Hay que usar \)
➢ ?: indica que el carácter o grupo al que sigue puede aparecer una vez o no aparecer ninguna vez. (Hay
que usar \)
➢ *: indica que el carácter o grupo al que sigue puede no aparecer o aparecer varias veces seguidas. (No
hay que usar \)
➢ +: indica que el carácter o grupo previo debe aparecer una o más veces seguidas.
➢ {n}: indica que el carácter o grupo previo debe aparecer exactamente n veces. (Hay que usar \)
➢ {n,}: indica que el carácter o grupo previo debe aparecer n veces o más seguidas. (Hay que usar \)
➢ {n,m}: indica que el carácter o grupo previo debe aparecer de n a m veces seguidas; al menos n
veces, pero no más de m veces. (Hay que usar \)
➢ [ ]: una lista de caracteres que se tratan uno a uno como caracteres simples; si el primer carácter de la
lista es “^”, entonces representa a cualquier carácter que no esté en esa lista.
➢ -: un rango de caracteres cuando el guion no es el primero o el último en una lista; si el guion aparece
el primero o el último de la lista, entonces se trata como él mismo, no como rango; en los rangos de
caracteres, el orden es el alfabético, pero intercalando minúsculas y mayúsculas – es decir: aAbB...-;
en los rangos de dígitos el orden es 012... También es posible describir rangos parciales omitiendo el
inicio o el final del rango (por ejemplo [m-] representa el rango que va desde la “m” hasta la “z”).
➢ ^: indica el inicio de una línea; como se ha dicho anteriormente, cuando se usa al comienzo de una
lista entre corchetes, representa a los caracteres que no están en esa lista. Situando a continuación de
^ un carácter, filtrará todas aquellas líneas que comiencen por ese carácter.
➢ $: indica el final de una línea. Situando un carácter antes del $, filtrará todas aquellas líneas que
terminen por ese carácter.
➢ \b: el final de una palabra. (Debe utilizarse entre comillas simples o dobles)
➢ \B: que no está al final de una palabra. (Debe utilizarse entre comillas simples o dobles)
➢ \<: el comienzo de una palabra. (Debe utilizarse entre comillas simples o dobles)
➢ \>: el final de una palabra. (Debe utilizarse entre comillas simples o dobles)
➢ \ |: el operador OR para unir dos expresiones regulares, de forma que la expresión regular resultante
representa a cualquier cadena que coincida con al menos una de las dos subexpresiones. (La
expresión global debe ir entre comillas simples o dobles; además, cuando se usa con grep, esta orden
debe ir acompañada de la opción -E)
Ejemplo: Buscar en el directorio /etc los archivos de configuración que contengan la palabra “dev”:
La orden find se utiliza con la opción -regex para especificar que se buscan nombres de archivos que
satisfagan la expresión regular proporcionada después de esta opción. Si no se utiliza la opción -regex, los
símbolos se interpretarán como metacaracteres y no como parte de una expresión regular.