Sistema Operativo Unix
domingo, 28 de junio de 2015
PERMISOS DE ARCHIVOS
Todos los archivos pertenecen obligatoriamente a un
usuario y a un grupo. Cuando un usuario crea un nuevo archivo, el propietario
del archivo será el usuario que lo ha creado y el grupo del archivo será el
grupo principal de dicho usuario.
Ejemplo, si un usuario llamado 'pepe' cuyo grupo principal es el grupo 'profesores' crea un nuevo archivo, el propietario del archivo será 'pepe' y el grupo propietario del archivo será 'profesores', o lo que es lo mismo, el archivo pertenecerá al usuario pepe y al grupo profesores. Obligatoriamente, todos los archivos del sistema pertenecen a algún usuario y a algún grupo.
Con el comando ls añadiendo la opción -l (formato largo) podemos visualizar el usuario propietario y el grupo propietario del archivo, ejemplo:
Ejemplo, si un usuario llamado 'pepe' cuyo grupo principal es el grupo 'profesores' crea un nuevo archivo, el propietario del archivo será 'pepe' y el grupo propietario del archivo será 'profesores', o lo que es lo mismo, el archivo pertenecerá al usuario pepe y al grupo profesores. Obligatoriamente, todos los archivos del sistema pertenecen a algún usuario y a algún grupo.
Con el comando ls añadiendo la opción -l (formato largo) podemos visualizar el usuario propietario y el grupo propietario del archivo, ejemplo:
Mostrar el propietario con el comando ls -l
Comprobamos que el usuario propietario es pepe y
el grupo propietario es profesores. La misma información podemos verla
desde el administrador de archivos si vamos a la carpeta /home/pepe y mostramos
las columnas correspondientes:
Navegador de archivos
Tipos de permisos
En los Sistemas Linux, la gestión de los permisos que
los usuarios y los grupos de usuarios tienen sobre los archivos y las carpetas,
se realiza mediante un sencillo esquema de tres tipos de permisos que son:
- Permiso de lectura (r)
- Permiso de escritura (w)
- Permiso de ejecución (x)
El significado de estos permisos difiere si se tienen
sobre archivos o sobre carpetas. A continuación veremos el significado para
cada uno de los casos:
Permiso de lectura (r)
Cuando un usuario tiene permiso de lectura de un
archivo significa que puede leerlo o visualizarlo, bien sea con una aplicación
o mediante comandos. Ejemplo, si tenemos permiso de lectura sobre el archivo
examen.txt, significa que podemos ver el contenido del archivo. Si el usuario
no tiene permiso de lectura, no podrá ver el contenido del archivo.
Cuando un usuario tiene permiso de lectura de una
carpeta, significa que puede visualizar el contenido de la carpeta, es decir,
puede ver los archivos y carpetas que contiene, bien sea con el comando 'ls' o
con un explorador de archivos como Konqueror. Si el usuario no tiene permiso de
lectura sobre la carpeta, no podrá ver lo que contiene.
El permiso de lectura se simboliza con la letra 'r' del inglés 'read'.
El permiso de lectura se simboliza con la letra 'r' del inglés 'read'.
Permiso de escritura (w)
Cuando un usuario tiene permiso de escritura sobre un
archivo significa que puede modificar su contenido, e incluso borrarlo. También
le da derecho a cambiar los permisos del archivo mediante el comando chmod así
como cambiar su propietario y el grupo propietario mediante el comando chown.
Si el usuario no tiene permiso de escritura, no podrá modificar el contenido
del archivo.
Cuando un usuario tiene permiso de escritura sobre una
carpeta, significa que puede modificar el contenido de la carpeta, es decir,
puede crear y eliminar archivos y otras carpetas dentro de ella. Si el usuario
no tiene permiso de escritura sobre la carpeta, no podrá crear ni eliminar
archivos ni carpetas dentro de ella.
El permiso de escritura se simboliza con la letra 'w' del inglés 'write'.
El permiso de escritura se simboliza con la letra 'w' del inglés 'write'.
Permiso de ejecución (x)
Cuando un usuario tiene permiso de ejecución de un
archivo significa que puede ejecutarlo. Si el usuario no dispone de permiso de
ejecución, no podrá ejecutarlo aunque sea una aplicación.
Los únicos archivos ejecutables son las aplicaciones y
los archivos de comandos (scripts). Si tratamos de ejecutar un archivo no
ejecutable, dará errores.
Cuando un usuario tiene permiso de ejecución sobre una carpeta, significa que puede entrar en ella, bien sea con el comando 'cd' o con un explorador de archivos como Konqueror. Si no dispone del permiso de ejecución significa que no puede ir a dicha carpeta.
El permiso de ejecución se simboliza con la letra 'x' del inglés 'eXecute'.
Cuando un usuario tiene permiso de ejecución sobre una carpeta, significa que puede entrar en ella, bien sea con el comando 'cd' o con un explorador de archivos como Konqueror. Si no dispone del permiso de ejecución significa que no puede ir a dicha carpeta.
El permiso de ejecución se simboliza con la letra 'x' del inglés 'eXecute'.
¿A quién se puede otorgar permisos?
Los permisos solamente pueden ser otorgados a tres
tipos o grupos de usuarios:
- Al usuario propietario del
archivo
- Al grupo propietario del
archivo
- Al resto de usuarios del
sistema (todos menos el propietario)
Se pueden dar permisos de lectura, escritura,
ejecución ó combinación de ambos al usuario propietario del archivo, al grupo
propietario del archivo o al resto de usuarios del sistema. En Linux no existe
la posibilidad de asignar permisos a usuarios concretos ni a grupos concretos,
tan solo se puede asignar permisos al usuario propietario, al grupo propietario
o al resto de usuarios.
Ejemplo, si disponemos de un archivo llamado
'examen.txt' cuyo propietario es 'pepe' y cuyo grupo propietario es
'profesores', se pueden dar permisos de lectura, escritura, ejecución ó
combinación de ambos al usuario 'pepe', al grupo 'profesores' y al resto de
usuarios, pero no podremos dar permisos a otros usuarios distintos de pepe
(juan, luis, pedro,...) ni a otros grupos (alumnos, directivos, personal,...)
ya que el esquema Linux no lo permite.
Supongamos que la siguiente figura representa los permisos de examen.txt:
Supongamos que la siguiente figura representa los permisos de examen.txt:
Permisos de archivo
El usuario propietario (pepe) podrá leer y escribir en
el documento. Los pertenecientes al grupo profesores podrán leerlo y el resto
no podrá hacer nada.
Si deseo que otros usuarios tengan algún permiso sobre el archivo 'examen.txt', no me quedará más remedio que incluirlos en el grupo profesores u otorgar el permiso al resto de usuarios pero si hago esto último, absolutamente todos los usuarios del sistema gozarán del permiso, por eso no se recomienda salvo que eso sea nuestra intención.
Para poder cambiar permisos sobre un archivo, es necesario poseer el permiso de escritura sobre el mismo. El usuario root puede modificar los permisos de cualquier archivo ya que tiene acceso total sin restricciones a la administración del sistema.
Si deseo que otros usuarios tengan algún permiso sobre el archivo 'examen.txt', no me quedará más remedio que incluirlos en el grupo profesores u otorgar el permiso al resto de usuarios pero si hago esto último, absolutamente todos los usuarios del sistema gozarán del permiso, por eso no se recomienda salvo que eso sea nuestra intención.
Para poder cambiar permisos sobre un archivo, es necesario poseer el permiso de escritura sobre el mismo. El usuario root puede modificar los permisos de cualquier archivo ya que tiene acceso total sin restricciones a la administración del sistema.
Visualizar los permisos de un archivo o carpeta
Con el comando ls -l podemos visualizar los
permisos de los archivos o carpetas. Al ejecutar el comando aparecen todos los
archivos, uno por línea. El bloque de 10 caracteres del principio simboliza el
tipo de archivo y los permisos.
Permisos de archivo
El primer carácter indica de qué tipo de archivo se
trata. Si es un guión '-' significa que se trata de un archivo normal, la letra
'd' significa que se trata de una carpeta (directory), la letra 'l' significa
que se trata de un enlace (link). Otros valores son s, p, b que se refieren a
sockets, tuberías (pipe) y dispositivos de bloque respectivamente.
Los 9 caracteres siguientes simbolizan los permisos del usuario propietario (3 caracteres), los permisos del grupo propietario (3 caracteres) y los permisos del resto de usuarios (3 caracteres). Vienen codificados con las letras r, w y x que se refieren a los permisos de lectura, escritura y ejecución. Si en lugar de aparecer dichas letras aparecen guiones significa que se carece de dicho permiso. Ejemplo, si los diez primeros caracteres son -rw-r----- significa que es un archivo normal, que el usuario propietario dispone de permisos de lectura y escritura pero no de ejecución, que el grupo propietario dispone tan solo de permiso de lectura y el resto de usuarios no dispone de ningún permiso. Veámoslo en la siguiente imagen:
Los 9 caracteres siguientes simbolizan los permisos del usuario propietario (3 caracteres), los permisos del grupo propietario (3 caracteres) y los permisos del resto de usuarios (3 caracteres). Vienen codificados con las letras r, w y x que se refieren a los permisos de lectura, escritura y ejecución. Si en lugar de aparecer dichas letras aparecen guiones significa que se carece de dicho permiso. Ejemplo, si los diez primeros caracteres son -rw-r----- significa que es un archivo normal, que el usuario propietario dispone de permisos de lectura y escritura pero no de ejecución, que el grupo propietario dispone tan solo de permiso de lectura y el resto de usuarios no dispone de ningún permiso. Veámoslo en la siguiente imagen:
Permisos de lectura y escritura para el propietario y
lectura para el grupo
En el siguiente ejemplo vemos que pepe tiene permiso
de lectura y escritura y que el resto solo tiene permiso de lectura tanto sobre
el archivo 'apuntes.doc' como sobre el archivo 'examen.txt'.
//
Visualización de permisos
ls -l
total 8
-rw-r--r-- 1 pepe profesores 359 2011-09-28 18:02 apuntes.doc
-rw-r--r-- 1 pepe profesores 11 2011-09-27 19:26 examen.txt
ls -l
total 8
-rw-r--r-- 1 pepe profesores 359 2011-09-28 18:02 apuntes.doc
-rw-r--r-- 1 pepe profesores 11 2011-09-27 19:26 examen.txt
Cambio de permisos
Para cambiar los permisos de un archivo o una carpeta
es necesario disponer del permiso de escritura (w) sobre dicho archivo o
carpeta. Para hacerlo, se utiliza el comando chmod. La sintaxis del comando
chmod es la siguiente:
chmod
[opciones] permiso nombre_archivo_o_carpeta
Los permisos se pueden representar de dos formas. La
primera es mediante las iniciales de a quién va dirigido el permiso (usuario=u,
grupo=g, resto=o (other)), seguido de un signo + si se quiere añadir permiso o
un signo - si se quiere quitar y seguido del tipo de permiso (lectura=r,
escritura=w y ejecución=x). Ejemplos:
// Dar
permiso de escritura al usuario propietario sobre el archivo 'examen.txt'
# chmod u+w examen.txt
// Quitar permiso de escritura al resto de usuarios sobre el archivo 'examen.txt'
# chmod o-w examen.txt
// Dar permiso de ejecución al grupo propietario sobre el archivo '/usr/bin/games/tetris'
# chmod g+x /usr/bin/games/tetris
// Dar permiso de lectura al grupo propietario sobre el archivo 'examen.txt'
# chmod g+r examen.txt
// Se pueden poner varios permisos juntos separados por comas
# chmod u+w,g-r,o-r examen.txt
// Se pueden poner varios usuarios juntos
# chmod ug+w examen.txt
# chmod u+w examen.txt
// Quitar permiso de escritura al resto de usuarios sobre el archivo 'examen.txt'
# chmod o-w examen.txt
// Dar permiso de ejecución al grupo propietario sobre el archivo '/usr/bin/games/tetris'
# chmod g+x /usr/bin/games/tetris
// Dar permiso de lectura al grupo propietario sobre el archivo 'examen.txt'
# chmod g+r examen.txt
// Se pueden poner varios permisos juntos separados por comas
# chmod u+w,g-r,o-r examen.txt
// Se pueden poner varios usuarios juntos
# chmod ug+w examen.txt
La segunda forma de representar los permisos es
mediante un código numérico cuya transformación al binario representaría la
activación o desactivación de los permisos. El código numérico está compuesto
por tres cifras entre 0 y 7. La primera de ellas representaría los permisos del
usuario propietario, la segunda los del grupo propietario y la tercera los del
resto de usuarios.
En binario, las combinaciones representan el tipo de permisos. El bit más a la derecha (menos significativo) se refiere al permiso de ejecución (1=activar y 0=desactivar). El bit central se refiere al permiso de escritura y el bit más a la izquierda se refiere al permiso de lectura. La siguiente tabla muestra las 8 combinaciones posibles:
Cód Binario Permisos efectivos
0 0 0 0 - - -
1 0 0 1 - - x
2 0 1 0 - w -
3 0 1 1 - w x
4 1 0 0 r - -
5 1 0 1 r - x
6 1 1 0 r w -
7 1 1 1 r w x
En binario, las combinaciones representan el tipo de permisos. El bit más a la derecha (menos significativo) se refiere al permiso de ejecución (1=activar y 0=desactivar). El bit central se refiere al permiso de escritura y el bit más a la izquierda se refiere al permiso de lectura. La siguiente tabla muestra las 8 combinaciones posibles:
Cód Binario Permisos efectivos
0 0 0 0 - - -
1 0 0 1 - - x
2 0 1 0 - w -
3 0 1 1 - w x
4 1 0 0 r - -
5 1 0 1 r - x
6 1 1 0 r w -
7 1 1 1 r w x
Si deseamos otorgar sólo permiso de lectura, el código
a utilizar es el 4. Si deseamos otorgar sólo permiso de lectura y ejecución, el
código es el 5. Si deseamos otorgar sólo permiso de lectura y escritura, el
código es el 6. Si deseamos otorgar todos los permisos, el código es el 7. Si
deseamos quitar todos los permisos, el código es el 0. Ejemplos:
// Dar todos
los permisos al usuario y ninguno ni al grupo ni al resto
chmod 700 examen.txt
// Dar al usuario y al grupo permisos de lectura y ejecución y ninguno al resto
chmod 550 examen.txt
// Dar todos los permisos al usuario y lectura y ejecución al grupo y al resto
chmod 755 /usr/bin/games/tetris
// Dar todos los permisos al usuario y de lectura al resto, sobre todos los archivos
chmod 744 *
// Cambiar permisos a todos los archivos incluyendo subcarpetas
chmod -R 744 *
chmod 700 examen.txt
// Dar al usuario y al grupo permisos de lectura y ejecución y ninguno al resto
chmod 550 examen.txt
// Dar todos los permisos al usuario y lectura y ejecución al grupo y al resto
chmod 755 /usr/bin/games/tetris
// Dar todos los permisos al usuario y de lectura al resto, sobre todos los archivos
chmod 744 *
// Cambiar permisos a todos los archivos incluyendo subcarpetas
chmod -R 744 *
Existe la posibilidad de cambiar los permisos
utilizando el explorador de archivos. Para ello tan solo hay que seleccionar
los archivos o carpetas y haciendo clic sobre la selección con el botón derecho
del ratón > Propiedades, nos aparecerá la ventana de propiedades. Haciendo
clic en la pestaña Permisos podremos establecer los permisos de una forma
sencilla y haciendo clic en 'Permisos avanzados' de una forma avanzada.
GESTION DE USUARIOS
CREACIÓN DE USUARIOS (useradd)
El comando useradd permite añadir un usuario
indicando como parámetros la información particular para crear el usuario en la
misma líne de comandos. La sintaxis es:
useradd [opciones] nombre-usuario
Entre las opciones más destacables tenemos:
- -g: Grupo principal que
queremos tenga el usuario (debe existir previamente)
- -d: Carpeta home del
usuario. Suele ser /home/nombre-usuario
- -m: Crear carpeta home
si es que no existe.
- -s: Intérprete de comandos
(shell) del usuario. Suele ser /bin/bash
Ejemplo, si deseamos crear un usuario llamado 'miguel'
cuyo grupo principal sea 'alumnos', cuya carpeta home sea /home/miguel y su
intérprete de comandos sea /bin/bash, ejecutaremos el siguiente comando:
// Crear un usuario
sudo useradd -g alumnos -d /home/miguel -m -s /bin/bash miguel
sudo useradd -g alumnos -d /home/miguel -m -s /bin/bash miguel
De esta manera habremos creado al usuario miguel y su
carpeta home. Si no utilizamos la opción -m, no se creará la carpeta home del
usuario; en tal caso tendríamos que crearla manualmente. Tan solo nos quedará
establecer su contraseña con el comando passwd:
//
Establecer la contraseña del usuario
sudo passwd miguel
sudo passwd miguel
Entonces el sistema nos preguntará dos veces la
contraseña que queremos asignar a miguel.
El comando useradd permite crear muchos usuarios automáticamente mediante archivos de comandos (scripts).
Se recomienda que el nombre de usuario sea en minúsculas y además de letras también puede contener números y algún signo como guiones normales y guiones bajos. Debemos recordar que Linux distingue entre mayúsculas y minúsculas, es decir, Janco es distinto de janco.
El comando useradd permite crear muchos usuarios automáticamente mediante archivos de comandos (scripts).
Se recomienda que el nombre de usuario sea en minúsculas y además de letras también puede contener números y algún signo como guiones normales y guiones bajos. Debemos recordar que Linux distingue entre mayúsculas y minúsculas, es decir, Janco es distinto de janco.
MODIFICACIÓN DE USUARIOS (usermod)
Se utiliza el comando usermod y permite cambiar
el nombre del usuario, su carpeta home, su intérprete de comandos, los grupos a
los que pertenece y algunos otros parámetros.
// Cambiar
el home de un usuario
sudo usermod -d /home/carpeta_miguel miguel
sudo usermod -d /home/carpeta_miguel miguel
ELIMINACIÓN DE USUARIOS (userdel)
Se realiza con el comando userdel seguido del
nombre del usuario. Con la opción -r eliminará también su carpeta home,
ejemplo:
//
Eliminación de un usuario
sudo userdel -r miguel
sudo userdel -r miguel
Eliminaría el usuario miguel y su carpeta home.
CREACIÓN DE GRUPOS (groupadd)
El comando groupadd permite añadir un grupo
indicando como parámetro el nombre del grupo. Ejemplo, si deseamos crear un
grupo llamado 'alumnos' ejecutaremos:
// Añadir un
grupo
sudo groupadd alumnos
sudo groupadd alumnos
MODIFICACIÓN DE GRUPOS
El comando groupmod permite modificar el nombre
de un grupo o el gid del mismo. La sintaxis es: sudo groupmod [-g nuevo-gid]
[-n nuevo-nombre] nombre-grupo, ejemplo:
// Cambiar
el gid del grupo profesores
sudo groupmod -g 2000 alumnos
sudo groupmod -g 2000 alumnos
ELIMINACIÓN DE GRUPOS (groupdel)
Se realiza con el comando groupdel seguido del
nombre del grupo, ejemplo:
//
Eliminación de un grupo
sudo groupdel alumnos
sudo groupdel alumnos
Eliminaría el grupo alumnos. Si algún usuario
tuviera dicho grupo como grupo primario, el comando groupdel no eliminará el
grupo.
AÑADIR USUARIOS A UN GRUPO (adduser)
Se utiliza el comando adduser seguido del
nombre del usuario y del nombre del grupo al que queremos añadirle, ejemplo:
// Añadir a
'juan' al grupo 'profesores'
sudo adduser juan profesores
sudo adduser juan profesores
QUITAR USUARIOS DE UN GRUPO (deluser)
Se utiliza el comando deluser seguido del nombre del
usuario y del nombre del grupo del que queremos quitarle, ejemplo:
// Quitar a
'juan' del grupo 'profesores'
sudo deluser juan profesores
sudo deluser juan profesores
Para más información de todos estos comandos se puede
consultar la ayuda del manual ejecutando man seguido del nombre del comando,
ejemplo man adduser.
jueves, 18 de junio de 2015
FILTROS PARA LINUX
Filtros:
Se da el
nombre de filtros a un grupo de comandos que leen alguna entrada, realizan una
transformación y escriben una salida(Ordenar, buscar dentro de un archivo de textos). Además de los que veremos aquí, incluye
comandos tales como head, tail, wc, y cut.
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ética, sigue el orden del
juego de caracteres ASCII. En este ordenamiento, los caracteres idiomáticos
(vocales acentuadas, ñ) no se encuentran en el orden alfabético 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.
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 último carácter del
último campo.
ordena según el código ASCII.
|
|
sort
-n arch2.num
|
ordena numéricamente.
|
sort -t: -k1,3 arch1.txt
|
ordena por campos separados por “:”,
tomando en cuenta para la comparación los caracteres desde el primero del
campo 1 hasta el último del campo 3.
|
sort -t: -k1.3,3.5 arch1.txt
|
ordena por campos tomando en cuenta
desde el 3er. caracter del campo 1 hasta el 5to. caracter del campo 3.
|
sort
-nr arch2.num
|
ordena en orden numérico
descendente.
|
sort
-k3 arch3.txt
|
ordena alfabéticamente, usando como
cadena de comparación la comprendida desde el primer caracter del 3er. campo
hasta el fin de lína. Como no se indica separador, los campos se definen por
blancos (espacio o tabulador).
|
FIND
El comando find explora
una rama de directorios buscando archivos que cumplan determinados criterios.
El comando find en GNU es extremadamente potente, permitiendo criterios de
búsqueda tales como:
- el nombre contiene cierta cadena de caracteres o aparea con algún patrón:
- son enlaces a ciertos archivos;
- fueron usados por última vez en un cierto período de tiempo;
- tienen un tamaño comprendido dentro de cierto intervalo;
- son de cierto tipo (regular, directorio, enlace simbólico, etc.);
- pertenecen a cierto usuario o grupo;
- tienen ciertos permisos de acceso;
- contienen texto que aparea 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 -atime +30 -print
busca archivos no
accedidos hace más de 30 días. La opción -atime se refiere a tiempo
transcurrido desde última lectura, -mtime desde última modificación de estado o
permisos, -ctime 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.
El comando grep (Global
Regular Expression and Print) permite buscar las líneas que contienen una
cadena de caracteres especificada mediante una expresión regular. Lee la
entrada estándar o una lista de archivos y muestra en la salida sólo aquellas
líneas que contienen la expresión indicada. La sintaxis es
grep patrón archivos
donde el patrón a buscar
es una expresión regular.
Crear un archivo con los
días de la semana, uno por línea; llamarle dias.
grep martes dias
grep tes dias
muestra las líneas del
archivo dias que contienen la cadena “tes”.
grep unix01 /etc/passwd
grep unix0[1-9] /etc/passwd
ls -l /usr | grep '^d'
lista sólo los
subdirectorios del directorio /usr (la línea empieza 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; tienen un * en el lugar de la contraseña; \ escapa el
significado del segundo *, que vale como caracter a buscar.
Ninguna
expresión regular de grep aparea con un caracter nueva línea; las expresiones
se aplican individualmente a cada línea.
Entre las
opciones de grep se cuentan -i para evitar distinguir entre mayúsculas de
minúsculas, -n para mostrar el número de línea y -v para buscar líneas que no
contengan la expresión regular indicada.
Hay dos versiones
de grep que optimizan la búsqueda en casos particulares:
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.
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.
fgrep martes dias
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 contiene
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.
Crear un archivo
buscar.fgrep con las cadenas “tes” y “jue”, una por línea. El comando
fgrep -f buscar.fgrep
dias
extrae del archivo dias
las líneas que contienen estas cadenas.
El comando grep soporta
fgrep y egrep como opciones -F y -E, respectivamente.
grep -F -f buscar.fgrep dias
egrep
"tes|jue" dias
grep -E
"tes|jue" dias
obtienen el mismo efecto
del comando anterior.
egrep
"([0-9]+ab)*1234" archivo
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.
Escribir grep -E es
similar a egrep, aunque no idéntico; egrep es compatible 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éntico a grep -F.
El comando
tr translitera los caracteres de la entrada: sustituye unos caracteres por
otros. La sustitución es caracter a caracter. Entre sus opciones se encuentran
-d para borrar caracteres; -c para sustituir complemento de los caracteres indicados,
es decir, que no sean ésos; y -s para comprimir caracteres repetidos en uno
solo.
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 nuevalínea, y comprime las
nuevalíneas repetidas en una sola; deja cada palabra sola en un renglón.
ls -l /usr | tr -s " " | cut -f3,4
comprime los blancos en
la salida para poder cortar campos.
Suscribirse a:
Entradas (Atom)