21

Librería de comandos de la terminal (con instrucciones y ejemplos)

¡Hola! El mes pasado terminé la versión anterior de este curso (2019) y compilé esta librería de comandos de entre mis notas. Quizás les sirva tenerla a la mano para el futuro.
.

Indice

  1. Atajos en la terminal
  2. Comandos de algunas aplicaciones de terceros (incluye WSL2)
  3. Comandos básicos
  4. Navegar por directorios
  5. Editar y crear archivos de texto
  6. Utilidades batch básicas
  7. Utilidades batch avanzadas
  8. Administración de procesos
  9. Administración de permisos
  10. Descarga e instalación de paquetes
  11. Comandos para compresión de archivos
  12. Búsqueda de archivos desde la consola
  13. Comandos HTTP
  14. Acceso seguro a otras computadoras
  15. Variables de entorno
  16. Cómo crear nuevos comandos
  17. Programar tareas
  18. Papelera de reciclaje (Bonus)
    .

1. Atajos en la terminal

.
Presionar TAB mientras estas escribiendo algo
Efecto: te muestra una lista de los comandos disponibles en el computador que empiezan con esas letras.
.
Presionar tecla UP
Efecto: pasear por los comandos previamente usados (incluidos los de sesiones anteriores)
.
Ctrl + Shift + r
Efecto: activa una busqueda hacia atrás de todos los comandos que has escrito.
.
Punto "."
Hace referencia al directorio actual.
.
Puedes usarlo en lugar de un parámetro para indicar el directorio actual.
.
Doble punto ". ."
Hace referencia al directorio padre. Puedes usarlo en lugar de un parámetro para indicar el directorio padre.
.
cd ~
Te desplaza directamente a tu home (la carpeta raíz de tu usuario en el OS) (~ = alt+126)
.
cd -
Te desplaza al último directorio visitado
.
cd …
Te desplaza al directorio padre del directorio actual. (una carpeta hacia afuera)
.
<
“Redireccionar la entrada”. Ingresa el contenido del archivo de la derecha como input para el comando de la izquierda.
.
Ej:
mysql -h 127.0.0.1 -u root -p1234 < dump1.sql
.
En este ejemplo, estas ejecutando el script de dump1.sql en el servidor local de MySQL
.
>
“Redireccionar la salida”.
.
Introduces el resultado del comando de la izquierda en el archivo de la derecha.
.
Ej:
ls > test.txt
.
En este ejemplo estas escribiendo la lista de archivos en el directorio actual directamente en el archivo de texto.
.
OJO: Si usas “>>”, introduces el resultado del comando al final del contenido del archivo (en lugar de sobreescribir)
.
Pipes (" | ")
Toma la salida de un proceso y se la pasa como entrada al siguiente proceso. (tambien puedes escribir “|” con alt+124)
.
Ejemplo:
head -n1 text.txt | wc
.
En este ejemplo la terminal toma la primera línea del archivo text.txt, y a eso le aplica el wc.
.
"&" al final del comando
Hace que el proceso se ejecute en segundo plano.
.
Ej:
mysql -h 127.0.0.1 -u root -p1234 < dump1.sql &
.
Ctrl+z
Envía al proceso que esté en ejecución al Background.
.
Puedes regresar el proceso al foreground con el comando fg
.
Ctrl+c
Detiene el proceso que se esté ejecutando en el foreground
.
Ejecutar un archivo ejecutable
Para ejecutar un archivo ejecutable, basta con introducir la ruta del archivo como si fuera un comando.
.
Ej: ./hello.php
.
source tambien es un comando que ejecuta en la terminal el archivo que escribas a continuación. Necesitarás usarlo si decides crear comandos que incluyan un desplazamiento entre carpetas
.
Ej: source proyectos.sh
.
sudo
En Unix, existe un super usuario en cada ordenador llamado el usuario root, el cual puede leer y escribir en todos los archivos del computador, y es el único habilitado con ciertos permisos.
.
sudo es un prefijo que se puede escribir antes del comando para ejecutarlo con permisos del usuario root.
.
Ej: sudo chown mistofjoy test.txt
.
> /dev/null
Envía el resultado del comando al archivo /dev/null, que es un archivo tipo agujero negro que descarta todo lo que se introduce en él.
.
El archivo /dev/null puede usarse como un intermediario de procesos complejos.
.
Ctrl+l
Desplaza la pantalla hacia abajo para liberarla de texto
.

