Instructor: Enrique Devars
Materials: https://platzi.com/clases/terminal/
/
y desciende a otras carpetas. De todas las carpetas, nos interesa home
ya que dentro se encuentran las carpetas de cada usuario, donde están todos los documentos.~
, que es donde están nuestros documentos /home/usuario
.cd
Para acceder una carpeta, usa cd <carpeta></carpeta>
, para regresar a la carpeta anterior cd ..
. Para regresar a home, solo haz cd
.clear
Para limpiar la pantalla, o bien, el comando ctrl+l
.-
.ls
para listar archivos. Agrega -l
o -lh
para agregar detalles.pwd
print working directory 🖨️.file <archivo></archivo>
sirve para describir un tipo de archivo y sus características 🥴.Linux File Hierarchy Structure - GeeksforGeeks
ls
: Algunas variantes:
ls -la
: Nos muestra todo, incluso los ocultos.ls -lS
: Los ordena por tamaño.ls -lr
: Los muestra en reversa.tree
: Nos muestra todo, lo que hay dentro de cada carpeta, en forma de arbol 🌲. Podemos elegir el nivel de profundidad con tree -L
mkdir
: Para crear un directorio nuevo 📁. No es buena idea en general poner espacios en el nombre de los directorios. Si lo quieres hacer, usa comillas "Nombre con espacios"
.touch
: Para crear archivos vacíos. Puedes crear varios con un solo comando 📄.cp <archivo a="" copiar=""></archivo>
: Para copiar un archivo. Si no se pone una ruta en el nombre del nuevo, se va a copiar en el directorio donde estés 🖨️.mv <archivo><archivo con="" nueva="" ruta=""></archivo></archivo>
: Para mover archivos a otra ruta. También te sirve para renombrarlos 💫, funciona con directorios y con archivos.rm <archivo></archivo>
: Elimina archivos. Hay una opción muy útil que es rm -i <archivo></archivo>
(interactivo) que te pregunta explícitamente si en verdad si quiere borrarlo 😟. Funciona de manera directa para directorios vacíos, pero si hay archivos dentro, debes usar la opción recursiva rm -r
, que lo que hace es ir borrando todo lo que hay dentro y al final borra el directorio 🔫. Te va preguntando por cada cosa.head
: Nos muestra las primeras 10 líneas de un archivo de texto. Para especificar el número de líneas head -n<numero de="" lineas=""><archivo></archivo></numero>
tail
: Nos muestra las últimas 10 líneas.less <archivo></archivo>
: Este es muy cool, es muy interactivo, nos permite hacer scroll, y nos permite hacer búsquedas haciendo /<palabra a="" buscar=""></palabra>
. Para salir presionamos q
🔍.xdg-open <archivo></archivo>
: Para abrir un archivo desde la terminal. Usa las aplicaciones predeterminadas. Esto para linux, para mac, es open
. Esto crea un proceso en la terminal que no nos dejará hacer nada mas. Para terminar el proceso ctrl+c
.nautilus
nos permite abrir el explorador de archivos en una posición dada (en linux) 📁.cd
mkdir
ls
type <comando></comando>
: Nos permite conocer que tipo de comando es 🤔.alias l="<secuencia de="" comandos="">"</secuencia>
: Nos permite crear comandos. Son temporales, se borran al cerrar la terminal 👶🏼.help <comando></comando>
: Nos permite consultar un poco de documentación de un comando 📄.man <comando></comando>
: De manual, nos permite conocer mucha mas información de un comando.info <comando></comando>
: Similar al anterior, pero un poco resumido y con otro formato.whatis <comando></comando>
: Describe un comando en una sola línea ☺️. No funciona con todos.ls
🔍. Puedes utilizar wildcards con otros comandos que realicen manipulación de archivos como mv
, cp
o rm
💫. También se conocen como comodines.ls *
: Nos muestra todos los archivos que tengan en su nombre dicho texto al final. Si haces ls <texto>*</texto>
lo busca al final. El asterisco significa cualquier string.ls <text>?</text>
El signo de interrogación sustituye a cualquier carácter, por ejemplo, buscamos todos los archivos que tengan una palabra y un número dado de caracteres después. El signo de interrogación significa cualquier carácter.ls [[:upper:]]*
Para filtrar cosas que inicien con una mayúscula; esto busca también dentro de los directorios. Esto se conoce como una clase.ls [[:lower:]]*
Lo mismo pero con minúsculas.ls -d
Se muestran solo directorios.ls [ad]*
Todo lo que inicie con a
o con b
>
. Por ejemplo ls > misarchivos.txt
, entonces la salida del comando se guarda en ese archivo de texto. Siempre crea este archivo (si ya existe, lo reescribe).✍🏽"comando" >> "archivo"
. Esto ambos solo redirigen los stdout
.stderr
, agregas su file descriptor "comando" 2> "archivo"
. 👽"comando" >> "archivo" 2>&1
.stdin
se usa <
. Esto te permite tener de entrada de comandos algún archivo. Un ejemplo sería tail < archivo.txt > archivo_tail.txt
. Se puede emplear también para pasar datos de entrada desde un archivo a un script de Python a ejecutar 🐍. Esto es python3 scrip.py < entrada.txt
. Realmente no se usa mucho.echo
genera un stdout con el texto que tenemos.cat <archivo1><archivo2></archivo2></archivo1>
muestra los dos archivos concatenados 💩.|
hace que el stdout de un comando sea el stdin de otro comando. Por ejemplo ls -lh | less
tee
hace algo parecido a >
, pero dentro de los pipe´s, por ejemplo ls -lh | tee output.txt |less
. Se puede poner en medio, pero se ignora porque se sigue pasando.cowsay "Texto"
es un comando que imprime una vaca que dice algo JAJAJAJAJ 🐮._________________________
< Nunca pares de aprender >
-------------------------
\^__^
\(oo)\_______
(__)\ )\/\ ||----w |
|| ||
echo "Texto" | lolcat
esto lo imprime con colores bonitos 😂.;
, por ejemplo ls; mkdir carpeta1; cal
👁️&
, por ejemplo ls & date & cal
⏲️&&
, un ejemplo es mkdir carpeta1 && cd carpeta1 && echo "Si se pudo"
. Si no se puede ejecutar el primer comando, no se ejecuta el siguiente. 🚆||
, por ejemplo cd carpeta || echo "No hay carpeta"
🤩Cuando listamos con ls -l
se muestran varias cosas. Los tipos de archivos:
-
archivo normal.d
directorio.l
link simbólico.b
archivo de bloque especial.Tipos de modos: rwx
corresponde con read, write y execute. Se representan con 3 bits, y los podemos manejar a través de un modo octal, esto es, pasar de binario a número.
rwx (1,1,1)
dueño. En modo octal es 7.r-x (1,0,1)
grupo. En modo octal es 5.r-x (1,0,1)
world. Octal 5.Modo simbólico: Esto es para asignar los permisos a los diferentes posibles usuarios.
u
Solo para el usuario.g
Solo para el grupo.o
Solo para otros (world).a
Aplica para todos.!root
es especial y puede hacer de todo🚶🏽.> archivo.txt
y también podemos editarlo con cat > archivo.txt
📜[tipo de archivo][rwx usuario][rwx grupo][rwx mundo]
, por ejemplo, -rw-r--r-- mitexto.txt
👀.chmod <permiso en="" octal="" para="" usuario=""><para grupo=""><para mundo=""><archivo></archivo></para></para></permiso>
change mode nos sirve para cambiar los permisos de un archivo. Si hacemos por ejemplo chmod 755 mitexto.txt
tendremos ahora -rwxr-xr-x mitexto.txt
, esto no cambia para nada el contenido del archivo.chmod u-r mitexto.txt
. Para agregar, se usa la suma. 🧮chmod u-x,go=w mitexto.txt
.whoami
Para saber que usuario somos, y también podemos obtener el ID del usuario con id
.su root
para cambiar de usuario hacía root
, hay que tener cuidado al usar este usuario 😟. Su home es incluso distinto. Los archivos que crea root
(o otro usuario) no se pueden eliminar por un usuario normal.sudo <comando></comando>
nos otorga temporalmente los permisos de root para ejecutar algún comando que ocupe permisos especiales. 🦸🏽 Nunca dejes el usuario root por defecto, y ponle una contraseña distinta!!ln -s <ruta></ruta>
Esto para hacer link simbólicos, que son un tipo de archivo que hacen referencia a otro lugar, básicamente es un acceso directo desde terminal 📁.printenv
nos muestra todas las variables de entorno que tenemos configuradas 📔.echo $<variables></variables>
esto nos sirve para imprimir una variable en particular.HOME
es nuestro HOME de usuario 😆.PATH
tiene todas las rutas donde se encuentran los binarios en los que se ejecuta nuestro sistema. 🛣️ Hay varios manejadores de paquetes para binarios, pero no todas las veces se agregan a PATH, y se deben agregar a mano..bashrc
que es donde está nuestra configuración de Bash. Lo podemos abrir con VS Code para modificarlo. En este archivo podemos crear alias.alias <nombre>="comando"</nombre>
para crear un alias útil 👀.code <archivo></archivo>
para abrir un archivo de texto en VS Code desde la terminal.PLATZI_MESSAGE='Hola amigos"
.PATH=$PATH:<ruta></ruta>
, guardamos, cargamos bash en la terminal, y listo 😄.Improve Your Productivity Using Git and Bash Aliases
which <programa></programa>
Busca en todas las rutas del PATH para encontrar donde está alojado algún archivo binario 🔢.find <ruta inicial="">-name <archivo></archivo></ruta>
Nos permite encontrar un archivo a partir de una ruta inicial, y dentro de todas las carpetas que surjan de ese inicio 🌲.
find <ruta inicial="">-type <tipo>-name</tipo></ruta>
podemos especificar el tipo de archivo, d → directorio, f → documento.find <ruta inicial="">-size <tamaño><unidad></unidad></tamaño></ruta>
podemos buscar tamaños mayores a un determinado tamaño, por ejemplo, de 20M (megas).find ./ -name *.txt -type f -size 1M > mis_archivos_texto.txt | echo "archivos guardadados exitosamente"
find
👀-**maxdepth**
: Después de está bandera se pone el número de niveles de profundidad en los que queremos realizar la búsqueda-**empty**
: Realiza una búsqueda de archivos y/o directorios vacíos.-**perm**
: Búsqueda de archivos por permisos.-**not**
: Retorna los resultados que no coinciden con la búsqueda.-**delete**
: Está bandera se coloca al final del comando, eliminara los resultados de la busqueda(⚠️Hay que tener mucho cuidado al usarla).Es uno de los comandos mas útiles, y de los mas potentes dentro de Linux.🤖
Nos permite encontrar coincidencias de una búsqueda dentro de una archivo 🤯.
grep <expresión regular=""><archivo></archivo></expresión>
: El primer parámetro es una expresión regular, y es diferente a las wildcarts; es muy versátil para realizar búsquedas. ¡Hay un curso de eso en Platzi!.
Tenemos varías opciones:
-i
para ignorar case-sensitive.-c
cuenta el número de elementos.-v
para hacer búsqueda complementaria, esto es, todos los elementos que no coincidan.Puedes usar grep
junto con otros comandos. Por ejemplo, para filtar los resultados de ls
, algo cómo ls -lh | grep > busqueda.txt
🧠
wc <archivo></archivo>
cuenta el número de palabras. Opciones:
-l
cuenta el número de lineas.-w
cuenta el número de palabras.-c
número de bits.Curso de expresiones regulares:
Las expresiones regulares pueden ser útiles en otros contextos, por ejemplo, en otros lenguajes de programación 🐍 que las soporten.
Existen comandos que nos dan información sobre la red 🥅:
ifconfig
: Nos da información general sobre nuestra red 🔍.ping
: Nos dice si una página está activa a no 🏃🏽. Lo revisa continuamente, y podemos usarla para ver la velocidad de nuestra conexión.curl
: Nos trae un archivo de texto a través de la red 🌎. (El index.html).wget
: Web get, trae un archivo de la web, descarga el archivo directamente a nuestra computadora 💻. (El index.html con mejor formato).traceroute
: Nos da la lista de todas las computadoras (direcciones IP) por la que nuestra conexión pasa para llegar a un sitio web 🚰.netstat -i
: Nos muestra los dispositivos de red. Similar a ifconfig
pero más resumido 👀.zip
o .tar
desde la terminal. 🤖.tar
se usa mucho en repositorios. Para comprimir tar -cvf <nombre>.tar <archivos></archivos></nombre>
, donde c → compress, v → verbose, f→ file. 📁.gz
es un poco mejor, se usa el mismo comando pero con la bandera z→zip tar -cvzf <nombre>.gz <archivos></archivos></nombre>
. Usa el algoritmo gzip que es muy eficiente para comprimir. 📄.zip
es uno muy común. Es necesario instalarlo en linux. zip -r <nombre>.zip</nombre>
. Para descomprimir usamos unzip <nombre>.zip</nombre>
. 📃.rar
funciona igual que .zip
, pero con rar
y unrar
de comandos 👁️🗨️.ps
nos muestra los procesos que están corriendo actualmente. Cada proceso tiene un PID. Podemos ver los procesos que estén en el background (por ejemplo, CAT).kill
nos ayuda a terminar procesos fuera de nuestra terminal. 🛑top
nos muestra los procesos que están usando más recursos de nuestra computadora. Podemos filtrar los procesos (para ver como, usamos bandera h → help). 🆘htop
es como top
pero con esteroides. Debemos instalarlo. Tiene muchas más opciones 💪🏽fg
nos permite traer un proceso al foreground. Es importante notar que el número de trabajo no es lo mismo que el PID.bg
nos permite llevar un proceso al background, pero sin suspender el proceso.⭐vi <archivo></archivo>
es la versión vieja. 👴🏽vim <archivo></archivo>
: Vi modern. Tenemos dos modos, el normal o de inserción, para instertar presionamos la tecla i y para salir presionamos Esc. Para salir del editor y guardar :wq. 🔒less
para buscar una palabra, podemos hacerlo en Vim con /<palabra></palabra>
. Te lleva a la primera coincidencia.Un memingo 😆
Vim documentation : vim online
Podemos personalizar la terminal para que quedé bonita, profesional y sea muy cómoda 💖.
Para esto, podemos usar un emulador llamado Tilix.
En Tilix podemos tener varias terminales activas 🤯.
Podemos instalar ZSH, y luego chsh -s <> $(which zsh)
, con este comando podemos cambiar de shell.
Ya en ZSH, podemos instalar un enhancer que incrementa las capacidades de la shell:
Windows Subsystem for linux no permite GUI 😢 por lo que no se puede usar Ubuntu en windows con esta terminal. Pero podemos usar WINDOWS TERMINAL y esta hermosaaaa 💕. Este blog me resultó muy útil para instalarlo:
Para regresar a bash exec bash
y para ir a ZSH exec zsh
. 👀
Puedes mejorar aún más tu terminal con PowerLevel10k 🚀:
Es importante que instales las fonts necesarias para usar la funcionalidad máxima de esto 🔥.
Estan super completos tus apuntes 😃
¡Genial! También tus aportes serán valiosos en clases como qué es un comando.
uuuuf!!! muchísimas gracias!!
Bravísimo! 👏