###### tags: `UAX` `Estudiantes`
# Seminario Introducción a Linux
Tema 1: Introducción a la Bioinformática - Grado en Biotecnología (Universidad Alfonso X el Sabio)
:woman: Autora: Laura Judith Marcos Zambrano
## Acceder al terminal:
Puedes buscar en <<Aplicaciones>> o acceder a tarvés del teclado con la steclas **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.
```
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
Para esta actividad vamos a crear una carpeta compartida en nuestra máquina virtual y manejar archivos usando la línea de comandos.
### Crear carpeta compartida.
1. Crear la carpeta compartida en ambas máquinas.
1.1 Crear una carpeta nueva en nuestro escritorio de windows/Mac y llamarla `compartida`

:warning: Descargar los archivos: [secuencia1](https://drive.google.com/file/d/1rJLjfOmkzLUhVWbvGWrE3rBnoq7YgOgQ/view?usp=sharing) y [secuencia2](https://drive.google.com/file/d/1xiSq3M5M5xg-RhQK3cHG4TVY82ZV_L-q/view?usp=sharing) y guardalos en la carpeta de Windows/Mac.
1.2 Crear una carpeta con la línea de comandos en la máquina virtual en ubuntu y llamarla `compartida`.
```bash=1
mkdir compartida
```
2. En la máquina virtual hacer click derecho en el icono de la carpeta abajo en la derecha <<Preferencias de Carpeta compartida>>

3. Hacer click en el botón <<Añadir nueva carpeta compartida>>

4. Señalar la ruta de la carpeta: `/Escritorio/compartida`
nombre de la carpeta: "compartida" y directorio en la máquina virtual
`/home/$user/compartida`
>La ruta de la carpeta creada la puedes ver con el comando `pwd`

5. En el terminal de Ubuntu en la máquina virtual escribir la siguiente línea de código para que la carpeta esté montada con los permisos requeridos:
```bash=s
sudo mount -t vboxsf compartida /home/$user/compartida
```
> Donde "compartida" es el nombre que le hemos dado a la carpeta en nuestro ordenador, y `/home/$user/compartida`corresponde al punto de montaje (El directorio en ubuntu)
## Ver archivos compartidos y usar algunos comandos para manipular secuencias
````bash=s
# Ir a la carpeta compartida:
cd compartida
# 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
head -numLinea fichero | tail -1
#Seleccionar línea numero 43 del fichero sequence.fasta
head -43 | tail -1
# 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