Ambas son interfaces de información pero están destinadas a usuarios diferentes y tienen propositos diferentes.
Antes de las GUI solo había CLI. Todo lo que se puede hacer con GUI se puede hacer con CLI.
- Codifican un contexto que informa al usuario para que maximice la utilidad de la interface.
- Usa simbolos, lenguaje, jerarquia, etc.
- Logran que las máquinas sean más accesibles.
- Actuan en una capa más cercana al kernel.
- Permiten hacer más operaciones. Muchas con más precisión y eficiencia.
- Exige más precision al usuario que es el responsable de conocer los comandos.
- Es universal, no se adapta a los código del usuario (lengua, cultura, etc.)
- No cambia con el tiempo.
- Más facilidad para automatizar tareas.
Herramiemta para la programación interactiva.
Un **shell** ejecuta comandos de uno en uno y devuelve resultados a cada uno de ellos.
echo Hola mundo
Interprete de comandos que interactuar con aplicaciones o con el sistema operativo.
(bash, zsh, PowerShell, cmd.exe)
Es la ventana envoltoria donde se ejecuta el shell.
(iTerm2, Terminal de Windows)
Imprime el shell que se está ejecutando dentro:
echo $0
Cambia el shell:
bash
#### Sistema de archivos
Siempre estás en una carpeta del sistema de archivos del dispositivo.
Ruta del directorio actual de trabajo:
pwd
- El path es la ruta hacia un recurso o directorio del sistema.
/
representa un nivel de anidamiento dentro de una carpeta.
Cambia el directorio de trabajo al directorio raiz:
cd /
Lista el contenido del directorio actual
ls
Cada usuario del sistema tiene su propio directorio.
Referencias especiales a directorios:
~
es una referencia que apunta al directorio del usuario.
directorio actual..
directorio superior o padre del actual
cd ~
cd ../..
Los comandos son ejecuciones de programas CLI del sistema.
Imprime el path donde está almacenado el programa cd:
which cd
""
Se pueden pasar argumentos a algunos programas para cambiar su ejecución:
Lista el contenido del directorio raiz. (/
)
ls /
Abre el directorio actual con visual code (.
):
code .
Las flags son otra forma de cambiar la ejecución de un programa. Prefijo -
o --
.
Lista el contenido de un directorio con detalle ( -l
)
ls -l
Lista el contenido de un directorio con detalle y sus items ocultos (-a
)
ls -l -a
Algunos programas permiten combinar flags
ls -la
Por convención agunos programas incluyen la flag --help
para consultar las opciones disponibles.
git --help
Version de un programa cli instalado:
git --version
Algunas flags también pueden aceptar argumentos con --flag=arg
o --flag arg
- cat: Envía a la salida el contenido de un archivo. (lo imprime en la terminal)
cat file.txt
- less: (paginado)
q
salir/
buscar (n
siguienteN
anterior coincidencia)- Lo usa git por defecto para mostrar información
TIPS:
- Finalziación de paths, comandos, etc. con
TAB
clear
limpia la terminal
Crear directorio:
mkdir project
Crear archivo dentro de la nueva carpeta:
touch project/README.md
(Ejercicio 1)
- Comprueba que estás usando el shell bash
- Comprueba que estás en el directorio de tu usuario. Si no es así colócate en él.
- Imprime por pantalla
Hola user
- Crea una carpeta con el nombre
ejercicio1
en tu directorio de usuario - Navega dentro de la nueva carpeta
- Imprime por pantalla el path donde se encuentar el fichero con el código fuente del programa
cd
- imprime por pantalla el código fuente del programa
cd
- Sin salir de
ejercicio1
, imprime todos los archivos y carpetas que contiene tu directorio de usuario. Ocultos incluidos.
El comando rm
borra de forma definitiva archivos y directorios.
Borra archivo:
rm file.txt
Borra directorio y todo lo que contiene
rm -rf folder
Nunca ejecutar rm -rf /
Copiar un archivo dentro de la carpeta vscode:
cp file.txt ~/config/vscode/
Copiar un archivo dentro de la carpeta vscode y cambia su nombre:
cp file.txt ~/config/vscode/code.txt
Copiar carpeta carpeta vscode al directorio actual
cp -R ~/config/vscode .
Copiar carpeta carpeta vscode al directorio actual y la renombra
cp -R ~/config/vscode vscode-config
Para mover o renombrar se usa mv
y funciona igual para archivos y directorios.
- mv originPath targetPath
Renombra la carpeta vscode-config a vscode
mv vscode-config vscode
Mueve el archivo readme.md dentro del directorio vscode
mv readme.md vscode/
Algunos:
- nano
- vi
- vim
- emacs
vim test.txt
Modos : Normal, Inserción, Comando, Visual
-
ESC
para entrar en modo comando::q
para salir:q!
salir descartando cambios no guardados:w
guardar cambios:wq
guardar y salir
-
hjkl
desplazar el cursor -
i
modo inserción -
v
modo visual para hacer selecciones
Las entradas y salidas son streams o flujos de datos. Y podemos desconectar y conectar (Redireccionar) flujos para estas entradas y salidas.
- Entrada estanda: Es la entrada de un programa
- Salida estandar: Por defecto es la pantalla adel terminal
- Salida error:
Redirecciona la salida estandar para echo al fichero log.txt
echo "Contenido carpeta" >> log.txt
Agregar salida estandar al fichero:
ls >> log.txt
Muestra los archivos y directorios que contienen 'test' en su nombre
ls | grep test
cat pruebas 2 > err.log cat prueba 1> salidastd.log
cat prueba 2>&1 /dev/null (Ejercicio 2)
- Crea una carpeta con el nombre
ejercicio2
en tu directorio de usuario - Crea un archivo vacío con nombre
file1.txt
- Abre el archivo usando el editor vim y escribe tu nombre. Guarda y sal de vim
- Imprime en pantalla el contenido del nuevo archivo
- Haz una copia del archivo en el mismo directorio con nombre
file2.txt
- Crea otro directorio con nombre
ejercicios
en tu directorio de usuario - Mueve los directorios
ejercicio1
yejercicio2
dentro - Crea un archivo llamado
log.txt
dentroejercicio1
con la lista de los archivos y directorios de tu directorio de usuario. (>
) - Imprime en la terminal el contenido del archivo
log.txt
- Cambia el nombre del directorio
ejercicios
aejercicios-bash
- Elimina la carpeta
ejercicios-bash
completa