====== Guía de Linux ======
Práctica básica de los comandos más comunes de GNU/linux en bash.
Para abrir un terminal, utilice el atajo de teclado [Ctrl+Alt+t] o busque en los menús de su distribución.
===== man: =====
Ejecute el siguiente comando. ¿Por qué falló?
man
Ejecute el siguiente comando y lea brevemente la descripción. ¿Qué hace //man//?
man man
Ejecute los siguientes comandos. ¿Son lo mismo? Como desarrolladores, ¿Cuál nos interesa más?
man printf
man 1 printf
man 3 printf
===== ls: =====
Ejecute el siguiente comando y lea brevemente la descripción. ¿Qué hace //ls//?
man ls
Ejecute el siguiente comando y observe la salida. ¿Reconoce alguna carpeta?
ls
Ejecute el siguiente comando y observe la salida. ¿Qué son los archivos y carpetas con punto adelante?
ls -a
Ejecute el siguiente comando y observe la salida. ¿Qué representan las diversas columnas?
ls -l
Ejecute los siguientes comandos. ¿Son lo mismo?
ls -a -l
ls -al
Ejecute los siguientes comandos. ¿Qué es lo que estamos haciendo?
ls ~
ls /
ls /home
===== pwd: =====
Ejecute el siguiente comando. ¿Qué hace //pwd//?
man pwd
Ejecute el siguiente comando. ¿En qué directorio estamos trabajando?
pwd
===== cd: =====
Ejecute el siguiente comando. ¿Por qué falló?
man cd
Ejecute el siguiente comando. ¿Qué hace //cd//? ¿Por qué no está en el manual (usar google)?
help cd
Ejecute los siguientes comandos. ¿Qué hizo //cd//? ¿Qué carpeta lista //ls// cuando no tiene parámetros?
ls
cd /
pwd
ls
Ejecute los siguientes comandos. ¿Qué representan . y .. en linux?
cd /
pwd
ls
cd /home
pwd
ls
cd .
pwd
ls
cd ..
pwd
ls
Ejecute los siguientes comandos. ¿Qué es ~ en linux? ¿A qué directorio cambia //cd// cuando no tiene parámetros?
cd ~
pwd
cd
pwd
Ejecute el siguiente comando para iniciar una sesión de bash adentro de su sesión de bash,
permitiendo guardar el flujo de salida en un archivo. //bash// es para ejecutar la shell, //|//
es para redirigir la salida de un comando a la entrada de otro, y //tee// sirve para guardar
una copia del flujo de salida en un archivo. No es necesario que lo aprendan ahora,
ya lo van a ver en profundidad cuando vean Pipes,
pero si les interesa está muy bueno y es útil.
bash | tee log_clase_1.txt
===== mkdir: =====
Ejecute el siguiente comando. ¿Qué hace //mkdir//?
man mkdir
Ejecute los siguientes comandos para crear una carpeta en la cual trabajar.
mkdir practicalinux
cd practicalinux
pwd
A partir de aquí asumimos que ya sabe como detectar en qué directorio están trabajando,
utilizando pwd o observando el directorio en el prompt de su terminal,
por lo que no lo volveremos a mencionar.
Ejecute el siguiente comando y observe la salida.
mkdir dir0
ls
Ejecute los siguientes comandos. ¿Por qué falló el primero? ¿Cómo lo solucionamos?
mkdir dir1/dir2
mkdir -p dir1/dir2
ls
Ejecute los siguientes comandos para crear un archivo con el que poder ejecutar los siguientes comandos.
ls >> arch0.txt
ls
El comando de dirección de flujo //>>// redirige el flujo de salida y lo agrega al final de un archivo.
Este tipos de comandos (de direccionamiento de flujo) son una herramienta muy poderosa
que le da un gran poder a los usuarios avanzados de linux para diversas tareas cotidianas.
Un ejemplo que puede servir para informática 1, es al hacer logging, emitir los logs por stderr
y redirigir stderr a un archivo, utilizando el comando:
./a.out 2>>log.txt
Ejecute (si quiere) el comando para instalar un paquete llamado //tree//,
que permite mostrar de forma bonita carpetas y archivos de forma recursiva.
sudo apt install tree
En caso de no querer descargar el paquete, puede realizar una función similar
ejecutando este comando en su lugar cuando sea necesario.
find
===== cp =====
Ejecute el siguiente comando. ¿Qué hace //cp//?
man cp
Ejecute los siguientes comandos. ¿Por qué falló el primero? ¿Cómo lo solucionamos?
Ejecutamos tanto //tree// como //find// para que los que instalaron //tree// puedan ver las diferencias entre ambos.
cp dir1/dir2 dir_3
cp -r dir1/dir2 dir_3
tree
find
Ejecute los siguientes comandos. ¿Qué hizo el primero? ¿Qué hizo el segundo?
cp -r dir1/dir2 .
cp arch0.txt dir3/
tree
===== mv =====
Ejecute el siguiente comando. ¿Qué hace //mv//?
man mv
Ejecute los siguientes comandos. ¿Qué hizo cada uno?
mv arch0.txt dir0/
tree
mv dir0/arch0.txt arch1.txt
tree
mv dir0 dir4
tree
===== rm =====
Ejecute el siguiente comando. ¿Qué hace //rm//?
man rm
Ejecute cuidadosamente (//rm// no perdona) los siguientes comandos y observe sus efectos.
rm arch1.txt
tree
Ejecute cuidadosamente los siguientes comandos. ¿Por qué falló el primero? ¿Cómo lo solucionamos?
rm dir4
rm -d dir4
tree
Ejecute cuidadosamente los siguientes comandos. ¿Por qué falló el primero? ¿Por qué la solución es distinta?
rm -d dir3
rm -r dir3
tree
===== Finalización =====
Ejecute estos comandos para eliminar recursivamente todos los archivos creados,
dejando su computadora como estaba al inicio de la práctica.
cd ..
rm -r practicalinux
Ejecute los siguientes comandos. El primero sale de la sesión de bash interna.
El segundo le muestra que existe un archivo llamado "log_clase_1.txt" que
deberá enviar para la corrección del tp.
exit
ls -l | grep log_clase_1.txt
Si decide que no quiere más el paquete //tree//,
ejecute el siguiente comando para eliminarlo.
sudo apt purge tree