2. Comandos de algunas aplicaciones de terceros

code .
Abre Visual Studio Code posicionado en en directorio donde corriste el código.
.
code<archivo></archivo>
.
Abre el archivo que introduciste en visual studio code
.
wslview
Si estas en wsl2, te permite abrir el archivo que indiques a cotinuación con aplicaciones nativas de windows 10
.
Escritura:
wslview + <rutaarchivo>.
Ejemplo:
wslview blogpost.html
.
Lynx
Accede al sitio web que indiques a continuación a través del navegador lynx
.
Ojo: necesitas haber descargado lynx para hacerlo.
.
Escritura:
Lynx + sitio web
.
Ejemplo:
Lynx platzi.com
.</rutaarchivo>

3. Comandos básicos

date
Nos muestra la fecha de hoy.
.
Escritura:
Date
.
Ej:
date
.
echo
Muestra un mensaje en la pantalla.
.
Escritura:
echo + “mensaje entre comillas”
.
Ej:
echo "¡hola! ¿Cómo estás?"
.
**man **
Muestra un manual sobre otros comandos.
.
Escritura:
man + comando
.
Ej:
man date
.
history
muestra un listado con todos los comandos que has escrito alguna vez. Luego puedes volver a ejecutar un comando antiguo según el número de la lista.
.
Escritura:
History
! + #comandoEnLista
.
Ej:
history !43
.

4. Navegar por directorios

