Repaso Comandos Linux
Repaso Comandos Linux
Índice de contenidos
1. Comando cat
Por defecto manda el resultado a la salida estándar del sistema, pero también se puede mandar la salida a otro
fichero.
2. Comando grep
El comando grep busca patrones (cadena de texto) en ficheros. Por defecto devuelve todas las líneas que
contienen un patrón determinado en uno o varios ficheros.
# Muestra todas las líneas del fichero passwd que contienen sistemas
El comando grep así como todos los comando de linux admiten opciones, y en función de la opción el comando
se comporta de una manera u otra, veamos dos opciones muy utilizadas:
# Muestra todas las líneas excepto las que contienen el patrón sistemas
3. Comando cut
Este comando corta caracteres o campos de la información sobre la que actúa. Para que corte caracteres se
utiliza las opción -c. Veamos ejemplos:
# De todas las lineas del fichero passwd sólo mostraría del primer
carácter al quinto
Para que corte campos se utiliza las opción -d para definir el saparador de campo y -f para indicar el campo que
queremos. Veamos ejemplos:
# cat manda el contenido del fichero passwd al comando grep y este solo
muestra las lineas que tienen sistemas
# cat manda el contenido del fichero passwd al comando grep y manda solo
las líneas que contienen sistemas al comando cut quien coge solo el
campo 3 de esas líneas
El comando sort ordena la información que se pase mostrándolas por la salida estándar.
#Muestra por salida el contenido de passwd pero ordenado alfabeticamente
sort /etc/passwd
sort -r /etc/passwd
2. 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. De no especificarse un fichero toma la entrada estándar.
uniq lista.txt
-c Muestra las líneas y por delante el número de veces que se repite cada una
3. Comando tr
cat fichero.txt | tr a 1
tr A-z a fichero.txt
cat fichero.txt | tr -d a
#Si existe caracteres repetidos seguidos solo deja uno. Esta opción se
utiliza mucho para eliminar espacios en blanco.
cat fichero.txt | tr -s
-q no coloca los encabezamientos con el nombre de los ficheros cuando se indican varios ficheros.
-<n> imprime las n últimas (tail) o primeras (head) líneas en lugar de las diez establecidas por defecto.
Ejemplos:
tail -f /var/log/messages
5. Comando wc
El comando wc (Word Count) 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.
-l Cuenta líneas
-m Cuenta caracteres
-w Cuenta palabras
wc -l /etc/passwd
El comando find sirve para buscar archivos y directorios que cumplas unos criterios.
Sintaxis de find
La [ruta] es cualquier directorio o path que se quiera indicar y desde donde inicia la búsqueda, ejemplos pueden
ser "/etc", "/home/sergio", "/", "." es posible indicar más de un directorio de búsqueda.
Los tres argumentos anterior son enteramente opcionales. La diferencia entre find sin más opciones y ls es que
find incluye por defecto ficheros ocultos y la búsqueda es recursiva, es decir busca en los subdirectorios.
El siguiente ejemplo busca todos los archivos cuyo nombre sea "reporte" desde la raíz:
find / -iname Reporte (lo mismo, pero sin tomar en cuenta mayúsculas y
minúsculas)
Búsqueda desde la raíz del sistema de todos los ficheros y directorios con el nombre "linux", con formato ls:
Busca bajo /home todos los archivos que pertenezcan al usuario mario
No estás limitado a un solo directorio, indica más de uno a buscar antes de las expresiones:
(busca en tres directorios todos los archivos o subdirectorios que pertenezcan al grupo 'admin')
La sintaxis es:
n son argumentos numéricos, estos pueden ser indicados de tres maneras posibles:
Buscar todos los archivos que hayan cambiado en los últimos 30 minutos:
O si deseas buscar en un rango específico de minutos, con este ejemplo buscarías todos los directorios que hayan
cambiado hace más de 10 minutos (+10) y menos de 30 (-30)
4. Opciones de tiempo
-c – Busca ficheros que se han modificado el estado del fichero (por ejemplos sus permisos)
find . -ctime +1 (busca archivos cuyo status haya cambiado hace más de
48 horas)
find también incluye operadores booleanos que la hace una herramienta aún más útil:
Busca todos los archivos que comiencen con 'ventas' Y que hayan sido modificados o cambiados en las últimas
dos horas (120 minutos).
Busca todos los archivos que comiencen con 'reporte' y después siga un _ o un - y que NO pertenezcan al usuario
sergio.
find /home -iname '*enero*' -or -group gerentes
Busca todos los archivos que contengan la palabra enero, Enero, ENERO, etc. (sin importar si lleva mayúsculas o
minúsculas) O cualquier otro archivo que encuentre que pertenezca al grupo 'gerentes'.
Una de las actividades básicas de un administrador de sistemas Linux es monitorear el tamaño de archivos,
sobre todo de usuarios. Con find es muy fácil realizar búsquedas por tamaño, se indica con la opción -size, se
aplican las mismas reglas para argumentos numéricos (+n -n n).
Busca en tu home todos los archivos menores a 800 bytes (799 realmente)
c = bytes
w = 2 byte words
k = kilobytes
b = 512-byte bloques
7. Nivel de recursividad
Find por defecto es recursivo, busca en los directorios indicados, en los subdirectorios de estos… así hasta
recorrer todo el árbol.
find -maxdepth 0
8. Parámetro -exec
-exec permite ejecutar acciones sobre el resultado de cada línea o archivo devuelto por find, o en otras palabras
permite incorporar comandos externos para ejecutar sobre cada resultado devuelto. Muy interesante. Así por
ejemplo, si queremos buscar todos los archivos mayores a 3 megas en /var y además mostrar su salida en
formato ls, podemos hacer lo siguiente:
Después de ls -lh que nos devuelve una salida formateada de ls se indica la cadena '{}' que se sustituye por cada
salida de find.
No hay límite para lo que se puede lograr, a si por ejemplo, borrar todo lo mayor a un mega en /tmp.
El editor en línea (stream editor) sed es un editor de texto en línea que realiza operaciones de edición sobre
datos provenientes desde un archivo o desde el "standard input". sed edita línea por línea en un modo no
interactivo.
El resultado o salida de sed es enviado por defecto a la pantalla. O si es redireccionado será enviado a la archivo
que indiques.
1. Modos básicos:
Ya que sabemos que sed envía su resultado a la pantalla por defecto, podemos usarlo como un visor (o lector)
de archivos :
2. Eliminando texto
Se puede fácilmente realizar operaciones de borrado o eliminación de texto tan solo cambiando el comando p
por el comando d (delete, borrar en inglés).
Cuando se trabaja con el comando d ya no es necesario indicar la opción -n porque al utilizar el comando
"delete" sed mostrará en pantalla todo lo que NO ha sido eliminado, que ayuda a darse cuenta que esta
sucediendo.
Elimina la línea 4, pero resultado en pantalla es que se mostrará las líneas 1 a 3 y de la 5 en delante
3. Conociendo la opción -i
En los dos ejemplos previos, es muy IMPORTANTE hacer notar que el archivo original no está siendo afectado
en lo absoluto, continua intacto, nada se eliminó en el original. Las ediciones o eliminaciones de línea en este
caso son el resultado enviado a pantalla
El uso de la opción -i puede ser peligrosa. Afortunadamente, sed nos da la opción de crear un respaldo del
archivo antes de editar el mismo.
Esto creará un archivo de respaldo (backup) con la extensión ".bkp" y solo después editará el archivo indicado.
Por supuesto que puedes indicar lo que gustes como extensión.
4. Sustitución de texto
El uso más conocido de sed es la sustitución de texto. sed tiene la habilidad de buscar por patrones de texto
usando expresiones regulares y sustituir o reemplazar el text encontrado.
En su forma más simple, es posible sustituir una palabra por otra usando la siguiente sintaxis:
s es el comando que indica "sustituir" o reemplazar. Las 3 diagonales / son usadas para separas los distintos
campos. Es posible cualquier otro carácter para delimitar los campos (el que siga del comando s) si eso es más
conveniente según el caso.
Por ejemplo, si estamos cambiando el nombre de un ditio web, entonces utilizar otro delimitador será más
conveniente ya que los URLs contienen diagonales. En este ejemplo utilizaremos _ en vez de / como delimitador.
Y también usaremos el comando echo para canalizar | (pipe) su salida a sed
http://www.example.org/home.html
Cuando en una línea hay más de una ocurrencia de la palabra que queremos sustituir hay que poner g al final
cat -n archivo.txt
Por ejemplo, para descargar Opencart de la página web de descarga en el directorio /tmp/pruebas
mkdir /tmp/pruebas
wget -c http://opencart.googlecode.com/files/opencart_v1.4.9.5.zip