BASH - Tutorial 3 Expresiones Regulares RESUMEN CLASE

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 14

Tutorial BASH n°3

Comandos para uso de


expresiones regulares,
filtros y datos de usuario
Contenido
1. Introducción..................................................................................................................................3
2. Metacaracteres.............................................................................................................................3
2.1. Expresiones Regulares Básicas.............................................................................................3
2.2. Expresiones Regulares Extendidas........................................................................................4
3. Filtros............................................................................................................................................6
3.1. Comando sort.........................................................................................................................6
3.2. Comando find.........................................................................................................................6
3.3. Comando grep........................................................................................................................7
3.4. Comandos fgrep y egrep........................................................................................................8
3.5. Comando tr............................................................................................................................9
3.6. Comando uniq......................................................................................................................11
3.7. Comando cut........................................................................................................................11
3.8. Comando wc........................................................................................................................11
4. Comando id................................................................................................................................12
5. Comando stat.............................................................................................................................12
6. Variable IFS................................................................................................................................13
7. Declaración de variables.............................................................................................................13
1. Introducción
Las expresiones regulares (ER), o llamados también patrones, son una forma de describir cadenas de
caracteres. Las expresiones regulares permiten realizar búsquedas o sus tuciones de gran complejidad de
palabras o de conjuntos de un solo carácter, que cumplan ciertas condiciones.
Una expresión regular es un patrón que describe un conjunto de cadenas de caracteres. Por ejemplo, el
patrón aba*.txt describe el conjunto de cadenas de caracteres que comienzan con aba, con enen cualquier
otro grupo de caracteres, luego un punto, y finalmente la cadena txt. El símbolo * se interpreta como "0, 1 o
más caracteres cualesquiera".
Las expresiones regulares se construyen como las expresiones aritmé cas, usando operadores para combinar
expresiones más pequeñas. Analizaremos esos operadores y las reglas de construcción de expresiones
regulares, atendiendo siempre al conjunto de cadenas que representa cada patrón.

2. Metacaracteres.
La construcción de expresiones regulares depende de la asignación de significado especial a algunos
caracteres. En el patrón aba*.txt el carácter * no vale por sí mismo, como el carácter asterisco, sino que
indica un "conjunto de caracteres cualesquiera". Asimismo, el carácter ? no se interpreta como el signo de
interrogación sino que representa "un carácter cualquiera y uno solo". Estos caracteres a los que se asigna
significado especial se denominan "metacaracteres".
El conjunto de metacaracteres para expresiones regulares es el siguiente:
\^$.[]{}|()*+?
Estos caracteres, en una expresión regular, son interpretados en su significado especial y no como los
caracteres que normalmente representan. Una búsqueda que implique alguno de estos caracteres obligará a
u lizar el barra de escape \, como se hace para evitar la interpretación por el shell de los metacaracteres del
shell. En una expresión regular, el carácter ? representa "un carácter cualquiera"; si escribimos \?, estamos
representando el carácter ? tal cual, sin significado adicional.

2.1. Expresiones Regulares Básicas.


Una expresión regular determina un conjunto de cadenas de caracteres. Un miembro de este conjunto de
cadenas se dice que sa sface la expresión regular.
Expresiones Regulares de un sólo carácter.
Las expresiones regulares se componen de un conjunto de expresiones regulares elementales que se
sa sfacen con un único carácter:

Expresión Regular Representa

. (punto) expresión regular que representa un carácter cualquiera excepto nueva


línea <eol>
[abc] Expresión regular que representa el carácter a, b o c

[^abc] Expresión regular que representa un carácter que no sea a, b o c

[0-9][a-z][A-Z] Expresiones regulares de un carácter que representan un carácter entre el 0 y el