ls
"list directory contents". Muestra una lista de los archivos contenidos en en directorio donde estas navegando.
.
cuando un archivo empieza por un “.”, el computador lo interpreta como que es un archivo oculto.
.
La lista de archivos suele contener dos archivos que son “.” y “…”
.
"…" es la dirección al directorio padre (es decir, te mueve un directorio fuera de donde estas)
.
"." es la dirección al directorio actual.
.
Escritura:
ls
.
Extensiones:
1. ls -a: muestra archivos ocultos
2. Ls -l: muestra los metadatos del archivo (que usuario lo creó, cuando fue creado, etc.) (Si la línea empieza por “d” entonces es un directorio)
3. Ls -t: ordena los archivos por fecha de modificación
4. Ls -x: ordena los archivos primero por nombre y despues por extensión
5. Ls -X: ordena los archivos primero por extensión y luego por nombre
6. Ls -l: Muestra toda la información (usuario, grupo, permisos, tamaño, fecha y hora de creación.
7. Ls -lh: Muestra la misma información que ls -l, pero con las unidades de tamaño en KB, MB
8. Ls -R: Muestra el contenido de todos los subdirectorios de forma recursiva
9. Ls -S: Ordena los resultados por tamaño de archivo.
.
Ejemplo:
ls
.
ls -a
.
pwd
"Print name of current/working directory" te muestra la dirección del directorio donde estas parado.
.
Escritura:
pwd
.
Ejemplo:
pwd
.
cd
"Change directory", te desplaza a la dirección que escribas a continuación del comando.
.
Si escribes “cd ~” (alt+126), la consola te desplazará directamente a tu home.
.
Si escribes “cd -” la consola te desplazará al último directorio visitado.
.
Escritura:
cd + path
.
Ejemplo:
cd ~/proyecto1
.
mkdir
"Make directories", crea un directorio con el nombre que indiques a continuación (si es que no existe aún)
.
Escritura:
mkdir + NombreNuevoDirectorio
.
Ejemplo:
mkdir personalProjects
.
cp
"copy files or directories", copia un archivo en la dirección indicada.
.
Ojo: para copiar carpetas, necesitas la extensión -r. Solo asi podrás copiar todo el contenido de la carpeta a la ubicación destino.
.
Escritura:
cp + NombresDeArchivos + RutaDestino
.
Extensiones:
1. -r: copia recursiva. Hace una copia del directorio seleccionado con todo su contenido, y la envía al directorio destino.
.
Ejemplo:
cp test.py test/
.
rm
"Remove files or directories", borra el archivo indicado a continuación.
.
Arrojará un error si intentas borrar un directorio
.
Escritura:
rm + NombreDelArchivoODirectorio
.
Extensiones:
1. -i: te pregunta antes de remover el archivo
2. -f: remueve forzosamente lo indicado, sin preguntar.
3. -r: remueve directorios
.
Ejemplo:
rm test.py
.
mv
"Move (rename) files". Mueve archivos o directorios de una dirección a otra. Hace la operación de borrar y copiar a la vez.
.
Ojo, las rutas que escribas en el comando deben incluir el nombre del archivo.
.
Puedes renombrar el archivo si le cambias el nombre en la ruta destino.
.
Escritura:
mv + rutaOrigen + rutaDestino
.
Extensiones:
1. -i: te pregunta antes de sobre-escribir
2. -f: No pregunta antes de sobre-escribir
.
Ejemplo:
mv ../test.py .
(mueve el archivo “test.py” del directorio padre al directorio actual)
.
rmdir
"Remove empty directories", borra un directorio vacío
.
No puedes borrar directorios con contenido dentro. Antes tienes que borrar el contenido.
.
Escritura:
rmdir + nombre del directorio
.
Ejemplo:
rmdir test
.

5. Editar y crear archivos de texto

touch
Crea un archivo con el nombre y extensión que indiques a continuación.
.
Ojo, puedes crear archivos de texto sin extensión. Estos se suelen usar para crear comandos.
.
Escritura:
touch + nombreDelArchivo.txt
.
Ejemplo:
touch test.txt
.
vim
Inicia un editor de texto interactivo (VIM) que te permite editar el texto de un archivo desde la terminal.
.
OJO: puedes crear un archivo nuevo si usas la función para entrar en un archivo que no existe (y vas a crear)
.
Escritura:
Vim + nombreDelArchivo
.
Comandos internos de vim:
1. “:” activa el modo de comandos
2. “i” inicia el modo de insertar texto.
3. “:w” guarda el contenido del archivo.
4. Esc (tecla “escape”): termina el modo en ejecución
5. “:q” sale del editor de texto vim
6. “:x” guardar y salir
.
Ejemplo:
vim test.txt
.
nano
Inicia un editor de texto interactivo que te permite editar el texto de un archivo desde la terminal.
.
Este tiene en pantalla una librería de comandos para usar.
.
Esta te lanza al modo edición de una vez, y te pregunta si quieres guardar los cambios antes de salir.
.
Escritura:
nano + nombreDelArchivo
.
Comandos internos:
1. Ctrl+x: salir del programa
.
Ejemplo:
nano test.txt
.

6. Utilidades batch básicas

cat
Muestra en la terminal el contenido completo de un archivo de texto
.
Escritura:
cat + nombreDelArchivo.txt
.
Ejemplo:
cat test.txt
.
head
Muestra en la terminal las primeras lineas de un archivo de texto. Por defecto muestra las primeras 10 líneas.
.
Extensiones:
1. “-n #” muestra las primeras # líneas del archivo (ejemplo: “-n 5” muestra las primeras 5 líneas)
.
Escritura:
Head + extensión + nombreDelArchivo.txt
.
Ejemplo:
Head -n 1 test.txt
.
**tail **
Muestra en la terminal las últimas líneas de un archivo de texto. Por defecto muestra las últimas 10 líneas.
.
Extensiones:
1. “-n #” muestra las últimas # líneas del archivo (ejemplo: “-n 5” muestra las primeras 5 líneas)
.
Escritura:
tail + extensión + nombreDelArchivo.txt
.
Ejemplo:
tail -n 1 test.txt
.
wc
"print newline, word, and byte counts for each file" Muestra las líneas, word count, y byte count de un archivo de texto.
.
Escritura:
wc + extensión + nombreDelArchivo.txt
.
Ejemplo:
wc test.txt
.
more
Muestra en la terminal el contenido completo de un archivo de texto, pero navegando por él un screenful a la vez.
.
Puedes avanzar las páginas con la tecla SPACE, y dejar de navegar por el documento (si es muy largo) con la q)
.
Se usa mucho luego de un pipe para leer mejor el resultado de una operación
.
Escritura:
more + extensiones + nombreDelArchivo.txt
.
Ejemplo:
more test.txt
.

