# Introducción a LINUX
###### tags: `UAX` `Estudiantes` `Bioinformática I`
## Acceder al terminal:
* Puedes usar la web [DistroSea](https://distrosea.com/select/ubuntu/) para probar Ubuntu online.
* Puedes intalar un emulador de terminal como [GitBash](https://git-scm.com/book/es/v2/Ap%C3%A9ndice-A%3A-Git-en-otros-entornos-Git-con-Bash) o [Cywing](https://www.cygwin.com/).
* Instalar Ubuntu en una máquina virtual siguiendo este [tutorial](https://hackmd.io/@laurichi13/H13G0jQes).
* En Windows instalar la aplicación [Ubuntu(WLS)](https://learn.microsoft.com/es-es/windows/wsl/install) desde Microsfot Store.
* Si ya tienes Ubuntu o Mac: Puedes buscar en <<Aplicaciones>> o acceder a través del teclado con las teclas **Ctrl+Alt+T**

## Comandos básicos:
* El comando `echo` muestra en la terminal lo que escribes:
```bash=s
echo "hola"
```
* Comando `pwd` Print Working Directory muestra el directorio actual
```bash=s
pwd
```
* Comando `mkdir`Makes Directory: Crea una carpeta nueva
```bash=s
mkdir laura
```
* Comando `cd` Changes Directory: Cambia de directorio. Movimiento entre carpetas (La tecla TAB ayuda a autocompletar)
```bash=s
cd laura
cd ..
```
* Comando `rm` Remove Directory: Elimina una carpeta.
```bash=s
rmdir laura
```
> :warning: Una órden es una órden... El terminal no te pregunta si estas seguro de borrar una carpeta... Así que ¡cuidado!
* comando `ls` List-directory Muestra el contenido del directorio
```bash=s
ls
# Lista completa
ls -l
# Ordenada por fecha de creación/edición
ls -lt
# Orden reverso order de creación/edición
ls -ltr
```
:notebook: Siempre lee el manual de instrucciones, si no estas seguro de como actua un comando o quieres más información.
```bash=s
man ls
man echo
```
* Crear un archivo vacío `touch`
```bash=s
touch file1
```
* Copiar un archivo o carpeta con el comando `cp`(Copy files)
```bash=s
# Copiar archivo
cp file1 file2
# Crear una carpeta nueva
mkdir newFolder1
# Copiar newFolder1 newFolder2
cp -r newFolder1 newFolder2
```
> :warning: -r significa recursive... es decir copia/mueve/borra la carpeta y todo el contenido.
* Standard output el comando `>` permite guardar el output de cualquier comando en un archivo.
```bash=s
# output en la pantalla
ls -ltr
# Output en un archivo de texto,
ls -ltr > fileList.txt
# El comando `nano` permite ver archivos de texto
nano fileList.txt
# Para que añada el output a un archivo existente sin sobreescribirlo
ls -ltr >> fileList.txt
```
## Actividad práctica
:::info
**Objetivos:** Manipular la terminal de Linux y reconocer comandos básicos. Diseñar un script sencillo usando el lenguaje bash.
:::
### 1. Manipulación de archivos en la línea de comandos
- Descarga estos archivos en tu ordenador: [sequence.fasta](https://drive.google.com/file/d/1rJLjfOmkzLUhVWbvGWrE3rBnoq7YgOgQ/view?usp=drive_link) y [sequence2.fasta](https://drive.google.com/file/d/1xiSq3M5M5xg-RhQK3cHG4TVY82ZV_L-q/view?usp=drive_link)
- Abre el emulador de terminal de Linux (Gitbash)
- Crea una carpeta de trabajo llamada "seminario1"
````bash=s
mkdir seminario1
````
- Vuelve a home
````bash=s
cd ..
````
- Ve a la carpeta de descargas
````bash=s
cd Downloads
````
- Mueve los archivos descargados
````bash=s
mv sequence.fasta ~/seminario1
mv sequence2.fasta ~/seminario1
````
- Ve a la carpeta seminario 1
````bash=s
cd seminario1
````
- Sigue las instrucciones:
````bash=s
# Leer el archivo
less sequence.fasta
# Ver sólo las primeras diez líneas
head sequence.fasta
# Ver sólo las primeras 50 líneas
head -n 50 sequence.fasta
#Seleccionar una línea concreta de un fichero
# Esta es la etsructura: head -numLinea fichero | tail -l
head -n 15 sequence.fasta | tail -l
#Ejemplo seleccionar línea numero 43 del fichero sequence.fasta (head -43 | tail -l)
head -n 43 sequence.fasta | tail -l
# Ver sólo las últimas diez líneas
tail sequence.fasta
# Ver varios archivos
cat sequence.fasta sequence2.fasta
# Unir varios archivos en un archivo final
cat sequence.fasta sequence2.fasta > merged.fasta
# Ver el resultado
less merged.fasta
# 'q' para salir
# Contar las palabras con `wc`
wc sequence.fasta
# Ver el número de líneas de un archivo
wc -l sequence.fasta
# Bucar patrones específicos con el comando `grep`
# Todas las líneas que contengan ">"
grep ">" merged.fasta
# Que cuente las coincidencias
grep -c ">" merged.fasta
# Invertido
# Que empiece con "A"...
grep "^A" merged.fasta
#Si queremos que el contenido que estamos buscando se guarde en un archivo nuevo usar ">"
grep ">" merged.fasta > resultado.txt
`````
### 2. Creación de un script ejecutable
Ejemplo: Crear un script que al ejecutarse imprima el texto “Hola Mundo”.
Paso 1: Abrir un editor de texto y crear un archivo llamado script.sh
```
nano saludo.sh
```
Paso 2: Escribir en el editor texto las líneas del script:
#!/bin/bash
echo "Hola mundo"
>La primera línea: #!/bin/bash, es la directiva shebang que indica que el intérprete a utilizar es Bash. La siguiente línea es el comando 'echo', que se utiliza para imprimir texto en la salida estándar. En este caso, 'echo' imprime la cadena "Hello, World!".
Paso 3: Hacer el script ejecutable, para ello escribimos el siguiente comando:
```
chmod +x saludo.sh
```
Paso 4: Ejecutamos el script escribiendo ./ y el nombre del script
```
$ ./saludo.sh
```