La Fundación Linux anunció el LFCS (Administrador de sistemas certificado por la Fundación Linux), un nuevo programa que tiene como objetivo ayudar a las personas de todo el mundo a obtener la certificación en tareas de administración de sistemas básicos a intermedios para sistemas Linux. Esto incluye el soporte de sistemas y servicios en ejecución, junto con la resolución de problemas y el análisis de primera mano, y la toma de decisiones inteligente para escalar los problemas a los equipos de ingeniería.
Mire el siguiente video que muestra el programa de certificación de The Linux Foundation.
La serie se titulará Preparación para la LFCS (Administrador de sistemas certificado por la Fundación Linux) Partes 1 mediante 10 y cubra los siguientes temas para Ubuntu, CentOS y openSUSE:
Parte 1: Cómo utilizar el comando "sed" de GNU para crear, editar y manipular archivos en Linux
Importante: Debido a cambios en los requisitos de certificación LFCS vigentes Feb. 2, 2016, estamos incluyendo los siguientes temas necesarios para la serie LFCS publicada aquí. Para prepararse para este examen, le recomendamos encarecidamente que utilice el Serie LFCE también.
Esta publicación es parte 1 de un Serie de 20 tutoriales, que cubrirá los dominios y competencias necesarios que se requieren para el LFCS examen de certificacion. Dicho esto, encienda su terminal y comencemos.
Linux trata la entrada y la salida de los programas como flujos (o secuencias) de caracteres. Para comenzar a comprender la redirección y las canalizaciones, primero debemos comprender los tres tipos más importantes de flujos de E / S (entrada y salida), que son de hecho archivos especiales (por convención en UNIX y Linux, los flujos de datos y periféricos, o los archivos de dispositivo, también se tratan como archivos ordinarios).
La diferencia entre > (operador de redirección) y | (operador de canalización) es que mientras el primero conecta un comando con un archivo, el segundo conecta la salida de un comando con otro comando.
# comando> archivo. # command1 | comando 2.
Dado que el operador de redirección crea o sobrescribe archivos de forma silenciosa, debemos usarlo con extrema precaución y nunca confundirlo con una canalización. Una ventaja de las canalizaciones en los sistemas Linux y UNIX es que no hay ningún archivo intermedio involucrado con una tubería: la salida estándar del primer comando no se escribe en un archivo y luego se lee en el segundo mando.
Para los siguientes ejercicios de práctica usaremos el poema “Un niño feliz”(Autor anónimo).
El nombre sed es la abreviatura de editor de transmisiones. Para aquellos que no están familiarizados con el término, se utiliza un editor de flujo para realizar transformaciones de texto básicas en un flujo de entrada (un archivo o entrada de una canalización).
El uso más básico (y popular) de sed es la sustitución de caracteres. Comenzaremos cambiando cada aparición de minúsculas. y a MAYÚSCULAS Y y redirigir la salida a ahappychild2.txt. El gramo bandera indica que sed debe realizar la sustitución de todas las instancias de término en cada línea del archivo. Si se omite este indicador, sed reemplazará solo la primera aparición de término en cada línea.
# archivo sed 's / term / replacement / flag'.
# sed 's / y / Y / g' ahappychild.txt> ahappychild2.txt.
Si desea buscar o reemplazar un carácter especial (como /, \, &) debe escapar, en el término o cadenas de reemplazo, con una barra inclinada hacia atrás.
Por ejemplo, sustituiremos la palabra y por un ampersand. Al mismo tiempo, reemplazaremos la palabra I con Tú cuando el primero se encuentra al principio de una línea.
# sed 's / y / \ & / g; s / ^ I / You / g 'ahappychild.txt.
En el comando anterior, un ^ (signo de intercalación) es una expresión regular conocida que se utiliza para representar el comienzo de una línea.
Como puede ver, podemos combinar dos o más comandos de sustitución (y usar expresiones regulares dentro de ellos) separándolos con un punto y coma y encerrando el conjunto entre comillas simples.
Otro uso de sed es mostrar (o eliminar) una parte elegida de un archivo. En el siguiente ejemplo, mostraremos las primeras 5 líneas de /var/log/messages desde el 8 de junio.
# sed -n '/ ^ 8 de junio / p' / var / log / messages | sed -n 1,5p.
Tenga en cuenta que, de forma predeterminada, sed imprime todas las líneas. Podemos anular este comportamiento con el -norte opción y luego decirle a sed que imprima (indicado por pag) solo la parte del archivo (o la tubería) que coincide con el patrón (8 de junio al comienzo de la línea en el primer caso y líneas 1 a 5 inclusive en el segundo caso).
Finalmente, puede ser útil al inspeccionar scripts o archivos de configuración para inspeccionar el código en sí y omitir comentarios. El siguiente sed one-liner elimina (D) líneas en blanco o las que comienzan con # (la | carácter indica un booleano OR entre las dos expresiones regulares).
# sed '/ ^ # \ | ^ $ / d' apache2.conf.
El uniq El comando nos permite informar o eliminar líneas duplicadas en un archivo, escribiendo en stdout por defecto. Debemos notar que uniq no detecta líneas repetidas a menos que sean adyacentes. Por lo tanto, uniq se utiliza comúnmente junto con un precedente clasificar (que se utiliza para ordenar líneas de archivos de texto). Por defecto, clasificar toma el primer campo (separado por espacios) como campo clave. Para especificar un campo de clave diferente, necesitamos usar el -k opción.
El du –sch / ruta / al / directorio / * comando devuelve el uso de espacio en disco por subdirectorios y archivos dentro del directorio especificado en legible por humanos formato (también muestra un total por directorio), y no ordena la salida por tamaño, sino por subdirectorio y nombre de archivo. Podemos usar el siguiente comando para ordenar por tamaño.
# du -sch / var / * | sort –h.
Puede contar el número de eventos en un registro por fecha diciendo uniq para realizar la comparación utilizando los primeros 6 caracteres (-w 6) de cada línea (donde se especifica la fecha), y anteponiendo cada línea de salida por el número de ocurrencias (-C) con el siguiente comando.
# cat /var/log/mail.log | uniq -c -w 6.
Finalmente, puedes combinar clasificar y uniq (como suelen ser). Considere el siguiente archivo con una lista de donantes, fecha de donación y monto. Supongamos que queremos saber cuántos donantes únicos hay. Usaremos el siguiente comando para cortar el primer campo (los campos están delimitados por dos puntos), ordenar por nombre y eliminar las líneas duplicadas.
# cat sortuniq.txt | cut -d: -f1 | ordenar | uniq.
Leer también: 13 ejemplos de comandos "gato"
grep busca archivos de texto o (salida de comando) para la aparición de una expresión regular especificada y genera cualquier línea que contenga una coincidencia con la salida estándar.
Mostrar la información de /etc/passwd para el usuario gacanepa, ignorando mayúsculas y minúsculas.
# grep -i gacanepa / etc / passwd.
Mostrar todos los contenidos de /etc cuyo nombre comienza con rc seguido de cualquier número.
# ls -l / etc | grep rc [0-9]
Leer también: 12 ejemplos de comandos "grep"
El tr El comando se puede usar para traducir (cambiar) o eliminar caracteres de stdin y escribir el resultado en stdout.
Cambie todas las minúsculas a mayúsculas en el archivo sortuniq.txt.
# cat sortuniq.txt | tr [: inferior:] [: superior:]
Apriete el delimitador en la salida de ls –l a un solo espacio.
# ls -l | tr -s ''
El recorte El comando extrae partes de las líneas de entrada (de stdin o archivos) y muestra el resultado en la salida estándar, según el número de bytes (-B opción), caracteres (-C) o campos (-F). En este último caso (basado en campos), el separador de campo predeterminado es una pestaña, pero se puede especificar un delimitador diferente usando el -D opción.
Extraiga las cuentas de usuario y los shells predeterminados que se les asignan de /etc/passwd (la -D La opción nos permite especificar el delimitador de campo y la -F El interruptor indica qué campo (s) se extraerán.
# cat / etc / passwd | cortar -d: -f1,7.
Resumiendo, crearemos un flujo de texto que consiste en el primer y tercer archivo no en blanco de la salida del último mando. Usaremos grep como primer filtro para comprobar las sesiones del usuario gacanepa, luego apriete los delimitadores en un solo espacio (tr -s ‘ ‘). A continuación, extraeremos el primer y tercer campo con recortey, finalmente, ordene por el segundo campo (direcciones IP en este caso) que muestre único.
# último | grep gacanepa | tr -s '' | cut -d '' -f1,3 | sort -k2 | uniq.
El comando anterior muestra cómo se pueden combinar múltiples comandos y tuberías para obtener datos filtrados de acuerdo con nuestros deseos. Siéntase libre de ejecutarlo también por partes, para ayudarlo a ver la salida que se canaliza de un comando al siguiente (¡por cierto, esta puede ser una gran experiencia de aprendizaje!).
Aunque este ejemplo (junto con el resto de ejemplos del tutorial actual) puede no parecer muy útil a primera vista, son una buen punto de partida para comenzar a experimentar con comandos que se utilizan para crear, editar y manipular archivos desde el comando de Linux línea. No dude en dejar sus preguntas y comentarios a continuación, ¡serán muy apreciados!