7. Utilidades batch básicas

grep
"Busqueda por expresiones regulares". Busca en el archivo una línea con la expresión que indiques
.
Si tienes la nueva windows terminal (de la microsoft store), entonces la palabra que buscas se resaltará en naranja.
.
Si escribes lo que buscas entre comillas y terminando con “$”, la busqueda será por expresiones que terminen en lo que escribiste (Ej: grep "hanks$" dump1.spl)
.
Escritura:
grep + expresiónRegular + archivoDondeBuscarás
.
Extensiones:
1. “-i” hace que la busqueda no tome en cuenta mayusculas o minusculas
.
Ejemplo:
grep Hanks dump1.sql
.
(busca la expresión “Hanks en el archivo dump1.sql)
.
sed
"String editor”. Te ayuda a trabajar sobre el flujo de caracteres. Puedes usarlo para reemplazar una expresión por otra.
.
OJO: esto no modifica el archivo original. Solo modifica la lectura cuando usas el comando.
.
Escritura:
Primero abres un apostrofe (’), luego indicas que quieres hacer una sustitución (s/), informas del término que vas a cambiar (Hanks/) y del termino con el que lo vas a sustituir (Selleck/). Luego cierras el apostrofe (’)
.
Puedes agregar una extensión antes del apostrofe si quieres, para que la sustitución se haga a lo largo de todo el archivo (g)
.
Ejemplo:
sed 's/Hanks/Selleck/g' dump1.sql
.
Cambia todas los string que contengan “Hanks” en el archivo dump1.sql y los reemplaza por “Selleck”
.
awk
Se usa para modificar archivos estructurados (separados por comas o tabs por ejemplo. Uno de estos son los .csv)
.
Ejemplo:
awk -F ';' '{ print $1 }' nuevasPelis.csv
.

8. Administración de procesos

fg
"Foreground"
Toma un proceso que está ejecutandose en el background y lo trae al foreground
.
Escritura:
fg
.
Ej:
fg
.
ps
"Report a snapshot of the current processes".
.
Muestra un reporte de los procesos ejecutandose al momento de ingresar el comando.
.
Escritura:
ps
.
Ejemplo:
ps
.
top
"display linux processes"
.
Utilidad interactiva que te muestra como está actualmente el uso del computador. (procesos en ejecución. Memoria en uso. Etc.)
.
(Sales con la “q”)
.
Escritura:
top
.
Ejemplo:
top
.
kill
Termina el proceso que indiques a continuación
.
Para usarlo, necesitas identificar el processID (PID) del proceso que quieres terminar. Puedes ver los processID con el comando “ps”
.
Escritura:
Kill + identificadorDelProceso(PID)
.
Ejemplo:
Kill 58
.
killall
Termina el proceso que inició el ejecutable que indiques a continuación.
.
Para usarlo, necesitas conocer el nombre del archivo que inició el proceso.
.
Escritura:
Killall + NombreArchivo
.
Ejemplo:
Killall colgado.php
.

9. Administración de permisos