9, u carácter entre la a y la z y un carácter entre la A y la Z. El signo - indica un
intervalo de caracteres consecu vos.
\expre Expresión regular que sus tuye alguno de estos metacaracteres (expre se sus tuye por
cualquiera de estos metacaracteres: \ ^ $ . [ ] { } | ( ) * + ? para poder considerarlos como
carácter normal):
.*[\ cuando no están dentro de [ ]
^ al principio de la ER, o al principio dentro de [ ]
$ al final de una ER (puesto que ahí es donde ene valor especial)
/ usado para delimitar una ER

Los corchetes [ ] delimitan listas de caracteres individuales. Muchos metacaracteres pierden su significado si están dentro
de listas: los caracteres especiales. * [ \ valen por sí dentro de [ ]. Para incluir un carácter ] en una lista, colocarlo al principio;
para incluir un ^ colocarlo en cualquier lugar menos al principio; para incluir un - colocarlo al final.

Construcción de Expresiones Regulares.


Una Expresión Regular se construye con uno o más operadores que indican, cada uno, el carácter a buscar.
Los operadores más comunes y aceptados son los siguientes:
Operador Significado
c un carácter no especial concuerda consigo mismo
\c elimina significado especial de un carácter c; el \ escapa el significado especial

^ Representa el comienzo de la cadena (cadena nula al principio de línea). Por ejemplo ^[a-z] representa todas los párrafos
que comiencen en minúscula. Si va dentro de los corchetes, sirve para negar.

$ Representa el final de la cadena (cadena nula al final de línea)


. (punto) un carácter individual cualquiera
[...] uno cualquiera de los caracteres ...; acepta intervalos del po a-z, 0-9, A-Z (lista) [^...] un carácter
dis nto de ... ; acepta intervalos del po a-z, 0-9, A-Z
r* 0, 1 o más ocurrencias de la expresión regular r (repe ción)
r1r2 la expresión regular r1 seguida de la expresión regular r2 (concatenación)

Ejemplos de Expresiones Regulares Básicas.

a.b axb aab abb aSb a#b ...


a..b axxb aaab abbb a4$b ...
[abc] a b c (uno de esos caracteres)
[aA] a A (igual que el anterior, o la a o ala A)
[aA][bB] ab Ab aB AB (cadenas de dos caracteres)
[0123456789] 0 1 2 3 4 5 6 7 8 9
[0-9] 0 1 2 3 4 5 6 7 8 9
[A-Za-z] A B C ... Z a b c ... z
[0-9][0-9][0-9] 000 001 .. 009 010 .. 019 100 .. 999
[0-9]* cadena_vacía 0 1 9 00 99 123 456 999 9999 ...
[0-9][0-9]* 0 1 9 00 99 123 456 999 9999 99999 99999999 ...
^.*$ cualquier línea completa
2.2. Expresiones Regulares Extendidas.
Algunos comandos, como egrep o grep -E, aceptan Expresiones Regulares Extendidas, que comprenden las
Expresiones Regulares Básicas más algunos operadores que permiten construcciones más complejas. Los
operadores incorporados son los siguientes:

Operador Significado
r+ 1 o más ocurrencias de la ER r
r? 0 o una ocurrencia de la ER r, y no más
r{n} n ocurrencias de la ER r
r{n,} n o más ocurrencias de la ER r
r{,m} 0 o a lo sumo m ocurrencias de la ER r
r{n,m} n o más ocurrencias de la ER r, pero a lo sumo m
r1|r2 la ER r1 o la ER r2 (alterna va)
(r) ER anidada
"r" evita que los caracteres de la ER r sean interpretados por el shell
La repe ción ene precedencia sobre la concatenación; la concatenación ene precedencia sobre la
alterna va. Una expresión puede encerrarse entre paréntesis para ser evaluada primero.

Ejemplos de Expresiones Regulares Extendidas:

ER Extendidas Representa
[0-9]+ 0 1 9 00 99 123 456 999 9999 99999 99999999 ..
[0-9]? cadena_vacía 0 1 2 .. 9
^a|b a b
(ab)* cadena_vacía ab abab ababab ...
^[0-9]?b b 0b 1b 2b .. 9b
([0-9]+ab)* cadena_vacía 1234ab 9ab9ab9ab 9876543210ab 99ab99ab ...

Ejemplos de expresiones regulares

\* Representa el carácter *
. Representa cualquier carácter excepto el <eol> [a-f] Representa un carácter cualquiera
entre la a y la f
[A-Z] Cualquier letra mayúscula
[^a-d] Cualquier carácter que no sea una letra entra la a y la d
[a-z]* cualquier palabra escrita con minúsculas
[a-z][A-Z] cualquier palabra de dos letras, de las cuales la primera el minúscula y la segunda es mayúscula
^\(.*\)\1\1 Al comienzo de la línea, un campo formado por un carácter cualquiera que se repite las veces que
sea, volviendo a aparecer dos veces más antes de que acabe la línea.
^[a-z]* selecciona las líneas que sólo contengan letras minúsculas
^[a-z]\{3\}[^a-z]\{3\} selecciona las líneas que comienzan con tres minúsculas, terminan con tres caracteres
cualesquiera pero que no son minúsculas, y no ene ningún otro carácter entre medio
3. Filtros
Se da el nombre de filtros a un grupo de comandos que leen alguna entrada, realizan una transformación y
escriben una salida. Además de los que veremos aquí, incluye comandos tales como head, tail, wc y cut. Son
comandos que frecuentemente se u lizan con las tuberías.

3.1. Comando sort


La comparación u ordenación puede ser por caracteres ASCII o por valor numérico. La ordenación ASCII es la
más parecida a la alfabé ca; sigue el orden del juego de caracteres ASCII. En este ordenamiento, los
caracteres idiomá cos (vocales acentuadas, ñ) no se encuentran en el orden alfabé co tradicional. En la
ordenación numérica se respeta la ordenación por valor numérico de la cadena de caracteres: 101 va
después de 21; en ordenamiento ASCII sería al revés.

sort arch1 ordena según el código ASCII.


sort -n arch2.num ordena numéricamente.

Si no se indican campos de ordenación, la comparación se hace sobre toda la línea. Si se indican campos, la
comparación se hace considerando la cadena de caracteres iniciada en el primer carácter del primer campo
hasta el úl mo carácter del úl mo campo.

sort -t: -k1,3 f1.txt Ordena por campos separados por ":", tomando en cuenta para la comparación los
caracteres desde el primero del campo 1 hasta el úl mo del campo 3.
sort -t: -k1.3,3.5 f1.txt ordena por campos tomando en cuenta desde el 3er. carácter del campo 1 hasta el 5to.
Carácter del campo 3.
sort -nr f2.num ordena en orden numérico descendente.
sort -k3 f3.txt ordena alfabé camente, usando como cadena de comparación la comprendida desde el primer
carácter del 3er. campo hasta el fin de línea. Como no se indica separador, los campos se definen por blancos
(espacio o tabulador).

3.2. Comando find


El comando find explora una rama de directorios buscando archivos que cumplan determinados criterios. El
comando find en GNU es extremadamente potente, permi endo criterios de búsqueda tales como:
∙ el nombre con ene cierta cadena de caracteres o coincide con algún patrón,
∙ son enlaces a ciertos archivos;
∙ fueron usados por úl ma vez en un cierto período de empo;
∙ enen un tamaño comprendido dentro de cierto intervalo;
∙ son de cierto po (regular, directorio, enlace simbólico, etc.);
∙ pertenecen a cierto usuario o grupo;
∙ enen ciertos permisos de acceso;
∙ con enen texto que coincide con cierto patrón.

Una vez ubicados los archivos, find puede realizar diversas acciones sobre ellos:
∙ ver o editar;
∙ guardar sus nombres en otro archivo;
∙ eliminarlos o renombrarlos;
∙ cambiar sus permisos de acceso;
∙ clasificarlos por grupos.

find /var -name *.log –print busca en el directorio /var los archivos terminados en .log, imprime sus nombres
en la salida.

find /tmp -size +200k –print busca archivos mayores de 200k. En los argumentos numéricos, +N es mayor que
N, -N es menor que N, N es exactamente igual a N.
find /var/spool/mail -a me +30 –print busca archivos no accedidos hace más de 30 días. La opción - a me se
refiere a empo transcurrido desde úl ma lectura, - m me
desde úl ma modificación de estado o permisos, -
c me de contenido.
find /var/tmp -empty -exec rm {} \; busca archivos vacíos y los borra.

find /home -nouser –ls busca archivos en los cuales en lugar del nombre de usuario dueño aparece un
número (UID). Esta situación se da cuando la cuenta de usuario
ha sido borrada pero han permanecido los archivos creados por
ese usuario.

3.3. Comando grep


El comando grep (Global Regular Expression and Print) permite buscar las líneas que con enen una cadena
de caracteres especificada mediante una expresión regular.
Este comando rastrea el fichero por fichero imprimiendo aquellas líneas que con enen el conjunto de
caracteres buscado. Si el conjunto de caracteres a buscar está compuesto por dos o más palabras separadas
por un espacio, se colocará el conjunto de caracteres entre apóstrofes (‘).
La sintaxis es:
grep patrón fichero1 fichero2 …
donde el patrón a buscar es una expresión regular a buscar y fichero1, fichero2 … son el conjunto de conjunto
de archivos donde se va a buscar.
De manera general, la el formato de grep es:
grep [-opcion] expresión_regular [referencia]
Las opciones principales son:
c lo único que hace es escribir el número de las líneas que sa sfacen la condición

i no se dis ngue mayúsculas y minúsculas


l se escriben los nombre de los ficheros que con enen las líneas buscadas
n cada línea es precedida por su número en el fichero
s no se vuelcan los mensajes que indican que un fichero no se puede abrir
v se muestran sólo las líneas que no sa sfacen el criterio de selección

Veamos a con nuación una serie de ejemplos:


Suponiendo que tenemos un fichero de nombre días, donde cada línea con ene cada día de la semana, la
ejecución del comando grep sobre ese archivo daría las siguientes salidas.
grep martes días muestra la línea donde está martes
grep tes días muestra las líneas del archivo dias que con enen la cadena "tes".
Otros ejemplos de ejecución son:
grep unix01 /etc/passwd
grep unix0[1-9] /etc/passwd
ls -l /usr | grep '^d' lista sólo los subdirectorios del directorio /usr cuyas líneas empiecen con"d".
ls -l / | grep '.......rw' lista sólo los archivos que otros pueden leer y escribir en el directorio principal.

grep '^[^:]*::' /etc/passwd busca usuarios sin contraseña; caracteres al principio de línea que no sean ":", y
luego "::" (el segundo lugar, que es el de la contraseña, está
vacío).

grep '^[^:]*:\*:' /etc/passwd busca usuarios que no pueden entrar al sistema; enen un * en el lugar de la
contraseña; \ escapa el significado del segundo *, que vale como
carácter a buscar.
grep ‘^d’ text busca las líneas que empiecen por d en el fichero text. grep ‘^[^d]’ text busca las líneas que

no comienzan por d en el fichero text

grep –v ‘^C’ fich1 > fich2 quita las líneas de fich1 que comienzan por C y lo copia en fich2

3.4. Comandos fgrep y egrep


Hay dos versiones de grep que op mizan la búsqueda en casos par culares:
fgrep (fixed grep, o fast grep) acepta solamente una cadena de caracteres, y no una expresión regular,
aunque permite buscar varias de estas cadenas simultáneamente.
egrep (extended grep), que acepta expresiones regulares extendidas con los operadores + ? | y paréntesis.
El comando fgrep no interpreta metacaracteres, pero puede buscar muy eficientemente muchas palabras en
paralelo, por lo que se usa mucho en búsquedas bibliográficas; egrep acepta expresiones más complejas,
pero es más lento; grep es un buen compromiso entre ambos.
Por ejemplo:
fgrep martes días busca la cadena martes en el archivo dias.
En fgrep y egrep puede indicarse la opción -f buscar.exp, donde buscar.exp es un archivo que con ene la
expresión a buscar: cadenas simples para fgrep, expresiones regulares para egrep, separadas por nueva línea;
las expresiones se buscan en paralelo, es decir que la salida serán todas las líneas que contengan una
cualquiera de las expresiones a buscar.
Para comprobar la funcionalidad de fgrep, vamos a crear un archivo buscar.fgrep que contenga las cadenas
"tes" y "jue", una por línea.
Ejemplo;
fgrep -f buscar.fgrep días extrae del archivo dias las líneas que con enen estas cadenas.
El comando grep soporta fgrep y egrep como opciones -F y -E, respec vamente.
∙ La opción –E hace que se interprete el patrón como un expresión regular extendida. ∙ Las opción –F
hace que se interprete el patrón como una lista de cadenas fijas, separadas por retornos de carro (nueva
línea).
∙ La opción –f ob ene los patrones de búsqueda del fichero que se le pasa con expresiones regulares.
Por ejemplo, las tres ejecuciones siguientes, ob enen el mismo efecto que el comando indicado
anteriormente.
grep -F -f buscar.fgrep dias
egrep "tes|jue" dias
grep -E "tes|jue" días

La ejecución de egrep siguiente, busca cadenas comenzadas opcionalmente por un dígito y los caracteres ab,
todo el paréntesis 0 o más veces, y hasta encontrar la cadena 1234.
egrep "([0-9]+ab)*1234" archivo
Escribir grep -E es similar a egrep, aunque no idén co; egrep es compa ble con el comando histórico egrep;
grep -E acepta expresiones regulares extendidas y es la versión moderna del comando en GNU. fgrep es
idén co a grep -F.
3.5. Comando tr
El comando tr dado un flujo de datos (entrada estándar) nos permite modificarlos sus tuyendo y/o borrando
caracteres. La sus tución es carácter a carácter.
La sintaxis de este comando:
tr [opción] .. SET1 [SET2]
donde opción puede ser:
-d Borra los caracteres indicados en SET1
-s Elimina o reemplaza los caracteres repe dos indicados en SET1 -

-c Todos los caracteres que no sean los indicados en SET1 y los convierte en SET2 -

-t Trunca SET1 a la longitude de SET2

Sus tución

En su forma más simple, podemos sus tuir un carácter por otro, por ejemplo, podemos transformar todas las
vocales en mayúsculas.
$ echo murcielago | tr aeiou AEIOU
Daría como resultado mUrcIElAgO
En esta ocasión hemos ejecutado el comando tr sin ningún argumento, 'aeiou' seria SET1 y 'AEIOU'
correspondería a SET2.
La sus tución se realiza a pares, el primer carácter de SET1 será reemplazado por el primer carácter de SET2,
el segundo con el segundo y así hasta el final.
Si no ene la mism longituda SET1 y SET2, la salida cambia.
$ echo murcielago | tr aeiou AE
mErcEElAgE

$ echo murcielago | tr aeiou AE.


m.rc.ElAg.

$ echo murcielago | tr ae AEIOU


murciElAgo

Borrar
El borrado de caracteres es más fácil de usar. En este caso solo necesitamos SET1, para indicar que caracteres
queremos borrar.
En el siguiente ejemplo borraremos las letras 'a' y 'e' de la palabra 'murcielago'. $
echo murcielago | tr -d ae
Daría como resultado murcilgo
Sus tuir con negados
Si u lizamos la opción -c, el comando localizará todos los caracteres que no coincidan con el patrón dado en
SET1 y los reemplazara por sus correspondientes en SET2.
$ echo 'naci el 13-12-1986' | tr -c '0123456789' '-'
--------13-12-1986-
El comando tr ha subs tuido por un guion cualquier carácter que no fuera un número. Pues eso ha hecho, el
salto de línea aunque invisible también es tenido en cuenta como un carácter.
Secuencias válidas
El comando reconoce los siguientes caracteres no visibles.
\NNN carácter con valor octal NNN (de uno a tres dígitos)
\\ barra inver da
\a pi do audible (BELL)
\b espacio hacia atrás
\f salto de página
\n salto de línea
\r retorno de carro
\t tabulación horizontal
\v tabulación ver cal
El comando ls sin argumentos, nos devuelve una lista tabulada por columnas con el nombre de los archivos
de un directorio determinado, con tr podemos modificar la salida del comando ls para obtener una lista con
un elemento por línea.
$ ls |tr '\t' '\n'
gedit.banyut.1053685335
kde-banyutyHf1n2
keyring-GLhk1g
ksocket-banyut
orbit-banyut
orbit-root
plugtmp
pulse-banyut
screenlets
seahorse-7f0yeD
Tracker-banyut.8264
virtual-banyut.F7zFmY

Hemos subs tuido los tabuladores por saltos de línea, también podríamos cambiar las barras de un path. $
echo '\banyut\tmp\' |tr '\\' '/'
/banyut/tmp/
Ejemplos de uso de tr
cat dias | tr a-z A-Z convierte todo a mayúsculas.
cat dias | tr -d aeiou borra todas las vocales del archivo dias.

Agregar al archivo dias líneas en blanco, varias seguidas, intercaladas entre los nombres de los días. cat
dias
cat dias | tr -s "\n*" convierte varios caracteres nueva línea seguidos en una solo; elimina renglones en
blanco.

cat nota | tr -c "[a-zA-Z0-9]" "_" transforma todos los caracteres que no sean letras o números en subrayas.
cat nota | tr -cs "[a-zA-Z0-9]" "[\n*]" transforma todos los caracteres que no sean letras o números en nueva
línea, y comprime las nueva líneas repe das en una sola; deja cada palabra sola en un renglón.
ls -l /usr | tr -s " " | cut -d " " -f 3,4 comprime los blancos en la salida para poder cortar campos.
3.6. Comando uniq
El comando uniq excluye todos los renglones adyacentes duplicados menos uno; es decir, elimina renglones
repe dos consecu vos. La sintaxis es la siguiente:
uniq [OPCION]... [ENTRADA [SALIDA]]
Este comando muestra una única línea para una entrada ordenada, eliminando líneas repe das sucesivas.
Opcionalmente, puede mostrar solo líneas que aparecen una vez, o sólo líneas que aparecen varias veces. La
entrada debe estar ya ordenada; si no lo está, se puede usar sort -u para lograr un efecto similar.
Las opciones de uniq son:
-f N salta N campos antes de verificar unicidad.
-s N salta N caracteres antes de verificar unicidad.
-c indicar junto a cada línea el número de veces que aparece. -i ignorar
mayúsculas y minúsculas al comparar.
-d mostrar sólo líneas repe das. -u mostrar sólo líneas únicas.

El siguiente ejemplo muestra las 5 palabras más frecuentes en el conjunto de archivos: cat
*.txt | tr -sc A-Za-z '\012' | sort | uniq -c | sort -n | tail 5
cat lista todos los archivos, tr comprime el renglón eliminando blancos, sort los ordena, uniq cuenta las
ocurrencias y elimina repe dos, sort -n ordena por can dad de ocurrencias y tail muestra las 5 ocurrencias
más frecuentes.

3.7. Comando cut


El comando cut se u liza para poder cortar caracteres y campos, con la posibilidad de usar delimitadores y
otras opciones, para extraer las partes seleccionadas de cada fichero en la salida estándar. La sintaxis de este
comando es la siguiente:
cut opción … [fichero] …
Las opciones más importantes son:
-b –bytes=LISTA muestra solamente estos bytes
-c –characters=LISTA selecciona solamente estos caracteres
-d –delimiter=DELIM usa DELIM en vez de caracteres de tabulación para delimitar los campos.
-f –fields=LISTA selecciona solamente estos campos; también muestra cualquier línea que no tenga un
carácter delimitador, a menos que se especifique la opción
–s –complement complementa el conjunto de bytes, caracteres o campos seleccionados.
-s –only-delimited no muestra las líneas que no con enen delimitadores
Por ejemplo, suponiendo que se ene la siguiente línea de texto, y solamente se quiere la 3ª y la 6º palabras:
foo,bar,baz,stuff,blah,oogabooga
Se podría probar el comando cut:
cut -d',' -f 3,6 y el resultado sería: baz,oogabooga

3.8. Comando wc
El nombre del comando wc proviene de word count, y como es de suponer, sirve para contar palabras. Pero
no sólo palabras como se verá a con nuación. Su sintaxis es como sigue:
wc [opción] [archivo …]
Si se omite el argumento archivo, wc tomará los datos (naturalmente) de la entrada estándar. La
lista de opciones más importantes es la siguiente:
-c Contar bytes.
-l Contar líneas.
-w Contar palabras.
Como ejemplo, se pueden contar las líneas del archivo /etc/passwd y de esta manera se sabrán rápidamente
cuántos usuarios ene definidos el sistema:
usuario@maquina:~/$ wc -l /etc/passwd
32 /etc/passwd

4. Comando id
El comando id muestra el ID real y efec vo del usuario y del grupo. La sintaxis del comando es la siguiente: id
[OPCION]... [USUARIO]
La salida del comando imprime información sobre el usuario y el grupo para el USUARIO especificado, si se
omite el nombre del usuario, se muestra el resultado para el usuario actual.
Las opciones más importantes son las siguientes:

-g, --group muestra solo el ID efec vo del grupo


-G, --groups muestra todos los ID de todos los grupos
-u, --user muestra solo el ID efec vo del usuario
Relacionado con este comando nos encontramos las variables de entorno:
$UID
que indica el número de usuario. Hay que recordar que el usuario root ene un UID, GID con valor 0.

5. Comando stat
El comando stat muestra información sobre el estado de un fichero o del sistema de ficheros. Su
sintaxis es la siguiente:
stat [OPCION]... FICHERO...

-f, --file-system muestra el estado del fichero.


-c --format=FORMAT u liza el formato indicado, en su caso el formato por defecto.
Las secuencias de formato valido son las siguientes:

%a Derechos de acceso en octal

%A Derecho de acceso al fichero.

%d Número de disposi vo en decimal

%F Tipo de archivo
%g ID del grupo de propietario

%G Nombre del grupo del propietario

%n Nombre del fichero

%s Tamaño total en bytes

%u ID del usuario propietario

%U Nombre de usuario del propietario

%x Tiempo del úl mo acceso

%y Tiempo de la úl ma modificación

6. Variable IFS
Esta variable define el carácter separador que se u liza para separar campos dentro de un fichero. Por
ejemplo IFS es “:” dentro del fichero /etc/passwd, ya que este carácter es el que se u liza para separar los
diferentes campos de cada fila. Esta variable puede modificar igual que cualquier otra.
Podemos acceder a su contenido con echo $IFS, y podemos cambiar el valor separador por defecto de la
siguiente forma:
antIFS=$IFS
IFS=”-“
De forma que en la variable antIFS mantenemos el separador predeterminado, y puntualmente definimos “-“
como nuevo separador.

7. Declaración de variables.
Cuando declara una variable dentro de un shell-script, por ejemplo si introducido la siguiente línea de código
X=343
se está creando una variable de nombre X que almacena el valor 343. Si queremos mostrar su contenido
podemos ejecutar
echo $X
mostrándose 343
Esta variable es una variable global al shell, pero local a él. Es decir, la variable X puede ser accedida a través
de todo el shell, pudiendo comprobar y modificar su contenido. Esta variable es, sin embargo global al shell
donde se u liza. Si queremos que sea accesible por otros Shell que queramos u lizar, podemos conver rla en
global u lizando el comando export
export X=343

de esta forma, la variable X puede ser accedida y modificado desde el entorno BASH. Si nos interesa definir
variables locales a una función, se u liza el comando local de la siguiente forma
function mi_funcion ()
{
local variable_local=34
echo $variable_local
}
La variable variable_local ene como ámbito solo la función mi_funcion, no pudiendo ser accesible desde
fuera de la función donde se declara y u liza.

También podría gustarte