###### tags: `UNIR` `Estudiantes`
# Actividad práctica Clase 5:
<font color = 'gray'>
<p style="text-align:right;">Prof.: Laura J. Marcos-Zambrano </font>
## Comandos básicos bash:
* 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 terminal de Linux o 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 "Hola mundo". Puedes escribir lo que quieras.
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
```