chmod
Modifica manualmente los permisos
.
Escritura (modo textual):
Chmod + usuario (dueño, grupo, otherst) + “+/-” + Permiso a agregar o remover + archivo a modificar
.
u: refiere al dueño
g: refiere al grupo
o: refiere a otros
a: refiere a todos
-vacio-: refiere a todos (ocurre cuando no se indica ningún usuario en el comando)
.
-: remueve un permiso
+: agrega un permiso
.
r: refiere a lectura
w: refiere a escritura
x: refiere a ejecución
.
Ejemplo (textual):
Chmod o-w nuevo.txt
.
En este ejemplo se le quita el permiso de editar el archivo a otros
.
Escritura (binario):
Permite modificar los permisos para todos los usuarios con un solo comando.
.
Los permisos de un usuario se rigen por una matriz binaria que al final representa un número (ningun permiso es un 0, solo lectura es un 4, lectura y escritura es un 6, y todos los permisos es un 7)
.
Hacer el comando en binario te pide una combinación de tres números que configura los permisos para todos los usuarios
.
Chmod + combinación de números según permisos + archivo
.
Se usa una combinación de 3 números. El primero habla de los permisos del dueño, el segundo habla de los permisos del grupo, y el último de los permisos de otros.
.
Ejemplo (binario):
Chmod 760 hello.php
.
En este ejemplo se le da al dueño todos los permisos, el grupo puede leer y escribir, y otros no pueden hacer nada.
.
chown
Cambia el propietario del archivo. Solo lo puede ejecutar el usuario root (escribiendo sudo antes del comando)
.
Escritura:
Chown + usuario del nuevo dueño + archivo
.
Ejemplo:
Sudo chown mistofjoy test.txt
.
Convierte al usuario mistofjoy en el dueño del archivo test.txt
.
chgrp
Cambia el grupo de usuarios que pueden acceder al archivo
.
Solo lo puede ejecutar el usuario root (escribiendo sudo antes del comando)
.
Escritura:
Chgrp + usuario del nuevo dueño + archivo
.
Ejemplo:
Sudo chgrp www-data test.txt
.
Cambia el grupo asociado a test.txt para solo incluir al usuario www-data
.

10. Descarga e instalación de paquetes

Apt install
Instala el programa que indiques a continuación, siempre y cuando sea un paquete administrado por apt
.
Ojo: solo lo puede ejecutar el usuario root
.
Escritura:
Apt install + nombre del paquete
.
Ejemplo:
sudo apt install lynx
.
Apt update
Se usa para instalar paquetes de datos para actualizar el sistema.
.
Apt upgrade
Se usa para instalar los paquetes descargados para actualizar el sistema.
.

11. Comandos para compresión de archivos

