Comandos y scripts en Linux
Comandos basicos (Desde la terminal bash)
Cuando inciamos el SO de Linux, nos comunicamos con la computadora a travez una interfaz que esta en constante ejecución, a este le llamaremos TERMINAL, aunque sabemos que la mayoria de los SO en la actualidad tienen un entorno gráfico, para los fines de este curso nos centraremos en la terminal
Para ejecutar un comando en general se sigue la siguiente regla de operación:
INGLES
command <options> <target> --(FILE, DIRECTORY, OTHERS)
ESPAÑOL
comando <opciones> <blanco> --(ARCHIVO, CARPETA, OTROS)
BASH PIPELINES
Conteo de secuencias en FastQ
fgrep -i "@S" file.fq | wc -l
cat file.fq | echo $((`wc -l`/4))
Nombre de los genes anotados
grep $'\tgene\t' sequence.gff3 | perl -ne '/ID=([^;]+)/ and printf("%s\n", $1)'
grep $'\tgene\t' sequence.gff3 | awk '{print $9}' | cut -d';' -f1 | sed "s/ID=//g"
Mesclando scripts:
grep $'\tgene\t' sequence.gff3 | awk '{print $5-$4";"$9}'| sed 's/Name=//g' | awk -F';' '{print $3"\t"$1}' | sort -k2n > Tamaño_genes.txt
awk '{print $3}' sequence.gff3 | sort -d | uniq -c
Programas de edición en Linux
Dentro de Linux tenemos programas que podemos usar para acceder a archivos, donde podemos editarlo a gusto, muchos de estos editores fueron con los que se crearon la mayoria de programas que hoy conocemos, la programación de gran parte de las aplicaciones en varios lenguajes se ha hecho y aun puede hacerse con los editores de texto
Editor VIM
Vim
es un editor mejorado, basado en el editor Vi
, para el curso se usara con mas detalle este editor. Para usar este editor se debe primero llamar en la terminal con el comando:
vim file.txt (opcional)
si existe un archivo con el nombre file.txt
entrara para editarlo sino creara uno con ese nombre
Ahora haremos una lista de los principales comandos que se usa en vim:
i
para empezar a escribir, tambien funciona con la tecla Insert
, para escribir aplica los atajos de teclado que conocemos
Esc
para poder regresar a las funciones de vim
dd
para borrar una linea completa
yy
para copiar una linea completa
p
para pegar la linea copiada
:q
cierra el documento
:q!
fuerza cerrar el documento sin guardar cambios
:wq
guarda los cambios y cierra el documento
/patron
permite la busqueda de un patron ` n ` avanzar DELANTE en los patrones encontrados ` N ` avanzar ATRAS en los patrones encontrados
:tabedit
permite abrir otro documento al mismo timpo gt
con este comando puede cambiar entre ventanas
otros opcionales
split
fracciona el editor en 2 ventanas
vsplit
fracciona el editor en 2 ventanas verticalmente
Ctrl + w + (h-j-k-l)
permite saltar entre las ventanas
Editor NANO
El editor nano
muestra las opciones una ves se inicia, para iniciar es similar que vim
:
nano file.txt (opcional)
Se antepone la tecla Ctrl
en las opciones que aparecen en el editor:
Editor PICO
El editor pico
es muy similar a nano
solo falta anteponer la tecla Ctrl
a las letras de opciones que aparecen
Para ejecutar este comando se ejecutar en la terminal :
pico file.txt (opcional)
BASH SCRIPTS
she bang
#!interpreter [optional-arg]
#!/bin/sh
#!/bin/bash
#!/usr/bin/python3
#!/usr/bin/awk -f
#!/bin/bash
##CONSTANTES
VAR1="UUU"
VAR2="UUC"
##EJECUCION
for i in {A,U,G,C}{A,U,G,C}{A,U,G,C}
do
if [ "$i" = "$VAR1" ] || [ "$i" = "$VAR2" ]; then
echo "$i Phe"
fi
done
Permisos
# cambia permisos a archivos y carpetas
# d rwx rwx rwx / (propietario) (grupos) (demas)
# r 4
# w 2
# x 1
chmod 775 ACGT.bash
chmod +rwx ACGT.bash
# R recursivo
chmod -R 755
Correr un script
<lenguaje> script.ext
### Sin permisos
bash ACGT.bash
### Con permisos
./ACGT.bash
### Segundo plano
./ACGT.bash&
Correr en segundo plano o screen
# Añadir el caracter &
bash scrip.bash&
### Activando un screen
screen -S name
./ACGT.bash
## salir del screen CTRL A + D
## ingresar al screen nuevamente
scren -ls
screen -r name
Detener procesos
# muestrar los procesos actuales
ps
pstree
top -u user
#detener procesos por comando
kill PID
top -u user
# presiona "k" y indica el PID
htop
# buscar el proceso y presionar "k"
SYNTAXIS
#!/bin/bash
###COMENTARIOS
###VARIABLES (numericos (enteros o flotantes), strings (""), booleanos (T / F)
VAR1=""
VAR2=""
VAR3=""
###EXECUTION ( se puede ejecutar comandos que se usan en la terminal )
echo "started at ´date´" ## ´date´ (permite ejecutar comandos dentro de un print
mkdir -p ${VAR} ## puede intercambiar variables para usarlos dentro de los comandos.
### sintaxis de comparacion
== is equal to ; if [ "$a" == "$b" ]
!= is not equal to ; if [ "$a" != "$b" ]
< is less than; if [[ "$a" < "$b" ]]
< is greater than if [[ "$a" > "$b" ]]
AND (&&) y OR(||)
-eq is equal to if [ "$a" -eq "$b" ]
-ne is no equal to if [ "$a" -ne "$b" ]
-gt is greater then if [ "$a" -gt "$b" ]
-ge is greater then or egual to if [ "$a" -ge "$b" ]
-lt is less than if [ "$a" -lt "$b" ]
-le is less than or equal to if [ "$a" -le "$b" ]
### estructura basica de una condicional if
if [ "$i" != "UGA" ]; then
echo "$i phe"
fi
### estructura basica de un while
while [ number -gt 4 ]; do
echo "loop1"
echo "loop2"
echo "loop3"
done
### estrucutura basica de un for
for i in a b c
do
comand <options> target
done