1.- Explorar las herramientas de la línea de comandos Los comandos internos son los integrados en la consola. La mayoría de las consolas tienen un conjunto similar de comandos internos, pero hay diferencias entre consolas. Para ello consultar la página man de la consola para conocer más detalles. $ man bash Los comandos internos tienen prioridad ante los externos, a menos que se le dé la ruta completa al comando externo. $ history $ history !210 $ history -c $ history -d 300
(muestra los últimos 500 comandos) (ejecuta el comando número 210) (borra el historial) (borra el comando n.º 300)
El historial de bash se almacena en el archivo .bash_history del directorio principal, que se puede ver con el editor de texto o con un comando como less. Él no registra lo que se escribe como respuesta a otros programas, sólo lo que se escribe en bash. Por ello hay que evitar introducir comandos que incluyan como parámetros contraseñas. Si se mete un espacio antes del comando, este no suele quedar registrado en el historial, probarlo antes. Abrir editor desde la terminal hacer CTRL + (X → E). $ export NOM_VAR=valor_variable $ echo "$NOM_VAR" $ echo HISTSIZE=0 $ echo HISTSIZE=1000
(Exporta la variable) (Comprueba su valor) (terminal en modo incógnito) (restablece el historial)
$ ls -lt /home/rsoler || echo "El usuario no existe" (Si el usuario no existe dará el mensaje, pero si existe mostrará el listado y no el mensaje.) $ ls -lt /home/romsat && echo "OK, directorio listado" al final añadirá el mensaje)
(Si existe dará el listado y
$ alias (para usarlos, para crear otros, o para borrar/modificar alguno con “unalias”) $ ls -F (listará añadiendo la barra “/” al final de cada /directorio = ls -p) $ ls -ltr (formato largo, tiempo, reverse: listará del más antiguo al más reciente) $ ls -lS (listará del más grande al más pequeño) $ ls -i (añadirá el i-nodo) $ ls -ld /tmp/ (dará información de ese directorio) $ ls --full-time (toda la información horaria. Ver también -time-style=*iso) $ ls --format= (=across, comma, horizontal, long, single-column, verbose, vertical) (Tecmint.com: 15 Interview Questions on Linux “ls” Command – Part 1 y Part2)
$ date; sleep 5; cal (hará las tres tareas secuencialmente, si alguna no se puede ejecutar, dará el mensaje de error y pasará a la siguiente) Cuando se ejecuta un comando se abren tres canales implícitos, que están asociados a algún periférico: #0 stdin #1 stdout #2 stderr
Redirigir la Entrada y la Salida > Crea el archivo con el contenido de la salida estándar. Si existe lo sobrescribe. (1>) >> Añade. Si no existe lo crea. (1>>) 2> Lo crea con el contenido del error estándar. Si existe lo sobrescribe. 2>> Añade el error estándar. Si no existe lo crea. &> Lo crea con contenido de la salida y el error estándar. Si existe lo sobrescribe. 2>&1 La salida de error irá a la salida estándar. < Envía el contenido del archivo como entrada estándar. << Acepta el texto de las líneas siguientes como entrada estándar (para scripts). <> El archivo se utiliza tanto para la entrada como para la salida estándar. Trucos: redigir la salida o el error estándar hacia /dev/null. Este archivo es un dispositivo que no está conectado a nada; se utiliza para deshacerse de datos. Y /dev/zero es otro dispositivo que sólo devuelve ceros. El comando tee permite, a un mismo tiempo, ver y almacenar la salida de los archivos que se desee. Ej: programa | tee salida.txt $ ls /ttt 1>prueba.log 2>prueba.error
(si el directorio existe, la salida 1 va a un fichero y si no existe, la salida 2 va a otro fichero)
$ ls /ttt &>prueba.log
(los datos de los dos canales van al mismo fichero)
$ ls /tmp >> prueba.log 2>&1
(la salida estándar se concatena con la que ya hay; y la salida de error irá a la salida estándar)
$ echo “Capítulo 1” > libro.txt
(crea el archivo e introduce su primera línea)
$ echo -e “\nCapítulo 2” >> libro.txt
(añade esta línea al archivo)
Información sobre comandos y archivos de configuración El comando “man” está compuesto de 8 secciones y utiliza el comando “less” para paginar la documentación y el lenguaje “groff” para crear las páginas. $ man -k comando/patrón (muestra un índice de todas las secciones man que contienen ese comando o patrón) $ man -a ls
(muestra secuencialmente todas las secciones que hablan sobre el comando ls)
$ man 5 comando
(muestra la sección 5 de ese comando)
Se pueden instalar dos paquetes para obtener todas las páginas “man” que estén traducidas: * manpages-es * manpages-es-extra ! ls
(sale de man, ejecuta el comando y al pulsar Return vuelve a man)
$ apropos texto Sirve para buscar paginas en el “man” que tengan una determinada palabra clave por ejemplo “apropos directorios”. Y al lado del nombre del comando aparece un número entre paréntesis, ese número en una sección dentro del manual de ese comando y tienen diferentes significados: 1 – Comandos disponibles para los usuarios. 2 – Llamas al sistema de *nix y C. 3 – Rutinas de biblioteca de C para programas escritos en C. 4 – Nombres de archivos especiales. 5 – Formatos de archivo y las convenciones de los archivos utilizados por *nix. 6 – Juegos. 7 – Paquetes de procesamiento de textos. 8 – Comandos de administración del sistema y de procedimientos. Si quiero acceder por ejemplo a la sección 2 del manual de rmdir hago: $ man 2 rmdir En resumen, con “apropos” consulto que comando me sirve para hacer X acción, y con “man npagina X” la página correspondiente del comando. (es igual que hacer $ man -k comando. Y lo bueno es que no se limita a buscar el nombre exacto, dará todos aquellos que tengan similitudes en su nombre.) Podemos usar man -f o whatis cuando queramos localizar las páginas man existentes para un determinado comando, mientras que apropros y man -k servirán cuando no recordemos el nombre de un comando y podamos ir averiguarlo mediante patrones. $ info comando
(es otra manera de documentar, pero apenas se utiliza, es mejor man)
$ whereis comando (localiza el binario, las fuentes, ficheros de configuración y las páginas man del comando)
Generar líneas de comando xargs
construye un comando a partir de su entrada estándar.
Ejemplo 1: tenemos que borrar todos los archivos de copia de seguridad (denotados por el carácter de la virgulilla). Esto se puede hacer canalizando la salida find cuyo nombre contenga la virgulilla hacia xargs, quien después invoca a rm: (pág. 67) $ find ./ -name “*~” | xargs -d “\n” rm https://nebul4ck.wordpress.com/lpic-1-capitulo-1/
$ ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"' $ ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'
→ (convierte de PNG a JPG) → (convierte de JPG a PNG)
Donde: -1 – flag tells ls to list one image per line. -n – specifies the maximum number of arguments, which is 1 for the case. -c – instructs bash to run the given command. ${0%.png}.jpg – sets the name of the new converted image, the % sign helps to remove the old file extension.
Ejemplo 2: copiar un fichero en múltiples directorios. # echo /home/dir1/ /home/dir2 | xargs -n 1 cp -v /home/mi_fichero /dir1 y /dir2: directorios en los que llevar una copia -n 1: le dice a xargs que lea una las entradas de una en una y la mande al comando cp. -v: modo verbose para mostrar el proceso de copiado.
Comandos para combinar archivos cat: enlaza el final de un archivo con el principio de otro. cat uno.txt dos.txt > uno_dos.txt
(y redirige la salida a otro archivo, no a pantalla)
$ cat > manuscrito.txt (crea el nuevo fichero teniendo al teclado de entrada estándar, salir Ctrl+D) $ cat < prueba.txt > prueba.log (entrada un documento, salida otro) $ cat archivo5.txt >> archivos.txt (añade al final de archivos el archivo5.txt) $ cat fichero1.txt > /tmp/fichero2.txt (hace una copia en otra ubicación con otro nombre) $ cat -n texto.txt (numera todas las líneas, incluido las vacías) $ cat -b texto2.txt (numera sólo las líneas con texto) $ sudo cat /dev/input/mice (movimiento del ratón, para salir: Ctrl+C.) $ tac listado.txt (da el listado pero en sentido inverso) $ tac /var/log/auth.log (usándolo en un fichero log) $ tail /var/log/auth.log | tac (las 10 últimas entradas en orden cronológico inverso) 13 Basic Cat Command Examples in Linux: http://www.tecmint.com/13-basic-cat-commandexamples-in-linux/
join: combina dos archivos comparando el contenido de los campos especificados. Combina archivos a partir de una columna en común. Los archivos deben de tener el mismo orden, podemos usar sort para tal fin. Similar al join de SQL. Si en un archivo tenemos dos columnas, en una Nombres de personas y DNIs en la otra columna; y otro archivo tenemos números de Teléfono y Nombres de personas, la columna en común es Nombres de personas, con join podremos tener un archivo que contenga DNIs, Nombres de personas y Teléfonos. join listado1.txt listado2.txt join -1 3 -2 1 archivo1.txt archivo2.txt
paste: fusiona archivos línea a línea.
(para manipulación de bases de datos) (unirá del 1er archivo la 3ª columna con el 2º archivo su 1ª columna)
paste archivo1.txt archivo2.txt (Lista las columnas de archivo2 paralelas a las de archivo1, para que sean coincidentes. Ambos archivos deben de tener el mismo número de líneas) https://nebul4ck.wordpress.com/combinar-archivos/
Comandos de transformación de archivos Estos comandos no cambian realmente el contenido de los archivos, sino que envían el archivo modificado a la salida estándar. Después, se puede canalizar esta salida hacia otro comando o se redirige a un nuevo archivo. expand: convierte las tabulaciones en espacios (1 tabulación cada 8 caracteres). unexpand: convierte varios espacios en tabulaciones. od: muestra los archivos en octal (en base 8), también en decimal y hexadecimal. sort: puede ordenar de varias maneras (numérico, meses, invertir, por ASCII...). split: divide un archivo en dos o más archivos (por bytes, por bloques, por líneas…) y por defecto es de 1.000 líneas. tr: cambia o borra caracteres individuales de la entrada estándar por otros. $ echo “Hola a todos” | tr -d aeiou → Hl tds uniq: elimina las líneas duplicadas de un archivo. sort archivo1.txt | uniq
iconv: realiza conversiones de codificación entre conjunto de caracteres o archivos. mpage: lee archivos de texto plano o PostScript y les aplica un formato que reduce el tamaño por página en caso de querer ahorrar papel. https://nebul4ck.wordpress.com/transformar-archivos/
Comandos de formato de archivo Estos comandos aplican formato al texto de un archivo. fmt: justifica el texto (75 caracteres de ancho). nl: numera las líneas (también lo puede hacer cat -n, pero este es más completo). pr: prepara para imprimir un archivo con texto plano ($ pr informe.txt | lpr). lpq: da el estado de la impresora y los trabajos que tenga en cola. https://nebul4ck.wordpress.com/dar-formato-a-archivos/
Comandos para visualizar archivos head: para ver las primeras líneas de un archivo. tail: muestra las últimas líneas de un archivo. (estos dos muy útiles para los logs) (combinando ambos comandos, para que muestre las líneas 11 a 15 de un archivo: head -n 15 archivo.txt | tail -n 5) less: visualiza un archivo pantalla a pantalla (es un versión mejorada de more). (less en un pipe ha de ser su comando final) (q → salir) Comandos para resumir archivos
Nos ofrecen una porción de ellos, según las opciones que se den. cut: extrae partes de líneas de entrada y las muestra en la salida estándar. cut -c -2 archivo.txt
(muestra sólo las dos primeras letras de cada línea del archivo)
cut -d " " -f2 apellidos.txt (utilizando de delimitador el espacio en blanco no el tabulador que es el de por defecto, saca el segundo campo o columna. El primero se supone que es el nombre.) ifconfig eth0 | grep HWaddr | cut -d “ ” -f 11 (se utiliza con frecuencia en scripts para extraer datos de la salida de otros comandos) ifconfig | grep eth0 | cut -d " " -f 11
(muestra la MAC de eth0)
wc: cuenta líneas, palabras y bytes de un archivo. Uso de expresiones regulares Herramientas para describir o comparar patrones del texto. grep: (Global Regular Expresion Print), busca los archivos que contienen la cadena especificada y devuelve el nombre del archivo y, si es un texto, una línea de contexto para dicha cadena. Sintaxis: grep [opciones] exp_regular [archivos] $ grep computación "Fundamentos sobre Sistemas Operativos.txt" (busca la palabra “computación” en dicho archivo .txt)
Existen otros dos comandos relacionados con grep que en realidad no son más que un ‘front end‘ de dos de las opciones que se le pueden pasar a grep, estos son: egrep (grep -E) y fgrep (grep -F). Las diferencias son algunas como por ejemplo el uso de expresiones regulares en grep, permitiéndonos egrep utilizar expresiones extendidas, además de una ligera diferencia en la sintaxis del comando. Por su parte fgrep utiliza cadenas simple de caracteres en vez de expresiones regulares. grep -r eth[01] /etc/*
(Busca de forma recursiva en /etc/ todos los archivos que contienen la palabra eth0 ó eth1)
El comando grep usa el algoritmo Boyer-Moore para una búsqueda rápida de patrones o expresiones regulares. ls -lhaF | grep ^l ls -lhaF | grep ^d ls -lhaF | grep ^pgrep
(lista los links) (lista los directorios) (lista los archivos normales)
Su nombre deriva de los comandos ps y grep. Por defecto devuelve el ID del proceso: # pgrep nombre_del_proceso Esto es equivalente al siguiente comando: ps ax | grep nombre_del_proceso | grep -v grep | awk '{print $1}' Así, pgrep es una simplificación de ese comando más comlejo. • pgrep -l -G otros → (muestrar todos los procesos, en formato largo, ID y nombre, que pertenezcan al grupo otros: • pgrep -v -u root root)
→
(muestra todos los procesos que no pertenezcan al usuario
sed: Es un ‘Stream EDitor’ o editor de flujo que no modifica el contenido del archivo original. Lo que modifica es una copia del mismo e imprime por pantalla las líneas procesadas o aquellas que han sufrido cambios (esto depende de la opción que le pasemos). La sintaxis de sed es: sed [-n] [-e comando] [-f archivo-comandos] archivo [> guardar_cambios] https://nebul4ck.wordpress.com/comandos-para-exp_reg/
sed s/patrón1/patrón2/g archivo.txt (Sustituye patrón1 por patrón2. Por defecto sed solo sustituirá la primera coincidencia de cada línea. Si añadimos una g al final sustituirá todas las coincidencias de todas las líneas.) sed s3/patrón1/patrón2 archivo.txt
(Sustituye sólo la 3ª coincidencia de una línea.)
sed 3s/patrón1/patrón2 archivo.txt
(en la 3ª línea sustituye la 1ª coincidencia)
sed '/3/ a\ Mundo' archivo.txt
(Añade la palabra Mundo a la 4º línea de archivo.txt después de la línea o patrón especificado)
sed '/5/ i\ Mundo' archivo.txt
(Añade la palabra Mundo a la 4º línea de archivo.txt antes de la línea especificada)
Nota: Si empleamos la dirección /3/, sed añadirá el texto cada 3 líneas, si usamos 3 a secas, solo lo añadirá una vez en la cuarta línea. Pasa lo mismo con i\ y c\
15 Useful ‘sed’ Command Tips and Tricks http://www.tecmint.com/linux-sed-command-tips-tricks/ # sed -n '5,10p' myfile.txt # sed '20,35d' myfile.txt
(muestra un rango intermedio, de las líneas 5 a la 10 del fichero) (muestra todo, excepto el rango de la 20 a la 35)
# sed -n -e '5,7p' -e '10,13p' myfile.txt
(muestra dos rangos no consecutivos)
# sed 's/version/story/g' myfile.txt
(sustituye todas las palabras version por story)
# sed 's/version/story/gi' myfile.txt
(al poner gi ignora mayúsculas o minúsculas)
Si queremos que esas sustituciones se conserven debemos redirigir la salida hacia un fichero no hacia la salida estándar. # sed ‘s/old/new/g’ fichero_old > fichero_new …
Varios El comando exec hace que el resto del comando reemplace a la consola actual. Por lo tanto el comando exec gedit abre una ventana del editor de texto y cuando salga del mismo será lo mismo que si saliese de la consola, se cierra la ventana xterm. (PID programa = PID consola) El modo más seguro de ejecutar un programa es: ./programa Así se identificará de manera inequívoca la intención de ejecutar el programa que está en el directorio actual de trabajo. Si no se le añade ./ se ejecutará la primera instancia del programa que se encuentra en la ruta actual, pero como las rutas suelen omitir el directorio actual es probable que el comando falle. Asesinato en la linea de comandos: http://lamiradadelreplicante.com/2016/01/30/asesinato-en-la-linea-de-comandos/
Ejercicios: $ cat desordenado.txt | sort
(muestra por pantalla el fichero ordenado)
$ cat desordenado.txt | sort > ordenado.txt
(lo guarda en otro fichero)
$ cat desordenado.txt | sort >> desordenado.txt (lo añade ordenado a sí mismo. Y si le dejamos solo un > el fichero aparecerá vacío. Dado que primero borra o crea y luego escribe.) Calendario: aquí sólo muestra el mes de febrero, poniendo sólo el año, muestra todos los meses.
# ls /usr/bin
(muestra el contenido del directorio bin que está en usr)
# ls -R /etc
(muestra el contenido del directorio más, recursivamente, el de sus subdirectorios) (S: sort by file size, largest first)
# ls -Slh /etc
(l: long listing format) (h: human-readable sizes: KB, MB, GB…)
Comandos para la mensajería desde línea de comandos write : Comando que nos permite enviar mensajes a la consola de un determinado usuario, conectado al mismo sistema. $write usuario < texto $ write romsat Escribo aquí lo que quiera que le llegue y luego cierro. (Ctrl+D)
mesg : Digamos que es el botón que ‘mutea‘ o activa los mensajes del comando write en una terminal (pts). Suponiendo que 2 usuarios conversan por terminal, el usuario A tiene abierta 2 terminales (pts2 y pts4) y quiere dejar de recibir mensajes por pts4: $ mesg n < /dev/pts/4
• Si queremos volver a recibir mensajes por esa terminal utilizamos la opción: -y
talk : Conversación bidireccional mediante consola entre 2 usuarios conectados a la misma o diferente máquina. $talk usuario [ttyn | pts/n] $ talk usuario@maquina
wall : Útil para enviar un mensaje a todos los usuarios conectados a un sistema Linux. $wall < archivo_texto $ echo “Hola a todos” | wall
[Opciones]: • Si queremos quitar el banner del mensaje (solo root puede hacerlo): -n • Si queremos poner una cuenta atrás, por ejemplo para apagar el sistema: -t tiempo echo : Muestra por pantalla o envía a un archivo aquello que se escribe/manda por la entrada estándar. $ echo -e “Esto se muestra por pantalla con salto de líneas\n” $ echo -n “Añado una línea a un archivo” >> archivo.txt
[Opciones]: • -e: Permite la interpretación de caracteres con barra invertida, por ejemplo, un salto de página, una tabulación o un salto de línea. • -n: No inserta el carácter de nueva línea. Útil por ejemplo a la hora de codificar un texto desde consola. $ echo -n “contraseña” | openssl sha1
[Caracteres de escape]: • • • •
\n : representa un salto de línea \\ : Representa una barra invertida \r : Representa un retorno de carro \t : Representa una tabulación horizontal
Otras cosas que podemos hacer con echo: • Listar el contenido de un directorio (siempre y cuando estemos dentro): $ echo /* /bin /boot /cdrom /dev /etc /home /initrd.img /lib /lib64 /lost+found /media /mnt /opt /proc /root /run /sbin /srv /sys /tmp /usr /var /vmlinuz
• Enviar un mensaje a una determinada terminal utilizando como salida, la entrada de esa terminal (pts). El comando w o who nos serán de ayuda. Suponiendo que es a pts2 a quien queremos enviar el mensaje: $ echo “Esto es un msg para pts2” > /dev/pts/2
Nota: El mensaje aparecerá en la línea de comandos de pts2, como si hubiese sido tecleado por él.
===== FIN Tema-1 =====
60 y pico Comandos Básicos
Medios
Altos
ls
find -iname *nombre
ifconfig -a eth0 down up netmask
lsblk
grep palabra ruta
netstat -at -s -an -c
md5sum
man
nslookup dominio.com …
dd
ps -A | grep -i ssh
dig dominio.com …
uname
kill 1285
uptime
history
pkill apache2
wall
sudo
whereis ls
mesg
mkdir
service apache2 start/restart/stop
write
touch
alias l=”ls -l”
talk
chmod 777 script.sh
unalias l
w (uptime + who)
chown usuario:grupo fichero
df
rename
apt
du
top
tar -cvf
rm -rf
mkfs.ext4 /dev/sdb1
cal 02 1970
echo “Hola”
Vi – Emacs – Nano
date
passwd
rsync
cat a.txt b.txt >> ab.txt
lpr – lpq
free -h
cp origen destino
cmp
mysqldump (backups)
mv origen destino
wget
mkpasswd 10
pwd
mount
paste
cd
gcc g++ java
http://www.tecmint.com/60-commands-of-linux-a-guide-from-newbies-to-system-administrator/
How to Manipulate Filenames Having Spaces and Special Characters in Linux http://www.tecmint.com/manage-linux-filenames-with-special-characters/ Bash Tips for Linux Sysadmins (leelo) https://www.linux.com/learn/bash-tips-linux-sysadmins Autojump – An Advanced ‘cd’ Command to Quickly Navigate Linux Filesystem http://www.tecmint.com/autojump-a-quickest-way-to-navigate-linux-filesystem/
How to Count Number of Files and Subdirectories inside a Given Directory $ apt install tree $ tree /home $ tree -iLF 1
→ (muestra todo el árbol de ese directorio)
http://www.tecmint.com/count-files-and-directories-linux/
20 Funny Commands of Linux or Linux is Fun in Terminal http://www.tecmint.com/20-funny-commands-of-linux-or-linux-is-fun-in-terminal/
Los ficheros ODT de LibreOffice son simples ficheros .zip . Dentro de ellos, se encuentran distintos archivos: xml, gráficos incrustados, etc. El problema viene cuando tienes una carpeta llena de ficheros .ODT y quieres buscar un texto en concreto en todos ellos. Al tratarse de ficheros comprimidos, no vale con usar ni el comando “strings” ni el comando “grep”, porque no encontrará nada. ¿Solución? Convertir los .odt a texto con el comando odt2txt (funciona también para .odg y otros formatos): Primero: $ sudo apt install odt2txt for i in *.odt; do echo $i; echo "*************"; odt2txt $i | grep -i cadena_de_texto_a_buscar; done Este bucle for recorre todos los ficheros con extensión .odt, los convierte a texto (no genera ficheros nuevos, la conversión se realiza hacia la salida estándar) y los pasa por un pipe a grep, que realiza la búsqueda. El echo $i con los *** sirve para remarcar el nombre del fichero en el que se encontró la cadena. Reparar documento LibreOffice: http://www.elblogderigo.info/2012/05/15/reparar-documentolibreoffice/
GNU Parallel: computación paralela a golpe de comando http://www.muylinux.com/2010/10/18/gnu-parallel-computacionparalela-a-golpe-de-comando Primero, se instala: $ sudo apt-get install parallel $ sudo yum install parallel
[On Debian/Ubuntu systems] [On RHEL/CentOS and Fedora]
Once Parallel utility installed, you can run the following command to convert all .png images to .jpg format from the standard input: $ parallel convert '{}' '{.}.jpg' ::: *.png
→ (convierte de PNG a JPG)
$ parallel convert '{}' '{.}.png' ::: *.jpg
→ (de JPG a PNG)
Where, {} – input line which is a replacement string substituted by a complete line read from the input source. {.} – input line minus extension. ::: – specifies input source, that is the command line for the example above where *png or *jpg is the argument. Otra manera es: $ ls -1 *.png | parallel convert '{}' '{.}.jpg'→ (PNG a JPG) $ ls -1 *.jpg | parallel convert '{}' '{.}.png'→ (JPG a PNG)
El lenguaje/comando AWK $ history | awk '{print $2}' | sort | uniq -c | sort -rn | head (da un listado de los 10 comandos más usados en la terminal, para Ubuntu y derivados. En otras distros, centOS, RHEL o Fedora es la cuarta columna, $4) Siempre que sea posible, en vez de grep, hay que usar awk, # ls -l /tmp/a/b/c | grep sep ← mal # ls -l | awk ‘$6 == “sep”‘ ← bien Aprendiendo A Usar Linux https://aprendiendoausarlinux.wordpress.com/2012/03/09/un-tutorial-de-awk/
Uso básico de AWK http://www.sromero.org/wiki/linux/aplicaciones/uso_de_awk
awk http://francisconi.org/linux/comandos/awk
El comando sync El comando sync sirve para forzar la grabación de los datos de la caché. También es recomendado para hacer antes de desmontar un dispositivo, como una cámara fotográfica digital, un pendrive. O bien si hubo modificaciones y movimiento de información (cp y mv por ejemplo) entre particiones, antes de desmontar. El comando sync descarga el buffer (flushes), por ejemplo, fuerza que los datos aun no grabados sean escritos al disco, y puede ser usado cuando uno quiere asegurarse que todas las escrituras se hayan realizado. En los sistemas UNIX tradicionales, hay un programa llamado update que esta ejecutándose en segundo plano, el cual se encarga de ejecutar el comando sync cada 30 segundos, por esto usualmente no es necesario usar sync.
Limpiar memoria RAM en Linux en solo unos comandos http://hackingthesystem4fun.blogspot.com.es/2012/06/limpiar-memoria-ram-en-linux-en-solo.html
How to Clear RAM Memory Cache, Buffer and Swap Space on Linux http://www.tecmint.com/clear-ram-memory-cache-buffer-and-swap-space-on-linux/ (June 28, 2016)
El comando sync apenas se utiliza, tan sólo para desmontar un pendrive, en cambio, el comando rsync es ampliamente utilizado. How to Sync Files/Directories Using Rsync with Non-standard SSH Port http://www.tecmint.com/sync-files-using-rsync-with-non-standard-ssh-port/
Como en todo, o en casi todo, existe la versión gráfica: Grsync Ver la 5ª herramienta → https://www.youtube.com/watch?v=OCAjv6DCJBQ