gzip
Comprime un archivo indicado a continuación en formato .gz
.
Extensiones:
1. “-d” restaura el archivo a su forma original
.
Esctritura:
gzip + archivo
.
Ejemplo:
gzip dump4.sql
.
tar
Agrupa archivos en un nuevo archivo .tar
.
Ojo: Esto no comprime a no ser que uses el parametro “czf”, de lo contrario solo agrupa.
.
Parametros:
1. “cf”: crea un archivo con el nombre que indiques a continuación que comprima a los archivos de la ruta que indiques.
2. “tf”: te permite ver el contenido del archivo comprimido que indiques a continuación
3. “xf”: Extract file. Extrae los archivos comprimidos en un .tar
4. “czf” combina y comprime los archivos indicados en un nuevo archivo .tgz
5. “xzf” descombina y descomprime el contenido de un archivo .tgz
.
Escritura (combinar):
Tar + cf (create file) + nombre del archivo comprimido + ruta de los archivos a comprimir
.
Ejemplo (combinar):
Tar cf backup.tar backup/*
.
Crea un archivo llamado backup.tar que comprime todos los archivos ubicados en el directorio backup/
.
Ejemplo (revisar archivo):
Tar tf backup.tar
.
Revisa el contenido del archivo comprimido backup.tar
.
Ejemplo (extraer):
tar xf backup.tar
.
Extrae los archivos de backup.tar en la dirección actual
.
Ejemplo (combinar y comprimir):
Tar czf backup.tgz backup/
.
Combina y comprime los archivos en el directorio ./backup/ en un nuevo archivo llamado backup.tgz
.
Ejemplo (extraer):
tar xzf backup.tgz
.
Extrae los archivos de backup.tgz en la dirección actua
.

12. Busqueda de archivos desde la terminal

locate
Busca un archivo a partir del nombre del archivo que buscas.
.
Si no encuentra nada, simplemente no muestra nada.
.
Locate utiliza una base de datos interna de ubuntu para ubicar los archivos. Si no está actualizada, no podrás buscar nada con locate.
.
Para actualizar la base de datos, utilizas: sudo updatedb
.
Escritura
Locate + nombre del archivo
.
Ejemplo
Locate hello.php
.
whereis
Se utiliza para ubicar archivos binarios (comandos). Se usa principalmente con ejecutables versionados muy similares entre si.
.
Escritura
whereis + comando
.
Ejemplo
whereis echo
.
find
Busca en un arbol de directorios siguiendo varios parametros.
.
Escritura
Find + directorio donde buscarás + nombre del archivo o parametros
.
Parametros
1. “-user” + usuario: busca los archivos del usuario indicado
2. “-perm” + permisos en binario (ej: 644): busca los archivos con esa configuración de permisos.
3. “-type” + tipo de archivo: busca directorios (d), archivos (f), entre otros
4. “-mtime” + Numero de días transcurridos desde la última modificación: permite buscar archivos en funcion a la ultima modificación. Por ejemplo, +7 busca archivos modificados hace mas de 7 días, y -7 busca archivos modificados hace menos de 7 días
5. “-exec” + otro comando: Ejecuta el comando descrito a continuación sobre los archivos resultado de la búsqueda.
.
OJO: Los archivos resultado de la busqueda pueden ser descritos como {}
.
OJO: debes finalizar el comando con un ;
.
Ejemplos
Find . -user mistofjoy -perm 644
.
Buscan todos los archivos de mistofjoy con matriz de permisos 644
.
`Find . -type f -mtime +7 -exec cp {} ./backup/ ;
.
Busca solo archivos modificados hace mas de 7 días y los copia a la carpeta backup/ del directorio actual.
.

13. Comandos HTTP

.
curl
Se usa para pedir algo al servidor y obtener la respuesta en pantalla
.
Escritura
curl + nombre de dominio
.
Extensiones
1. -v: devuelve toda la comunicación vía http
.
Ejemplo
curl https://platzi.com
.
Te muestra lo que el navegador recibe cuando entra a platzi.com (html)
.
wget
Se usa para realizar descargas desde servidores HTTP
.
Escritura
wget + url con el archivo a descargar
.
Ejemplo
wget https://www.php.net/distributions/php-7.3-10.tar.bz2
.
Descarga el archivo php-7.3-10.tar.bz2 de la ubicación introducida en internet
.

14. Acceso seguro a otras computadoras

ssh
"Secure shell", conección segura o terminal segura.
.
Cuando lo ejecutas, te conectas directamente a la terminal de tu servidor remoto, donde funcionaran los mismos comandos de siempre.
.
Ojo, todos los comandos que insertes alli se ejecutaran en el otro servidor.
.
Ojo: si configuras la conección con tu llave pública y privada, puedes ingresar con la abreviatura de la conección
.
Escritura
ssh + usuario + @host (IP) + contraseña
.
exit
Termina la ejecución de la terminal. En tu computadora esto solo cierra la terminal. Pero cuando estas conectado a un servidor, esto cierra sesión en el servidor y te regresa a tu terminal.
.
Escritura
exit
.
Ejemplo
exit
.
mail
Envía un correo electronico.
.
Ojo: necesitas configurar varias cosas para que funcione, pero desde un servidor preparado para hosting deberías tener todo lo necesario ya listo.
.
escritura
Mail + extensiones + correo destino + contenido
.
Extensiones
1. -s: indica el subject a continuación entre “”
.
Ejemplo
echo "probando" | Mail -s "probando para platzi" [email protected]
.
Envía por correo electronico el mensaje “probando” con el subject “probando para platzi” a [email protected]
.

15. Variables de entorno

<h3>Asignación global</h3>

.
export
Permite asignar globalmente una variable de entorno para toda la sesión.
.
Ojo, para que la terminal distinga a una variable del texto común, debemos utilizar el simbolo $ al empezar a escribirla. (Ej: $PATH)
.
Escritura
export VAR=valor
.
Donde:
1. VAR: nombre de la variable
2. valor: el valor que queremos darle
.
Ejemplo
export MI_VAR=Mauro
.
Esto crea la variable $MI_VAR, la cual será válida por toda la sesión (Por ejemplo, podrías probar echo $MI_VAR)
.

<h3>Asignación particular</h3>

Puedes modificar el valor de una variable de entorno que creaste para ejecutar un único comando.
.
Esto es practico cuando quieres que un comando se ejecute con la variable diferente, pero no quieres que los demás comandos que le sigan se vean alterados.
.
VAR=valor + comando
Con esto puedes alterar el valor de la variable antes de ejecutar un comando.
.
Ejemplo
MI_VAR=/home php env.php
.
Ojo, en este caso, el archivo env.php muestra el contenido de MI_VAR en pantalla (y en la clase funcionó).
.
Esto significa que este comando si cambia el valor de la variable.
.

16. Cómo crear nuevos comandos

Puedes crear un archivo de texto plano con los comandos que vas a ejecutar, y luego invocar a este archivo como si fuera un comando.
.
Ojo, tus comandos pueden tener una extensión de archivo o no. Basta con crearlos con VIM y ya está.
.
Puedes crear los archivos en el vim
.
Primero, crea el archivo con el comando que vayas a crear.
.
Ejemplo:
vim practicar
.
Luego, en la primera línea, empieza el archivo declarando el interprete (Bash):
.
#!/usr/bin/bash
.
A continuación, introduce la cadena de comandos que la terminal va a usar para ejecutar el nuevo comando que acabas de crear.
.
Ejemplo
.
Vim platzi.sh
.
Platzi.sh:

#!/usr/bin/bash

NEW_DIR=platzi

if [ ! -d"/root/$NEW_DIR" ]; then
Mkdir /root/$NEW_DIR;
fi

cp backup_code.sh /root/$NEW_DIR/
echo"`date`: Todo listo jefe!"

Ojo, cuando termines de escribir el archivo, seguramente no tendrás aún permiso de ejecución.
.
Tienes que habilitarlo luego de crearlo.
.
OJO, tienes que escribir la dirección correcta del Bash al inicio del archivo del comando para que funcione.
.
Puedes buscar la ruta con el comando whereis bash
.
En mi caso la ruta es /usr/bin/bash
.
Programar comandos en el PATH
Hay un archivo en el home que se ejecuta cada vez que inicia la terminal llamado .bashrc
.
No contiene nada, y puedes editarlo para que ejecute funciones que tu desees cada vez que inicie.
.
Un uso práctico de él es agregando al $PATH la dirección de tus nuevos comandos. Asi podrás ejecutar tus archivos como comandos.
.
Solo escribe en la primera línea:
export PATH=$PATH:ruta-de-tus-comandos
.
(Ej: export PATH=$PATH:/home/mistofjoy/.commands)
.
De este modo, la dirección de tus comandos se agregará al PATH cada vez que abras la terminal.
.
OJO: La terminal de windows configura en el .bashrc todos los colores y las funcionalidades adicionales.
.
Si revisas bien el archivo, verás que este ejecuta un segundo archivo (que inicialmente no existe) llamado .bash_aliases
.
Ahí puedes hacer la configuración que necesites del PATH.
.
source
Lee y ejecuta el contenido de un archivo (generalmente un script de comandos), ejecutandolos dentro de la terminal.
.
Escritura
Source + ruta del archivo a ejecutar
.
Ejemplo
Source ./personalProjects/project.sh
.
NOTA
Creé una carpeta oculta en el home llamada “.commands” donde almacenar mis comandos
.
Tambien programé el archivo .bash_aliases para incluir la carpeta .commands en el $PATH
.
Ahora puedo ejecutar mis propios comandos siempre y cuando coloque su nombre.
.
OJO: los comandos de desplazamiento entre carpetas necesitan ejecutarse con un source antes.
.
Ej:
source project.sh
.

17. Programar tareas

at
Te permite programar una tarea para que se ejecute en el tiempo que indiques a continuación
.
Escritura
At + tiempo para ejecutar el comando
.
Al pulsar enter, se abrirá una sección de script donde podrás introducir los comandos de la tarea programada.
.
Cierras el script con ctrl+d
.
Ejemplo

At now +2 minutes

At> echo "hola mundo!" > /home/mauro/hola.txt

Esto programa a la terminal para que en 2 minutos introdusca “hola mundo!” como el contenido del nuevo archivo hola.txt
.
cron
Permite programar comandos para que se ejecuten de forma periodica.
.
Cron no se utiliza como un comando. Simplemente es un servicio que ejecuta lo que hayas programado en el crontab.
.
crontab
Invoca la lista de comandos y archivos que puede ejecutar el comando cron.
.
Escritura
crontab
.
Extensiones
1. -e: permite editar la lista
2. -r: remueve el crontab actual
3. -l: muestra el contenido del crontab
4. -u: te permite introducir el nombre del usuario cuyo crontab quieres ver. (si no indicas uno, él por defecto abre el tuyo).
.
ejemplo
crontab -e
.
Los comandos en crontab funcionan programando primero cuando va a ocurrir cada uno:
.
Minutos de la hora + horas del día + día del mes + mes del año + día de la semana
.
Si introduces “*”, cron lo tomará como que es todos los días de la semana, o meses en el año, etc.
.
Ejemplo
45 12 * * * echo "hola" > hola2.txt
.
Significa a las 12:45 de todos los días del mes, todos los meses del año, y todos los días de la semana; el mensaje “hola” se grabará en el archivo hola2.txt
.

18. Papelera de reciclaje (Bonus)

¡Creé una papelera de reciclaje!
.
Esto me alegró porque, cuando usas el comando rm, los archivos simplemente desaparecen sin que puedas localizarlos de nuevo.
.
En la carpeta .commands/ que previamente creé en el home y que agregué al PATH en la sección anterior, introduje un nuevo comando llamado trash
.
(Ojo, tienes que tener permiso de ejecución para ejecutar ese comando).
.
Luego de eso creé una carpeta en el home llamada .trash/, y luego configuré el comando trash con el siguiente script:

#!/usr/bin/bash

mv $1 ~/.trash/;

Ahora, cuando quieran enviar algo a la papelera de reciclaje, solo tienen que insertar el siguiente comando:
.
trash<nombre-del-archivo></nombre-del-archivo>
.
Ahora, sus archivos se moveran a la carpeta .trash/ en lugar de desaparecer con el comando rm.
.
Ojo, ahora tendrás que limpiarla de vez en cuando. Aunque tambien puedes configurar el crontab para que la limpie de forma recurrente.
.
Ojo, el $1 en el código del archivo significa que usa el primer argumento que introduces luego del comando. Asi que es posible que ese código no funcione si deseas borrar varios archivos con el mismo comando.
.

Afterword

Debe haber un modo mejor de escribirlo. Si te interesa puedes investigar más por tu cuenta, o compartir la solución en los comentarios si deseas contribuir con la solución 😃
.
Escrito y compilado por Jhonkar Sufia (@mistofjoy)
23/04/2021

Escribe tu comentario
+ 2
4
11748Puntos

tus apuntes estan muy completos, excelente servicio

1
6061Puntos

Los Héroes si existen.