1

Como saber lo básico en el uso de una terminal.

Modificando permisos en la terminal

El usuario root es escencial para todo.

-crear un archivo de texto

mitexto.txt

-Para escribir en el archivo
cat > mitexto.txt (para dejar de escribir ctrl+d

-Para mostrar mi archivo en formato largo.
ls -l

-Para cambiar los permisos de un archivo modo octal
chmod 755 mitexto.txt (El numero siente significa para el usuario dueño todos los permisos, el 5 para el grupo y el mundo solo read y ejecucion).

  • Para quitarle permisos de lectura a mi usuario sobre el archivo mitexto.txt
    chmod u-r mitexto.txt

  • Para mostrar contenido de un archivo en la terminar
    cat mitexto.txt

  • Para agregarle permisos de lectura a mi usuario sobre el archivo mitexto.txt
    chmod u+r mitexto.txt

-Para cambiarle los permisos a grupo y mundo.
chmod u-x,go=w mitexto.txt

-Para saber que usuario soy.
whoami (quien soy yo)

-Para conocer el uid de todos los sistemas operativos
id

-Para cambiar usuario
su root

  • Para obtener la ruta donde me encuentro parado
    pwd

  • Para llevarme al home
    cd

  • Para crear un archivo
    tocuh miarchivo.txt

-¿Que pasa si un usuario normal quiere borrar un archivo al que no tiene permisos demodificacion?, no lo dejara, pero para hacer de cuenta que si somos el usuario y si tenemos ese permiso entonces usaremos la instruccion sudo.

sudo rm rootfile

  • Para cambiar la contraseña de cualquier usuario
    passwd

Nunca dejar el usuario root por defecto para que una persona no entre a hacer daños en nuestro servidor.

Tener una contraseña administrativa diferente para el usuario root.

VARIABLES DE ENTORNO

las terminales tienen una configuracion y valores del sistema, y estas se pueden acceder a traves de las variables de entorno.

Hay variables de entorno primordiales para saber sobre la configuracion del sistema.

-links simbolicos: son un tipo de archivo que hacen referencia a un lugar. ( links simbolicos no tienen permisos, los que ponen ahi son simbolicos).
ln -s Documents/Dev Desarrollo
se pueden remover y no pasa nada.

-para saber las variables de entorno que tenemos configuradas
printenv

-Para mostrar el contenido de una variable de entorno se usa echo $variable
echo $HOME
echo $PATH (esta variable se usa mucho para saber las rutas de los instaladores de nuestros aplicativos)

Las variables de entorno se conocen con:
-printenv

como modificar variables de entorno y modificar PATH.
-Se ejecuta el comando ls -la
Luego vamos hasta arriba a buscar el arcvhico .bashrc Este archivo lo podemos modificar. En este archivo se mantiene la configuracion de bash.

Para modificar este archivo se puede abrir en Visual Code.
Para esto escribimos.
-code .bashrc

Ahi podemos crear o modificar alias
alias lgiego = ‘ls -lh’

Tambien se pueden crear variables de entorno.
PLATZI_MESSAGE=“Hola Amigos” (se debe poner pegadito)

HOME Indica el home del usuario
PATH Indica las direcciones de donde están los binarios que usa el sistema
BASH_VERSION Indica la versión del bash que estás utilizando
SHELL Dirección de la shell que estás utilizando

Modificando permisos en la terminal

El usuario root es escencial para todo.

-crear un archivo de texto

mitexto.txt

-Para escribir en el archivo
cat > mitexto.txt (para dejar de escribir ctrl+d

-Para mostrar mi archivo en formato largo.
ls -l

-Para cambiar los permisos de un archivo modo octal
chmod 755 mitexto.txt (El numero siente significa para el usuario dueño todos los permisos, el 5 para el grupo y el mundo solo read y ejecucion).

  • Para quitarle permisos de lectura a mi usuario sobre el archivo mitexto.txt
    chmod u-r mitexto.txt

  • Para mostrar contenido de un archivo en la terminar
    cat mitexto.txt

  • Para agregarle permisos de lectura a mi usuario sobre el archivo mitexto.txt
    chmod u+r mitexto.txt

-Para cambiarle los permisos a grupo y mundo.
chmod u-x,go=w mitexto.txt

-Para saber que usuario soy.
whoami (quien soy yo)

-Para conocer el uid de todos los sistemas operativos
id

-Para cambiar usuario
su root

  • Para obtener la ruta donde me encuentro parado
    pwd

  • Para llevarme al home
    cd

  • Para crear un archivo
    tocuh miarchivo.txt

-¿Que pasa si un usuario normal quiere borrar un archivo al que no tiene permisos demodificacion?, no lo dejara, pero para hacer de cuenta que si somos el usuario y si tenemos ese permiso entonces usaremos la instruccion sudo.

sudo rm rootfile

  • Para cambiar la contraseña de cualquier usuario
    passwd

Nunca dejar el usuario root por defecto para que una persona no entre a hacer daños en nuestro servidor.

Tener una contraseña administrativa diferente para el usuario root.

VARIABLES DE ENTORNO

las terminales tienen una configuracion y valores del sistema, y estas se pueden acceder a traves de las variables de entorno.

Hay variables de entorno primordiales para saber sobre la configuracion del sistema.

-links simbolicos: son un tipo de archivo que hacen referencia a un lugar. ( links simbolicos no tienen permisos, los que ponen ahi son simbolicos).
ln -s Documents/Dev Desarrollo
se pueden remover y no pasa nada.

-para saber las variables de entorno que tenemos configuradas
printenv

-Para mostrar el contenido de una variable de entorno se usa echo $variable
echo $HOME
echo $PATH (esta variable se usa mucho para saber las rutas de los instaladores de nuestros aplicativos)

Las variables de entorno se conocen con:
-printenv

como modificar variables de entorno y modificar PATH.
-Se ejecuta el comando ls -la
Luego vamos hasta arriba a buscar el arcvhico .bashrc Este archivo lo podemos modificar. En este archivo se mantiene la configuracion de bash.

Para modificar este archivo se puede abrir en Visual Code.
Para esto escribimos.
-code .bashrc

Ahi podemos crear o modificar alias
alias lgiego = ‘ls -lh’

Tambien se pueden crear variables de entorno.
PLATZI_MESSAGE=“Hola Amigos” (se debe poner pegadito)

HOME Indica el home del usuario
PATH Indica las direcciones de donde están los binarios que usa el sistema
BASH_VERSION Indica la versión del bash que estás utilizando
SHELL Dirección de la shell que estás utilizando

¿Cómo crear tus propias variables de entorno?
En el home de tu usuario debe haber un archivo oculto llamado “.bashrc”, lo puedes ver ejecutando el comando ls -la la opción -a es de all.

ls -la

[bashrc] Ábrelo utilizando el comando code .bashrc, si tienes instalado VS Code esto te mostrará el documento en el editor. Si estás en WSL y no te funciona, ve a la cmd, ejecuta el comando wsl y vuélvelo a intentar desde ahí.

Cuando lo abras ten cuidado con lo que tocas, podrías dañar la shell, pero desde ahí puedes crear una variable de entorno, por ejemplo, como yo estoy usando WSL, voy a crear una variable de entorno que me de la ruta de mi carpeta en Windows sin que tenga que escribir toda la ruta.

WINDOWS="/mnt/c/users/migue"

Ahora guardo el archivo, reinicio la terminal y ejecuto:

cd $WINDOWS

Pero se puede hacer mejor porque también puedo crear un alias que no se borre cuando cierre la terminal.

alias c

Enterminal:
cc
/mnt/c/users/migue$

Ahora solo tengo que ejecutar cc para ir a mi carpeta en Windows sin necesidad de escribir la variable de entorno.

Ahora crea las variables o alias que necesites para ser más eficiente tu trabajo, por ejemplo, podrías crear un alias que ejecute VS Code y lo abra en la carpeta que requieres.

COMANDOS DE BÚSQUEDA

A veces necesitas localizar varios archivos del mismo tipo que ocupan espacio innecesario en tu disco duro.

Por ejemplo, algunos programas que funcionan desde la consola, como npm, guardan sus errores en archivos de extensión “.log” y si no estás pendiente de eliminarlos se van acumulando en tu disco duro.

¿Cuáles son los comandos de búsqueda en la terminal?
Para encontrar archivos de forma efectiva, usa el comando find, el cual buscará en la ruta que le indiques el tipo de archivos que necesitas. Su sintaxis es:

find [rutaDesdeDondeEmpezarBuscar] [opciones]
Segmentar por el nombre (-name)
Veamos un ejemplo, voy a buscar en mi carpeta home todos los archivos que tenga una extensión “.png”.

find ./ -name *.png
El punto indica que debe empezar desde la carpeta en la que está y la opción -name es para especificar el nombre que debe buscar.

Segmentar por el tipo (-type)
También puedes segmentar por el tipo, si es un archivo o si es un directorio utilizando la opción -type, el cual acepta f para archivos, d para directorios y l para enlaces simbólicos.

Si quieres usar más de una opción lo separas por comas.

find ./ -type f -name “f*”

Esto me muestra todos los archivos que comiencen con la letra “f”.

Veamos un ejemplo buscando archivos y directorios.

find ./ -type f,d -name “D*”

Segmentar por tamaño (-size)
Con la opción -size podemos segmentar por tamaño ingresando el peso que queremos buscar. Esta opción tiene un uso un tanto especial. Primero que todo hay que colocar la unidad de peso c para byte, k para Kilobyte, M para Megabyte y G para Gygabyte.

Entonces, si escribes en la terminal:

find ./ -size 4k

Buscará los archivos que pesen exactamente 4kb. Pero claro, atinar el peso exacto de un archivo no es para nada sencillo, así que podemos especificar que sea ese peso en adelante con el símbolo + o de ese peso para abajo con el símbolo -.

find ./ -size +4k
Busca los archivos que pesen 4kb o más.

find ./ -size -4k
Busca los archivos que pesen 4kb o menos.

Buscar vacíos (-empty)
Para buscar los archivos vacíos usamos la opción empty que es fácil de usar, no tienes que especificarle nada, solo escribirla.

Por ejemplo, si quisiera buscar todas las carpetas vacías, habría que escribir:

find ./ -type d -empty

Limitar la búsqueda (-maxdepth -mindepth)
Puede que no queramos buscar en absolutamente todas las carpetas del sistema, sino que queremos únicamente un pedacito. Para eso limitamos la profundidad de carpetas a la que el comando debe buscar, esto se hace con la opción -maxdepth seguido de la profundidad.

find ./ -type d -maxdepth 2
Continuando, a veces ya conocemos más o menos la estructura de nuestras carpetas, así que nos queremos saltar niveles, por lo que le asignamos una profundidad mínima al comando.

find ./ -type d -mindepth 2
Una última cosa, es recomendable pasar el output al comando less, así:

find ./ | less
De esta forma podrás usar esa interfaz de less para buscar tus archivos.

Tabla de comandos de búsqueda
Opción Función
-size Busca por el peso
-mindepth Asigna una profundidad mínima
-maxdepth Asigna una profundidad máxima
-type Busca por el tipo de archivo
-name Busca por el nombre del archivo

Para buscar en c todas las carpetas que tenga ‘Documents’
-find ./ -type d -name Documents

Para buscar todos los archivos con extención .txt
-find ./ -name .txt
-find -type f -name '
.txt’

Para buscar los tipos ‘f’ file que sean archivos de log
-find ./ -type f -name *.log

Para buscar archivos por tamaño, todos los mayores a 20 Megabites.
-find ./ -size 20M

Ejercicio de práctica

El hábito hace al monje y la terminal al buen programador.

Crea el comando find para cada uno de estos casos:

  1. Busca tus archivos mayores a 100Mb, con una profundidad máxima de 4, que comiencen por la letra d.

-find ./ -size +10M -name ‘d*’

  1. Busca los archivos que tengan extensión “.pdf” con una profundidad mínima de 2.
    -find ./ -name ‘*.pdf’ -mindepth 2

  2. Busca todas las carpetas que comiencen por la letra “A” con una profundidad máxima de 5, que estén vacías.

-find ./ -size 0M -name “A*” -maxdepth 5

4.Busca todo lo que tenga una letra “j” que pese más de 1b. Luego guarda la salida en un archivo llamado “LosArchivosJ.txt” y cuando termine de hacer todo eso imprime un mensaje que diga “Comando terminado con éxito”.

COMANDOS DE BUSQUEDAD. (archivos log)

-which code
/mnt/c/Users/user/AppData/Local/Programs/Microsoft VS Code/bin/code

Buscar todos los archivos que se llamen file en todos los archivos y directorios que tenga.
-find ./ name file
Muestra todas las dutas donde hay un archivo llamado file.

Tambien puedo buscar un directorio los archivos que terminan con .txt.
-find ./ -name *.txt
-find ./ -name *.txt | less

Buscar por tipos (f:file, d:directorio)
-find ./ -type fd
-find ./ -type d -name Documents

Buscar los archivos de logs
-find ./ -type f -name *.log
Buscar los mayores a 20 Megabytes.
-find ./ -size 20M

Su majestad: GREP
Ejercicio con el archivo movies.csv

Encontrar todas las peliculas que tengan la palabra ‘Towers’ y The
-grep Towers movies.csv
-grep the movies.csv

Este tipo de busqueda son keysensitive. Esto es para ignorar el keysensitive.
-grep -i the movies.csv

Para saber cuantas ocurrencias de la palabra the hay en el archivo de peliculas.
-grep -c the movies.csv
1013

Para saber cuantas ocurrencias de la palabra the hay en el archivo de peliculas sin tener en cuenta mayusculas o minusculas.
-grep -ci the movies.csv
2912

Para buscar todos los que no coincidan con la palabra towers.
-grep -vi towers movies.csv

Para guardar el resultado de la busqueda en un archivo
-grep -vi towers movies.csv > sintowers.txt

Para ver el archivo guardado
-cat sintowers.txt

Para contar cuantas palabras hay
-wc movies.csv
9126 30006 477779 movies.csv
El primer parametro indica cuantas lineas tiene el archivo.
El segundo cuasntas letras en general o caracteres tiene
El tercero el numero de bites.

opciones que tiene el comando.
Para contar el numero de lineas
-wc -l movies.csv
Para contar las palabras
-wc -w movies.csv
Para contar el numero de bites.
-wc -c movies.csv

Excluir una expresión (-v)
Para saber cuáles son los resultados que NO coinciden con tu expresión regular, usas la opción -v.
Por ejemplo, si queremos contar todas las películas que no son de drama, escribimos:
-grep -cv Drama movies.csv

Limitar la búsqueda (-m)
Para no buscar en todo el archivo, sino las primeras ocurrencias, podemos limitar la búsqueda en líneas con la opción -m seguida del número de líneas que queremos encontrar.
Por ejemplo, si queremos buscar las primeras 10 líneas que concuerden con la palabra “Fan” escribimos:
-grep -m 10 Fan movies.csv

Tabla de funciones de grep
Opción Función
-m Limita las líneas de la búsqueda
-c Cuenta las ocurrencias
-v Excluye las ocurrencias
-i Ignora él case sensitive

UTILIDADES DE RED
Enviar solicitudes a una página (ping)
A veces queremos saber si una página está disponible desde nuestra dirección IP. Para esto escribimos el comando seguido de la URL a la que queremos acceder.

El comando ping envía paquetes a esa página y evalúa el tiempo de respuesta.

Por defecto, el comando se ejecutará indefinidamente, así que tienes que detenerlo con ctrl + c.
-ping www.google.com

Limitar los paquetes enviados (-c)
Para limitar la cantidad de paquetes que enviamos, usamos la opción -c seguida del número de paquetes por enviar.
-ping -c 4 www.google.com

Especificar el tamaño de los paquetes (-s)
Para probar la conectividad con paquetes de diferentes tamaños se utiliza la opción -s seguido del tamaño del paquete que desees usar. El tamaño debe ser en bytes.
Para hacer pruebas con paquetes de 20 bytes escribimos:
-ping -s 20 www.google.com

Obtener el archivo de una página (curl | wget)
Podemos obtener archivos que nos proporcione un sitio web o dirección IP con el comando curl. Este te mostrará la información que haya encontrado en la consola.
-curl www.google.com

Tabla de comandos de utilidades de red
Comando Función
ifconfig Muestra la configuración de los dispositivos de red
ping Envía paquetes a una dirección para comprobar su conectividad
curl Muestra por consola el archivo devuelto por la dirección
wget Guarda el archivo devuelto por la dirección

ifconfig nos muestra informacion de red como la direccion ip, el numero de la tarjeta de red.

-ifconfig

Para instalar los comandos de red en caso de no tenerlos se usa el comando.
-sudo apt install net-tools

Para saber si una pagina esta activa, al responder a los paquetes que le vamos a mandar.

Para traer un archivo de manera de texto de la internet

Para decirle que todo lo que salga del comando curl lo guarde en un archivo llamado index.html
-curl www.google.com > index.html

Para borrar el archivo index.html

  • rm index.html

Otro comando que sirve para traer información de la web y descarga directamente un archivo en la computadora, en este caso llamado index.html

Para ver el archivo index.html
-cat index.html

Cuando visitamos un sitio o direccion nos dice a todos los sitios a los que nos vamos conectando o accediendo. (nos dice a todas las computadoras por las que vamos a ir pasando)
-traceroute www.google.com

Para mostrar los dispositivos de red, si estan trabajando y si hay algún error.
-netstat -i

  1. Comprimiendo archivos tar y zip
    tar [opciones] [nombreDelArchivoComprimido] [archivoAComprimir]

Tabla de comandos tar y zip
Opciones del comando tar
Recuerda siempre colocar la opción -f.

Opción Función
c Comprimir
x Descomprimir
z Especifica que lo que se va a comprimir o descomprimir tiene extensión “.tar.gz” o “.tgz”
v Muestra lo que está comprimiendo o descomprimiendo
Comando zip
Recuerda que si lo que vas a comprimir es una carpeta tienes que usar la opción -r.

Comando Función
zip Comprimir
unzip Decomprimir

Comando para crear una carpeta
-mkdir ToCompress

Para crear archivos
-touch file file2 file3

Para ver los archivos de una carpeta en forma de arbol.

  • tree [NameDirectory]

Formato de compresion .tar (Parametros, c:comprimir, v:ver lo que esta haciendo en la terminal, f: que nos va a comprimir un file)
-tar -cvf ToCompress.tar ToCompress

Un mejor metodo de compresion es gitzip para esto agregamos z y cambiamos la extencion del archivo comprimido a .zp
-tar -cvzf ToCompress.zp ToCompress

Para borrar una carpeta de manera recursiva.
-rm -r ToCompress

Para descomprimir un archivo (x: de extraer, z: de gitzip, v: de ver bous, f: de file)
-tar -xzvf ToCompress.zp
-tar -xzvf ToCompress.tar.zp

Para que comprima la carpeta en formato zip de manera recursiva.
-zip -r ToCompressInZip.zip ToCompress

Para descomprimir el archivo, luego pregunta que si queremos reemplazar la carpeta que antes estaba por la nueva descomprimida, responder A para todo.
-unzip ToCompressInZip.zip

PROCESOS

Todo procesos tiene un PID: Process ID.

Para ejecutar procesos de manera sincrona se usa $
-cat & ls

Comando para ver los procesos que estas corriendo en la terminal.
-ps

Para terminar un proceso usamos el PID y kill.

  • kill 41

El comando top nos muestra todos los procesos que estan corriendo en la terminal.

  • top
    Para ver todas las opciones digitar h.

Para ver los procesos de manera mas detallada y desidir que hacer con ellos desde la terminal:
-htop

PROCESOS FOREGROUNP y BACKGRAUNP

Crear un editor de texto desde la terminal.
-cat > mi_nota.txt

Para mandar un proceso al backgrounp
-CTRL+Z

Para Consultar los procesos que tenemos en el background.
-jobs

A la izquierda aparece el número del trabajo ( ⚠ ️ cuidado que no es lo mismo que el process ID). Si queremos traer la ejecución de nuevo a la terminal, es decir, al foreground; debemos usar el comando fg y especificar qué número de trabajo queremos continuar. Para nuestro caso será el 3.

-fg 3
Para guardar mi escritura en el editor de texto que cree con el comando cat > mi_nota.txt, de esta manera si termina el proceso y al consultar en la terminal con jobs vemos que ya no aparece.
-CTRL + D

Otras formas de enviar al background
Existen otras formas de enviar comandos al background. La primera es usando el operador de control & al final de un comando. Este operador nos permite enviar de manera directa un proceso al background una vez ejecutado. Por ejemplo:

cat > mi_nota.txt &

Para mandar un proceso al backgrounp
-bg 1

Bien, la pregunta ahora es ¿Cómo usamos bg? Imagina que abrimos algún programa de interfaz gráfica desde la terminal. En mi caso abriré el navegador Google Chrome. Para hacerlo desde la terminal solo ejecuta:

google-chrome-stable
Y verás como se ejecuta pero no nos deja hacer ninguna otra tarea ya que la ventana del navegador está abierta:

Para suspender el proceso como ya sabes lo hacemos con CTRL+Z y si revisamos con jobs veremos como el proceso se encuentra en pausa. En este caso la ventana del navegador que se abrió no nos dejará interactuar ni escribir en ella.

Screenshot from 2021-04-23 17-17-05.png
Como se ve en la imagen el navegador tiene el número de trabajo 1. Para dejar nuestro navegador corriendo y al mismo tiempo seguir trabajando en la terminal tenemos que reactivar este proceso y a la vez mandarlo al background. Para ello ejecutamos:

-bg 1

Con esto podremos ver como nuestro proceso de Google Chrome sigue corriendo en el background dejando la terminal disponible para nosotros.

Diferencia entre Ctrl + C y Ctrl + Z
Ctrl + C Lo que hace es que finaliza o mata un proceso.
Ctrl + Z Lo que hace es que pausa o suspende un proceso con lo que después lo podremos volver a llamar con el comando fg foreground (primer plano) o con el comando bg background (segundo plano)

EDITORES DE TEXTO EN LA TERMINAL

Para abrir el editor de texto en la temrinal.
-vim

para salir de vim.
-:q

Para crear una archivo.
-vim index.html
Para empezar a insertar información en el documento.

  • i, para insertar. Ahroa si podemos escribir.

Para vovler al menu de opciones de Vim, precionamos tecla esc. Para buscar dentro el mismo archivo
-/palabra

Para eliminar una linea.
-dos veces la tecla d.

Para guardar un archivo, esc.
-:w

Para guardar y salir.
-:wq

Para crear un archivo de python.
-vim ejemplo.py
Y de esta manera resalta la sintaxis de Python.

Para forzar la salida del archivo si por alguna razon no nos quiere dejar salir o guardar.
-:wq!

PERSONALIZAR LA TERMINAL.
Emulador de pantalla llamado tilix.
-zsh

Escribe tu comentario
+ 2