# Shells

Tanto Linux como Windows tienen CLI's con las que operamos como usuarios avazados.

### Linux:

Hay una variedad de shell's que existen en el ecosistema de Linux, pero la shell predeterminada para muchos sistemas operativos se conoce como **Bash.**

### Windows:

* CDM :
    
    * Es una interface heredada que permite el acceso a los comandos **DOS**
        
    * MS-DOS fue el primer sistema operativo de Microsoft y contenía muchas características básicas a las que todavia se puede acceder através de CMD
        
* Powershell:
    
    * Interfaz y lenguaje contodas las funciones que permiten secuencias de comandos complejas a travéz de cdmlest (es un comando lijero) y canalizaciones. Como todo el lenguaje fue escrito para trabajar con Windows, permite un control detallado y una fácil manipulacion del sistema operativo
        
* WSL (Windows Subsystem for Linux) **Solo Windows 10**
    
    * El subsistema de Windows para Linux permite a los desarrolladores ejecutar un entorno Linux, incluidas la mayoría de las herramientas, utiliades y aplicaciones de la línea de comandos, directamente en Windows, sin modificaciones, sin la sobrecarga de una maquina virtual tradicional o una configuracion de arranque dual.
        
    * Básicamente, es una mini máquina virtual Linux, con acceso a todos los archivos en la máquina host de Windo
        
* Linux en el navegador (JS Linux Browser Shell) :
    
    [Js Linux Browser Shell](https://bellard.org/jslinux/vm.html?url=alpine-x86.cfg&mem=192)
    

### Diseño de comandos

Abrimos una terminal Linux no Windows, si aun no tienes una terminal o un sistema Linux instalado puedes abrir la terminal **JS Linux Browser Shell** que deje en la parte de arriba.

Escribimos nuestro primer comando :

`🦖  ~ whoami`

`r3x`

whoami no dice cual es el nombre del usuario que esta interactuando con la máquina .

El segundo comando importante es :

`🦖  ~ pwd`

`/home/r3x`

pwd: es una abreviatura de **print working directory** y lo que hace este comando es mostrarnos en donde estamos posicionados, esto es util si en algun momento quieres copear una ruta para mover una archivo de un lugar a otro.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1679359307879/f6289d33-5228-4277-ad6d-b53541c5eb00.png align="center")

En este caso voy a mover un archivo llamado **prueba.txt** a mi carpeta box que esta en la ruta **/media/r3x/box** con e

comando mas la ruta ejemplo :

`mv prueba.txt /media/r3x/box`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1679359475382/f799db14-9dd9-42b3-8484-f122b74edcfc.png align="center")

Listo ahora ya aparece mi archivo prueba.txt en la ruta **/media/r3x/box**

Continuando con los comandos utiles e importantes uno de ellos es **ls** (listing) que nos permite listar todos los archivos que hay en una ruta espesifica.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1679361946585/50121c0b-dfeb-4de9-a35d-d2549eef3951.png align="center")

💡*Consejo* : sabias que tambien puedees enumerar contenido de un directorio sin tener que navegar hasta él por ejemplo:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1679362372918/c663b294-a3b5-4336-843a-d7cd1753301a.png align="center")

sin cambiar de directorio tiré de un comando + una ruta y como vez ahí esta nuestro archivo anterior de **prueba.txt**

!Felicidades En esta breve serie de comandos, aprendimos a ver con que usuario estamos interactuando a la hora de usar a terminal, tambien aprendimos ver en donde estabamos posicionados y listar los archivos que hay en el lugar en donde nos encontramos.
