# Command Line Linux

## Que es comand line
La Línea de Comandos Es una Interfaz (o CLI, por sus iniciales en inglés) es un método para manipular con instrucciones escritas al programa que subyace debajo. A esta interfaz se le acostumbra llamar Consola de sistema o consola de comandos
El comando "listar archivos", bajo diversos programas:
A continuacion se en listan las diferentes consolas para cada sistema
CMD - Windows
PowerShell - Windows
Shell - UNIX
## Que es un comando
Es una instrucción que el usuario proporciona a un sistema.
## comando pwd
El comando `pwd` de las siglas en inglés _print working directory_, su única función es mostrar el directorio en donde se encuentra actualmente.
```
pwd
```
## comando cd
El comando `cd` (_Change Directory_), sirve para poder navegar entre directorios, necesita como parámetro una ruta, ya sea relativa o absoluta
```
cd ruta/directorio/
```
## comando ls
Listar el contenido de un directorio, ademas tiene otros usos como son
- mostrar archivo ocultos con el parametro -a
- lista de archivo con inodo -i
- Muestra el tipo de archivo ls -l
- Muestra el archivo con fecha de modificación ls -lt
**Actividad:** Navega hasta el directorio `Downloads`, dentro de el ejecuta el comando `pwd` para asegurarte de que estas en la carpeta correcta, después despliega la lista de archivos en esa carpeta.
## comando touch
`touch` es un comando básico de Linux que sirve para crear archivos vacíos o cambiar los Timestamps de los archivos (última fecha u hora de acceso o modificación del archivo).
```
touch archivo.py
```
## Comando cat
Deriva su nombre de la palabra concatenar y te permite crear, fusionar o imprimir archivos en la pantalla de salida
```
cat archivo.py
```
## Comando VI
Con este comando se abre un editor de texto plano de linux
```
vi archivo.py
```
## Crear una carpeta (directorio)
Con el comando `mkdir` que significa _make directory_, este comando e utilizado para crear un nuevo directorio o carpeta del sistema de archivos. Si existe un directorio con el mismo nombre este no trabaja. Se utiliza en sistemas operativos como UNIX y Microsoft Windows.
```
mkdir dir1
```
**Actividad:** Crea una carpeta con el nombre _personal_, dentro de esa carpeta crea un archivo con el nombre _myData.txt_, posteriormente edita edita el archivo con _vi_ y agrega tus datos personales como Nombre, Apellidos, Fecha de nacimiento y número telefónico. Posteriormente, muestra tus datos (imprime) en la consola.
## Rutas absolutas y relativas
### Ruta absoluta o completa
Una ruta absoluta o completa comienza con la ***/***
```
cd /etc/skel
```
### Ruta relativa
Las rutas relativas indican el camino para encontrar un elemento, pero basándonos en el directorio desde el que se ejecuta la orden, es decir, desde el directorio en donde nos encontramos posicionados. Para saber si son correctas o no tenemos que saber siempre desde dónde se han utilizado
```
cd escritorio/misdocumentos/
```
## Comando CP
El comando `cp` ("copy") copia ficheros y directorios, para copiar un archivo basta con el siguiente comando
```
cp archivo.py ruta/relativa
```
para poder copiar un directorio se necesita el parametro ***-r*** este parametro hace una referencia a un directorio y no a un archivo
```
cp -r dir1/ dir2/
```
## Comando MV
Con el comando `mv` se pueden mover archivos a través de rutas relativas o absolutas.
```
mv dir1/ /export/home
```
También otro uso que tiene es que se puede cambiar el nombre del archivo, siempre y cuando esten el mismo nivel de archivos.
```
mv archivo1.py nuevoNombre.py
```
## Borrar archivos
Siempre que tengamos archivos creados en algun directorio en la mayoria de veces se tendran que borrar dichos archivos, hay muchas formas de hacer eso , una de ellas es borrarlos mediante interfaz grafica, la otra es mediante el uso de un comando.
El comando `rm` nos ayudará a remover algun archivo dentro del directorio o dentro de la ruta absoluta o relativa
```
rm archivo.py
```
Podemos borrar algun directorio con el parametro ***-r***
```
rm -rf dir1/
```
**Actividad:** Copia el archivo _myData.txt_ a la carpeta _Documents_, una vez que copiaste el archivo, elimina la carpeta _personal_ que se encuentra en _Downloads_.
# Command Line Avanzado
## Permisos
En algunas ocaciones no podemos hacer algunas acciones dentro de carpetas o de archivos, para solucionar esto utilizamos `chmod`
Por ejemplo para dar permisos de ejecucion a un archivo
`chmod permisos nombre`
```
chmod +x archivo.sh
```
Para saber mas acerca de los permisos consulta [aqui](https://www.hostinger.mx/tutoriales/cambiar-permisos-y-propietarios-linux-linea-de-comandos/)
## Variables de entorno
Normalmente, esos valores hacen referencia a archivos, directorios y funciones comunes del sistema cuya ruta concreta puede variar, pero que otros programas necesitan poder conocer.
Para poder ver todas las variables de entorno que tenemos por defecto basta con teclar en la _command line_ `env` y saldrá una lista con varias variables de entorno y para poder ejecutar alguna se necesita alguna orden como cat, echo, cd, ls, entre otros.
En este ejemplo nos dirigiremos al direcotrio casa mediante una varibale de entorno.
```
cd $HOME
```
### Creacion de una variable de entorno
Nosotros mismos tambien podemos crear nuestran propias variables de enntorno, este proceso se hace desde la línea de comando, observa el siguiente ejemplo
```
Escritorio = /home/user/Escritorio
```
Ahora procedemos a imprimir nuestra variable , toda variable para acceder a su contenido se usa el simbolo ***$***
```
echo $Escritorio
```
Si estamos manejando un solo usuario y necesitamos que es variable se uso en este mismo _shell_ o en otros, debemos exportarla.
```
export $Escritorio
```