Primeros pasos
¿Qué es la terminal?
Aprendiendo a caminar en la terminal
Manipulando archivos y directorios
Explorando el contenido de nuestros archivos
¿Qué es un comando?
Wildcards
Empezando a correr
Redirecciones: cómo funciona la shell
Redirecciones: pipe operator
Encadenando comandos: operadores de control
Cómo se manejan los permisos
Modificando permisos en la terminal
Cómo configurar variables de entorno
Comandos de búsqueda
Su majestad: grep
Utilidades de la terminal
Utilidades de red
Comprimiendo archivos
Manejo de procesos
Procesos en foreground y background
Editores de texto en la terminal
Personalizar la terminal de comandos
Despedida
Nunca pares de hackear
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 183
Preguntas 106
☝ Las variables de entorno son muy útiles cuando quieres compartir un script que usa dichas variables de entorno. Por ejemplo, ¿alguna vez has usado variables de entorno en proyectos de NodeJS, PHP, Vue, React? Esas que se guardan en archivos .env
, aquí en la terminal son muy similares, puedes tener tus propias variables de entorno, y puedes crear un script para la terminal que haga uso de ellas!
.
Claro, si solo nos enfocamos al uso exclusivo de la terminal podemos sacarle mucho provecho también, por ejemplo, podemos saber cuántas rutas tiene nuestra variable PATH
:
echo $PATH
Esto por ejemplo, sirve para debuguear cuando algún comando no funcione, podemos mirar si la ruta de su archvio está dentro de PATH
😄
Notas 😄
Variables de entorno.
ln -s <ruta> <Nombre>
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>
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"
para crear un alias útil 👀.code <archivo>
para abrir un archivo de texto en VS Code desde la terminal.PLATZI_MESSAGE='Hola amigos"
.PATH=$PATH:<ruta>
, guardamos, cargamos bash en la terminal, y listo 😄.:
Linux --> .bashrc
Mac --> .zshrc
Generalmente este archivo no está creado en Mac, para esto debemos crearlo, les dejo el siguiente vinculo en donde se habla de su creación (archivo zshrc)
Tras haber modificado o creado las variables de entorno, debemos guardar los cambios(dentro del editor de texto), luego debemos decirle a nuestra terminal que lea las variables de entorno y pueda actualizar (si es que existen cambios), para esto usamos el comando bash y listo, ya podemos usar nuestras variables de entorno, saludos a [email protected]!!!
Si revisan el archivo .bashrc se van a encontrar con esto:
Lo que dice es que es preferible añadir nuestros alias personalizados en un archivo .bash_aliases
Para visualizar todos los alias que existen en nuestro sistema, basta con escribir alias
en la terminal y nos mostrara todos los alias existentes.
Tambien es posible saber si un comando en especifico es un alias o no. Con el comando type
podremos saber esto, por ejemplo, yo tengo un alias para neovim
$ type vim
vim is an alias for nvim
Cuando el comando es un comando nativo o una función, type
nos lo dira.
$ type git
git is /usr/bin/git
$ type my_function
my_function is a shell function from /home/user/.zshrc
Por algún motivo al momento de ejecutar el comando code .bashrc
en la terminal me sale esto.
Así que ingresé desde la terminal de Visual Studio code.
Les comparto mis apuntes, espero que le sirva. 😄
Nuestra shell o línea de comandos tiene una configuración, esta y diferentes valores del sistema se pueden acceder a través de las variables de entorno es super útil poder manejarlas. Hay variables de entornos primordiales incluso para la configuración del sistema, podemos tener variables de entorno para saber la ubicación del home, los binarios, etc.
Son un tipo de archivo que hacen referencia a un lugar, es como un acceso directo desde la terminal.
Lo podemos crear así:
$ ln -s [ruta] [nombre del link simbólico]
s
: Es de simbólico.
Ejemplo
lrwxrwxrwx 1 galeedgutierrez galeedgutierrez 12 Aug 4 20:19 documentosLink -> ./documentos
Aquí vemos que el link simbólico “docuementosLink” apunta a ./documentos.
También vemos que antes de los permisos vemos una l
.
Todos los permisos que vemos son permisos dummy o permisos que no tienen valor. Los links simbólicos como tal no tienen permisos.
printenv
Este nos muestra todas las variables de entorno que tenemos configuradas
Podemos usar la siguiente sintaxis.
$ echo $[variable de entorno]
$HOME
Es la ruta de nuestro home de nuestro usuario. Podemos usarla para ir al home.
$ cd $HOME
Esto es útil por si queremos configurar una ruta en específica que vayamos a usar en algún programa o script, etc.
$PATH
PATH tiene toda la ruta en donde se encuentran los binarios que ejecuta nuestro sistema.
Debemos buscar el archivo .bashrc
en el home de nuestra terminal, este archivo es donde se mantienen la configuración del bash. En caso de ZSH lo vamos a encontrar en .zshrc
.
Podemos modificar estos archivos desde un editor de texto como ser VSCode o con los que ya vienen en la terminal como VIM o NANO.
Podemos modificar o crear usando alias
.
alias l='ls -lh'
MENSAJE_NUEVO="Mensaje"
A esto lo podemos invocar usando el comando echo
, tal como $HOME o $PATH.
$ echo $MENSAJE_NUEVO
Normalmente cuando estamos instalando nuevos binarios hay diferentes manejadores de paquetes, es el que se encarga de traer un repositorio e instalar algún binario dentro de la máquina, esto lo podemos hacer con el sistema de paquetes nativos en Linux es apt
, etc.
Lo que hacen estos es traer un repositorio, instalar algún binario, pero no todas las veces las rutas donde están estos binarios hay que agregarlos a la variable PATH.
Una vez dentro de la terminal realizamos lo siguiente
PATH=$PATH:nuevaRutaDelBinario
Cuando ponemos $PATH
quiere decir que use lo que ya tiene y con :
le estamos diciendo que agregue la nueva ruta del binario…
Es importante que tengamos cuidado con los alias y como los asignamos, no hay que crear alias de comandos que ya existen.
$ alias cd='rm -rf' #Es muy peligroso
También les comparto apuntes del mismo curso pero del 2019.
El hecho que podamos ejecutar comandos sin necesidad de colocar su ruta completa, esto es posible porque tenemos algo llamado variables de entorno.
Es una definición global a la que todos los procesos tienen acceso y específicamente el sistema operativo tiene acceso a esa variable para tomar más información sobre lo que está pasando a su alrededor.
El $PATH o ruta en esta variable se almacena todas las rutas en la que el intérprete de comandos, la terminal, tiene que ir a buscar los archivos que pueden ser ejecutables.
Si usamos el comando:
$ echo $PATH
Podemos ver los lugares donde podemos encontrar los archivos ejecutables.
Todos los comandos que utilizamos tienen que estar definidos en la variable $PATH.
$
: Es una forma de pedirle al intérprete de comandos que expanda el contenido de esa variable, esto sucede con todas las variables de entorno.
Todos los procesos tiene acceso a las variables de entorno, tanto para leerlas como para cambiarlas.
Esto se puede hacer para un comando en particular o para toda la sesión.
Para asignarla para toda la sesión usamos el comando:
$ export VAR=valor
Podemos definir el valor solamente para el próximo comando que vamos a ejecutar, no es usual, pero lo podemos usar para sobreescribir una variable que ya teníamos definida y no queremos alterarla para todos los comandos sino para una ejecución en particular.
$ VAR=valor comando
VAR
: El nombre de la variable.
valor
: Es lo que queramos que exista.
Para poder usar un software que no viene en nuestro sistema, lo que necesitamos es instalarlo para poder usarlo.
Una instalación implica descargar el programa por lo que tenemos que saber de donde sacarlo, cuando lo tengamos procedemos a realizar la descarga, después tenemos que copiar los archivos del programa a los lugares en los que sea necesario y por último hacer algunas configuraciones para que el programa pueda correr.
Son programas que se encargan de realizar todas las tareas por nosotros y se llaman paquetes de software.
Así como existen los paquetes también existen otros programas que son los administradores de paquetes, estos conocen de donde realizar la descarga que otros paquetes ya tenemos instalados y como configurara todo de tal manera que no genere conflictos, se encarga de resolver los problemas de dependencias.
Según el sistema operativo vamos a poder usar diferentes manejadores de paquetes. Son archivos que ya son ejecutables.
Se utiliza en distribuciones de Linux basadas en Debian.
install
: Es uno de los comandos que tiene incorporado apt
.
$ apt install nombreDelProgramaAInstalar
Se utiliza en las distribuciones de SUSE.
Es el comando universal, es un poco más rústico.
En caso de no poder instalar debemos usar sudo
.
Es un navegador de internet desde la línea de comandos.
$ lynx paginaWeb
Son librerías escritas en el mismo lenguaje que vamos a utilizar.
Cada lenguaje propone su manejador de paquetes.
Se usa con Python.
Para ejecutar archivos en Python necesitamos ciertas librerías como pandas.
$ sudo pip install pandas
Es para PHP.
Este es para NODE.JS.
Estos pretenden ser más genéricos con los que es posible instalar paquetes binarios o propios de un lenguaje.
Para usarlos hay que instalarlos primero.
En este punto he decidido volver al principio del curso y tomarlo enserio ,no me sirve tener el certificado y la cabeza hueca.
Link simbólicos:
Son acceso directo desde la terminal
Para usarlo escribimos: Ln -s dirección (nombre del atajo)
Se crea un documento especial (se puede observar con ls -l)
Ejemplo: ln -s Documents/Dev Desarrollo (para crear)
Definición de variable de entorno:
Las variables de entorno nos sirve para acceder a las configuraciones de tu terminal y del sistema.
Las variables de entorno hacen referencia a archivos, directorios y funciones comunes del sistema cuya ruta concreta puede variar, pero que otros programas necesitan poder conocer.
Se pueden configurar, manipular y crear.
Comando printenv
Comando echo {contenido}
Imprime la información en contenido
En caso de variable de entorno: echo $variable
variable de entorno $HOME
Guarda la ruta del usuario
-echo $HOME // imprimir la ruta
-cd $HOME // ir a la ruta
variable de entorno $PATH
Guarda todas las direcciones de los binarios que ejecuta nuestro sistema.
Cuando ejecutamos node, usa esta variable para buscar el binario.
Esta variable es importante al instalar paquetes desde un gesto (como npm) pues muchas veces nos pedirá el paquete agregar la ruta del binario del paquete a la variable $PATH
.bashrc
Es el archivo donde se encuentra la configuración de nuestro bash.
Se puede modificar para modificar las variables de entorno.
De no existir debes crear lo junto al archivo .bash_profile
Para crear comandos tipo alias
alias l=‘ls -lh’
Para crear variables de entorno
MAXI_MESSAGE=“HOLA MUNDA”
Para añadir nuevas rutas a la variable de entorno $PATH debemos concatenar la informacion previamente guardada con la nueva que queremos agregar:
PATH=$PATH:/home/user/bin
La terminal tiene ciertas configuraciones, esta y diferentes valores del sistema se pueden acceder con variables de entorno. En ocasiones podremos crear alias pero esta vez serán de forma permanente.
Los links simbólicos hacen referencia a un lugar.
ln -s ruta nombreLink
De esta forma creamos un acceso directo a la ruta que escribimos con el nombre que mandamos como parámetro. En este caso ahora si escribimos
cd nombreLink
Este nos mandara a la ruta que le asignamos en el comando.
printenv
Este comando nos muestra todas las variables de entorno que existen en nuestro sistema operativo.
echo $nombre
Este comando nos muestra el valor de la variable que seleccionemos. Al igual que ya tengamos el nombre y su valor, podremos utilizarlo para algún programa o para usar comandos.
code .bashrc
Este comando nos abrirá visual studio code y nos abrirá el archivo .bashrc que es donde tenemos guardada todas nuestras variables de entorno y donde podemos modificarlas.
Si queremos crear una variable de entorno, necesitamos poner el nombre en mayúsculas y la sentencia que queramos entre " ".
Si queremos modificar una variable de entorno y concatenarla con su valor original, utilizamos
PATH=$PATH:/home/codevars/bin
NO HAGAS ALIAS DE COMANDOS EXISTENTES, ES PELIGROSO
Es increible el valor de esta clase , aqui les dejo unos alias que hice :
<alias nf="neofetch"
alias fx='firefox'
alias platzi='fx https://platzi.com/home'
alias yt='fx https://www.youtube.com/'
alias sup='sudo apt install update && sudo apt install upgrade && autoremove'
alias py="cd /home/bitecode/Bryan/python"
alias work="cd /home/bitecode/Bryan && code python"
alias bryan="cd /home/bitecode/Bryan">
Para usuarios con WSL, hice un alias
que permiten ingresar a https://platzi.com/home directamente, y da un pequeño saludo:
alias platzi='cmd.exe /c start chrome https://platzi.com/home && clear && echo "Saludos Platzinauta" | lolcat --animate'
Me generaba error al abrir el archivo con VS en WSL2, se soluciono reiniciando
Para los que esten usando WSL, y no les quiera reconocer el comando code a mi me funciono lo siguiente:
sudo apt-get update
sudo apt-get upgrade
cabe destacar que a mi me funcionaba normal desde el terminal de windows, pero queria abrir VSC desde ubuntu, con el codigo anterior me funciono.
Estos son mis alias:
# Actualizando el sistema
alias update="sudo apt update && sudo apt upgrade"
# ¿Qué día es hoy?
alias time="date; cal"
# Muestra todos los archivos de mayor a menor tamaño, tambien los archivos ocultos y nos muestra los permisos, y por último, añade / al final de cada directorio.
alias content="ls -lFAS"
.
Realmente no es que quede permanente si se guarda en el archivo de configuración de nuestra terminal. Lo que pasa es que este archivo es ejecutado cada vez que iniciamos la shell. Por esta razón siempre que iniciamos la terminal estos comandos serán ejecutados, se crearán los alias y estarán disponibles para nuestro uso 😉😊.
Acabo de crear mi primer alias
En este caso no es muy relevante puesto que la ruta es solo 1 carpeta mas.
Pero aprendido esto podré crear mis alias para los comandos de Git que después de tantas veces ingresarlos se agradecería tener un atajo personalizado.
Ustedes tienen alias de git que deseen compartir como los colocaron? o si existe algún estándar 😅
Hola chicos y chicas, aqui les dejo un excelente video de las VARIABLES DE ENTORNO para reforzar lo que nos explico el profesor en esta clase, espero y les sea útil.
https://www.youtube.com/watch?v=ocdlXH9jAjA
Aquí hay una lista de alias que pueden llegar a ser útiles
https://www.cyberciti.biz/tips/bash-aliases-mac-centos-linux-unix.html
Se pueden hacer cosas muy interesantes con esta información
En windows, para imprimir variables de entrono usamos
set variable de entorno
ejm
set HOME
es equivalente a echo $HOME
Buenas, estoy haciendo el curso con una WSL con distribución Ubuntu, casi en todas las clases venia teniendo algún problema ya sea con un comando, una extensión y siempre que me fije a muchos les pasaba lo mismo por eso me puse a investigar y encontré un mini tutorial de VS que explica paso a paso todo, desde este archivo pude solventar todos los problemas, espero les sirva =D
https://code.visualstudio.com/docs/remote/wsl-tutorial
Pequeño resumen de lo que entendí a nivel no tan técnico.
▶Los alias escritos directamente en la terminal solo funcionaran durante esa sesión, si reinicias, cierras o recargas la terminal estos alias desaparecerán.
▶Los alias asignados en el archivo .bashrc o .zshrc (ubicado y oculto en $home) no se borran al cerrar o reiniciar la terminal.
▶$PATH es la ruta donde se buscan binarios/archivos ejecutables para otros programas, todos los comandos que hemos ejecutado hasta ahora se encuentran en alguna carpeta de $PATH (min 4:14).
En el ejemplo que del profesor, la carpeta vacía BIN no se usara hasta el momento donde se instale algún programa en esa carpeta (min 8:35), cuando un comando no funcione correctamente o un programa necesite buscar funciones en otra ruta que no este incluido en $PATH podemos asignar nuevas direcciones con las instrucciones del minuto (9:02)
PATH=$PATH:/HOME/carpetaDeTuEleccion/
si te aparece el error “su: Authentication failure”, entonces para acceder a root debes usar
sudo root
Hola alguien me podrá ayudar cómo accedo o ejecuto el comando ‘code .bashrc’ desde WSL?
Hola a todos!
En mi caso no encontraba el archivo .bashrc así que buscando encontré que estaba oculto y para poderlo visualizar usé:
ls -la ~/ | more
Y problema solucionado…
Les cuento que estaba intentando abrir el visual studio code con
<code .baschrc>
y me abría el visual studio pero con el archivo vacío, después de averiguar por todo lado encontré que la solución era resetear, 😑 😑 pues eso hice, resetee la laptop y listo, ahora si abre.
No se la causa pero si la solución jajaja.
El problema de editar el archivo .bashrc
con la finalidad de editar una variable de entorno como el ejemplo PATH=$PATH:/home/usuario/bin
es que cada vez que se reinicie la bash se le va a agregar la misma ruta al final. Solo es una observación, ésta fue una poderosísima clase.
Para crear un archivo simbolico escribimos:
ln -s Documents/Dev Desarrollo
Para ver nuestras variables de entorno usamos printenv
Veamos algunas variables de entorno:
$HOME
: Nos muestra la ruta de nuestro home.$PATH
: Vamos a ver nuestro path de nuestro.Comando para crear un link simbolico
ln -s <ruta> <nombre-link>
If you use WSL, and it is not working, the code command. You can use, the next steps:
cat << EOF >> ~/.bash_profile
# Add Visual Studio Code (code)
export PATH="\$PATH:/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
EOF
Nota: Que pena mi inglés, pero estoy tratando de manejar más el inglés técnico, para mejorar en esta habilidad para mi trabajo.
Los links simbólicos son como darle un alias a una direccion en la computadora para acceder a ella más rápido. Por ejemplo: ln -s Documents/Dev Desarrollo
. -> ln -s para decir que es un link simbólico, luego la ruta a donde iremos y finalmente el nombre que tendrá este link simbólico. Los links simbólicos no tienen permisos.
printenv
nos mostrará las variables de entorno de nuestra computadora.echo $NombreDeVariable
nos mostrará una variable de entorno específica.La variable de entorno PATH tiene las rutas de todos los binarios que se ejecutan en nuestro sistema. Esta variables es MUY IMPORTANTE.
En el archivo “.bashrc” tenemos guardadas las configuraciones de la terminal. Si es una terminal de ZSH, estarán en el archivo “.zsgrc”
Un alias muy útil para evitar escribir git push origin main
es simplemente alias gpom='git push origin main'
.
manejador de paquetes es el que instala programas por ejemplo apt
Hola ! ! !
Quiero dejar un ejercicio que hice que me ayudo a preacticar lo que aprendimos
El ejercicio es el siguiente:
Crea una carpeta 📂 llamada curso-de-terminal, en la misma linea de instrucciones crea un archivo llamado variables-de-entorno y mueve el archivo en la carpeta anterior. Despues mete todas las variables de entorno que tienes (hazlo con printenv) y metelas en ese archivo
NO OLVIDES MANDARME TUS REPUESTAS 😉
Un atajo bastante simple pero útil a mí parecer es el comando:
$ cd ~
No importa en que path estemos, nos lleva al directorio Home.
$ cd /
Esto nos lleva directamente a la raíz ( root ) del sistema.
Vale también añadir las funciones. Son similares al alias, pero permiten meter variables (por ejemplo, si quieres hacer find y rm pero sin meter todo el rato -exec… o -delete).
# función en .bashrc para hallar y remover, útil cuando
# uno usa wsl para borrar zoneid. El nombre viene de
# findremove
fndrmv() {
find . -name $1 -exec rm -ir {} \;
}
Ese es un ejemplo, pero puedes hacerlas más complejas. Vale aclarar que hay otra forma de hacerlas, pero bueno. Lo importante es que se sepa que $1 es la variable que insertas.
Tratando de replicar lo que un compañero hizo modificando el comando bash para que imprima un dragón el ejecutarlo como se muestra en la imagen:
Antes hagan una copia del archivo de configuración para que no les pasé lo que a mi que dejaron de funcionar el comando bash jajaja:
Después de esto editar el archivo:
Agregar esta línea y guardar los cambios:
ejecutar nuevamente el comando bash para que se hagan efecivos los cambios:
Listo ya tienen su bash personalizado 😃
Muy buena explicación. como recomendación personal, les aconsejo que utilicen los alías de los comandos raros, aquellos que pueden ser muy difíciles de aprenderse. Eso les evitara de estar buscando cada cierto tiempo en el historial de comandos.
Las variables de entorno son definiciones globales o valores globales a los que todos los procesos de un sistema tiene acceso, por ejemplo, la variable PATH es accesible para todos los procesos del sistema, debido a que en esta variable se almacenan todas las rutas de los ejecutables.
Para consultar el contenido de una variable de entorno se debe anteponer el simbolo pesos ($). Ejemplo: echo $PATH.
Se pueden asignar variables de entorno para un comando en particular o para toda la sesión en que nos encontremos.
La asignación de variables de entorno para toda la sesión, se realiza asi: export VAR=valor, donde VAR es el nombre de la variable que estamos creando y valor es lo que queremos que exista en esta variable.
para asignación de variables locales, simplemente se debe asignar un valor a una variable simple. Esto se utiliza por ejemplo, cuando queremos asignar un valor a una variable que solo sea valido para la ejecución de un comando, sin afectar el valor global que ya tengo asignado. Para eso, podemos hacerlo asi: VAR=valor comando.
Es un definición global a la que todos los procesos tienen acceso. esta toma mas información de lo que se este typeando.
Ejemplo: echo $PATH = se encuentran todos los comandos ejecutables
Asignación de las variables de entorno
export: Este comando se utiliza para asignar a toda la sesión
Ejemplo: export MI_VAR = david
, si luego escribimos echo $MI_VAR se mostrará mauro en la terminal. (Este permanecerá miestras dure mi sesión)
var: Este comando solo asigna el valor para el proximo proceso que se va a ejecutar. este no es muy usual.
Ejemplo: MI_VAR=/home php env.php
Variables de entorno
Son variables que cargamos en el código de la shell y que conviven de manera permanente para su acceso
Comandos útiles
Links simbólicos
Si estan en MAC y quieren ver el .bash, solo tienen que editar el .bash_profile
En el 6:20 dices: “que te recomiendo que lo tengas, porque ya hiciste el curso de prework”, creo que Platzi debería dejar claro qué asume el instructor que uno ya ha hecho de cursos. A mí no me afecta, pero a otros que llegaron a este curso les puede frenar en su aprendizaje
Espero sirva:
Hice esta modificación en el archivo .bashrc
alias xampp=‘cd /opt/lampp
sudo ./manager-linux-x64.run’
Esto hace que se abra la interzás gráfica de xampp
Esta clase tiene la particularidad de que se siguen muchas procesos y el profesor da muchas instrucciones de muchas herramientas y codigos que podemos usar, pero en ningún momento se detiene a pensar en las personas que estan empezando a desarrollar su conocimiento y sus bases de programación por lo cual se hace muy dificil seguir la dinamica, ya que no se entiende que se esta haciendo, por que se esta haciendo y se pierde el hilo conductor
El framework Laravel maneja un archivo .env donde se colocan las variables de entornos.
Para wsl el .bashrc que hay que abrir es el de el home, es deicr pueden ir al home y ahi si abrir el archivo:
cd $HOME //viene por defecto
code .bashrc
Y ahi si editan el archivo.
Para volver simplemente hacen:
cd $OLDPWD //viene por defecto
Y ven los resultados
//Esto es lo que me funciono a mi
Jugando con la terminal
Para aquellos que no pudieron abrir VSC desde la temrinal en wsl. la pueden abrir con el siguiente comando.
<wslview .bashrc>
Les comparto mi primer alias de buenas practicas n_n
alias upup='echo "UPDATE!!!" && sudo apt update && echo "UPGRADE!!!!!" && sudo apt upgrade'
Para aquellos que estén usando la terminal de windows y les marque un error al ejecutar “code” (no existe) intenten abrir ubuntu directamente desde su terminal en lugar de la de windows e intenten ejecutar el comando code.
Una vez hecho esto ya podrán volver a la terminal de windows y ejecutar el comando sin problemas
Algunos Alias que agregue
.
alias gp="git push origin main"
alias act="sudo apt update"
alias act2="sudo apt update"
alias prende="sudo /opt/lampp/lampp start"
alias apaga="sudo /opt/lampp/lampp stop"
Los últimos dos son para iniciar y detener xampp
Mi alias 😎
alias animo="cowsay \"Sé que tú puedes lograrlo :3\" | lolcat"
Comando printenv te muetra todas las varianbles de entorno de tu equipo que tenemos configuradas
Impimir variables de entorno con echo $
Variable de todas las rutas que ejecuta nuestro sistema es con echo $PATH
´PATH=$PATH: nueva ruta… se agrega una nueva ruta de binarios
Nunca crean alias de comandos que ya existen
Les dejo mis apuntes de esta clase partida en 2 partes.
En windows, es necesario apenas salgan de WSL cambiar devolverse hasta home y cambiar el usuario para que no les quede por defecto en root
Si a alguno no le funciona la terminal de Ubuntu cuando tratan de abrir VSCode con code . traten de usar otra terminal, yo use Windows Terminal y desde ahi se se hizo el update automaticamente del acceso a vscode.
Ya luego pude regresar a la terminal de ubuntu y pude abrir tranquilamente vsc, igual desde la windows terminal claro.
cuando abres un terminal en linux, por defecto estás en tu home /home/pepito/
podemos verlo así:
$ pwd
/home/pepito
(pwd= print work directory)
y si tecleo un comando, lo cual llama a un programa ejecutable (un binario), como por ejemplo «ls» que lista los directorios y archivos que hay en ese directorio, ¿cómo sabe el sistema operativo dónde está ese binario para ejecutarlo?. La respuesta es, gracias al PATH.
autor: https://rootsudo.wordpress.com/2014/04/06/el-path-la-ruta-de-linux-variables-de-entorno/
comando printenv nos muestra las variables de entorno del sistema
Si usas Mac y te aparece en la terminal el mensaje “command not found”. Abre VSC, ve a la opción View y luego a Command Palette, te aparecerá un recuadro, aquí buscas el sgte y se instalará, finalmente cierra/abre la terminal y usa Code.
Un alias puede ser tan largo como se requiera y utilizar redirecciones y operadores de ejecución. El siguiente ejemplo que usa los parametros que se le pueden dar a ls
, muestra todos los archivos (a), en una lista larga (l), con tamaños de archivo facilmente entendibles (h) y al final de cada elemento le coloca una clasificación (/ para carpetas, *para archivos, etc.) y tambien “ordena” o muestra primero los directorios, luego los archivos, luego los enlaces y después otros tipos de recursos que pueden existir en el sistema de archivos de linux (los más usados); al final muestra el total de uso en disco (tamaño total de archivos), todo gracias a que se enlaza el resultado con el comando grep.
alias dir="ls -ahlF | grep '^d'; ls -ahlF | grep '^-'; ls -ahlF | grep '^l'; ls -ahlF | grep '^c'; ls -ahlF | grep '^b'; ls -ahlF | grep '^s'; ls -ahlF | grep '^p'; ls -ahlF | grep '^total'"
Se repite el comando ls
tantas veces como tipos de recursos existen (archivos, directorios, enlaces, etc), pues grep imprime SOLO el resultado de las lineas que comienzan (^) por la letra de cada tipo de recurso, por ello hay que hacerlo, en secuencia por cada tipo de recurso, incluyendo la palabra total al final en una ultima busqueda.
Igualmente no es muy util utilizar este comando, se pierden los colores que da el comando ls, pero sobre todo porque la busqueda en una carpeta con muchos archivos o posiblemente en algunas utilizando el parametro -r sea una busqueda demasiado larga.
En mi caso no me funciono el code .bashrc y lo que hice fue abrir la terminal desde visual studio y ejecutar el mismo comando
Para que se vean los cambios de nuestras variables, se tiene que recargar el bash con el comando: bash
Si no tiene zsh https://platzi.com/blog/como-instalar-zsh-en-windows/
Para ver en forma de lista:
echo $PATH | tr : \n
Variables de entorno
links simbólicos hacen referencia a un lugar, se puede ver como un acceso directo desde la terminal. No tienen permisos.
Printenv - nos muestra nuestras variables de entorno que esta configuradas
echo $HOME imprimir una variable de entorno
echo $PATH tiene las rutas, ver nuestros binarios
PATH=$PATH:/home/codevars/bin - agregar una nueva ruta
Dentro del .bashcr o .zshcr también se pueden hacer aliases con permanencia.
Me ocurrió que cuando trataba de escribir el mensaje guardado en PLATZI_MESSAGE solo me aparecía un salto de línea y no escribía nada, el problema era que no había guardado en VS Code, solo tenía que presionar CTRL + S en VS Code y recargar en la terminal para que se guardaran los cambios.
Link simbólico
ln -s ruta/ruta nombre_link_simbolico
No tiene permisos en si, solo permisos dummies.
• printenv, para mostrar las variables de entorno
• echo $variable, para imprimir las variables de entorno en la terminal
○ HOME
○ PATH
• Para modificar las variables de entorno en WSL, se debe modificar el archivos .bashrc. En WSL - Ubuntu, solo se debe ir a VSC y abrir el archivo desde allí ubicándonos en la carpeta home/user/ y se podrá acceder al archivo.
• Para crear una variable de entorno se agrega al archivo .bsahrc, este debe ser en MAYÚSCULA.
• También se pueden crear alias, alias avenv='source venv/bin/activate'
bash, ejecutar antes de para que se tenga en cuenta los cambios realizados.
.
Algunas variables de entorno en el archivo de conf de la shell tienen la palabra export frente a ellas. ¿Por qué? Esto se debe a que son variables que se usan en programas o scripts externos a la shell. Si no tienen la palabra export, entonces si se intentan usar en estos scripts o programas, no se podría obtener sus valores.
.
Por ejemplo:
$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh
$ export MYVAR="value"
$ ./echo.sh
value
Lo que está sucediendo es lo siguiente:
.
.
Se debe tener en cuenta que en este ejercicio se creó la variable MYVAR desde la shell, lo cual la hará volátil, es decir, una vez se cierre esa sesión de la consola, la variable MYVAR dejará de existir.
.
Este ejemplo lo saqué de esta respuesta, gracias a su autor.
Las variables de entorno son una herramienta que nos va a facilitar mucho la vida en nuestro día a día, bien sea para tomar variables de entorno para nuestras aplicaciones como para crear las nuestras. De igual forma nos permite crear alias permanentes que nos ayudaran a simplificar nuestro trabajo con los comandos mas comunes que usemos.
son links que podemos configurar como si fueran accesos directos en la terminal. No tienen permisos como tal.
ln -s Documents/Dev Desarrollo //este link simbolico Desarrollo nos permitira acceder directamente a la carpeta sin escribir su path absoluto.
las variables de entorno se utilizan para almacenar valores que seran utilizados por los scripts de la shell.
printenv //imprime las variables de entorno que tenemos en el sistema
$[nombre de variable] //imprime la variable especifica que indiquemos.
Es el archivo de configuracion de bash, donde tendremos nuestras variables de entorno, y podremos modificarlas o crear nuevas.
Aquellos que nos les corre el comando ‘code’ en MacOS
1ro. Deben arrastar studio code a aplicaiones
2do. Presionan control+command+P en studio code y escriben shell command y seleccionan la opcion de instalar
Variable $PATH
Cuando invocamos un comando en Linux como tree (que muestra el árbol de archivos de un directorio) estamos ejecutando un programa almacenado en alguna parte. Este programa es localizado por Linux en diferentes posibles ubicaciones de forma automática. Para saber la ubicación de un comando utilizamos otro comando llamado which.
which code
/usr/bin/tree
La forma en la que Linux encuentra estos comandos es a través de la variable de entorno PATH. Esta variable almacena una lista de directorios en los cuales Linux debe buscar un comando para poder ejecutarlo.
Una variable de entorno es una variable que es definida en todo el entorno de ejecución de la shell. Para ver una lista de variables de entorno podemos utilizar el comando env o printenv. Entre las variables de entorno que existen la que nos interesa en este caso es la variable PATH.
Nota:
la verdad no estoy entendiendo bien este curso, es que ando tonto o que?? no me funcionan los comandos que usa el profesor y su metodo de borrar todos los codigos tmbn hace que dificulte tomar notas rapidas, incluso tengo desconfigurado el teclado y no se por que 😐
Para los que no podían abrir VSC desde la terminal, sigan los pasos que les muestro en la imagen! Saludos
Ya me urgía este curso, conforme avanzo quedo más sorprendido de lo poderoso que puede resultar trabajar en la terminal.
💻
Para los que tienen Mac y no encuentran el archivo zshrc
investigue en internet y parece ser que esta no viene creada por defecto y hay que hacerla… Aun no lo intento yo pero si alguien sabe mas al respecto o tiene mas informacion por favor compartanla.
muy interesante, sobre todo el tema de los alias para simplicar
Fabulosa clase, cada vez aprendo más.
Como principiante, pienso que el uso de ‘alias’ debe ser solo para datos especificos que requieran de links en su valor, o alguna ruta dinámica o estática. Porque, para digitar código, estaríamos dejando a un lado el uso constante de tal código, y así lo estaríamos perdiendo de nuestra memoria, por falta de uso y de práctica. Para gente avanzada, esto sería de tremenda ayuda, para reducir el tiempo de tipeo.
Las variables de entorno son como variables (cadenas de caracteres) de un programa propios del Sistema Operativo. Cualquier programa las puede utilizar, y los usuarios las pueden modificar.
Normalmente, esos valores hacen referencia a archivos, directorios y funciones comunes del sistema cuya ruta concreta puede variar, pero que otros programas necesitan poder conocer.
En la mayoría de los sistemas operativos, la ubicación de algunas bibliotecas o de los archivos ejecutables del sistema más importantes puede variar según la instalación. Por eso es posible, para un programa dado, remitirse a una ubicación basada en las variables de entorno que definen estos datos. Eso es porque %USERPROFILE% es una variable de entorno: es decir, una cadena de texto que sistemas operativos como Windows, Linux o Mac usan para almacenar valores que pueden variar de un equipo a otro -o, como en este caso, de un usuario a otro- pero que, sin embargo, necesitan de un modo unificado de acceder al mismo. Hay muchas más variables de entorno además de %USERPROFILE% :
• %APPDATA% - Remite a la carpeta oculta para datos de programa, dentro de la carpeta de usuario. En Windows 10 la ruta por defecto es *“C:\Users\NombreDeUsuario\AppData\Roaming”.
• %COMMONPROGRAMFILES% - Remite a la carpeta donde los programas almacenan archivos comunes. En Windows 10 la ruta por defecto es “C:\Program Files\Common Files”.
• %PROGRAMFILES% - Remite a la carpeta donde se instalan los programas. En Windows 10 la ruta por defecto es “C:\Program Files”.
• %WINDIR% - Remite a la carpeta donde se instala Windows. En Windows 10 la ruta por defecto es “C:\Windows”.
Como se dijo las las variables de entorno no siempre equivalen a rutas de directorios: pueden remitir a otra clase de información. Así, %TIME% devuelve la hora actual del sistema, %OS% la versión del sistema operativo y %PATHEXT% la lista de extensiones de archivo consideradas ejecutables (lo común es que la lista incluya, además de los .EXE, archivos como los .BAT, los .COM, .CMD, .JS., .JSE, .MSC, .VBE, .VBS, .WSF, .WSH, etc). Pero quizá la variable de entorno más utilizada es %PATH% porque cada vez que tecleamos un comando, el sistema revisa las carpetas contenidas en la variable %PATH% para comprobar si algún archivo ejecutable coincide con el mismo.
Resumen en Notion
https://n9.cl/xx0ez
Información resumida de esta clase
#EstudiantesDePlatzi
Un link simbólico lo podemos ver como un acceso directo desde la terminal
Para ver las variables de entorno que tenemos configuradas usamos el comando printenv
Path es una variable de entorno que me muestra la ubicación de nuestros archivos binarios
Importante tener maestría con la terminal
Si vamos a usar alias debemos tener cuidado con no asignar un nombre de algún comando que ya exista
Comprueben lo siguiente:
joshy@DESKTOP-JOSHY:~$ cd ~
joshy@DESKTOP-JOSHY:~$ echo $HOME
/home/joshy
joshy@DESKTOP-JOSHY:~$ su root
Password:
root@DESKTOP-JOSHY:/home/joshy# echo $HOME
/root
root@DESKTOP-JOSHY:/home/joshy#
A esto se refiere con “entorno”. Cuando estamos con un usuario normal, $HOME apunta a ese usuario, pero, cuando cambiamos a modo root, $HOME ahora apunta al usuario root. Esto es debido a que root tiene otro archivo .bashrc con valores diferente a nuestro usuario.
La versión en ingles de las variables de entorno en la Wikipedia es mas completa que en español.
https://en.wikipedia.org/wiki/Environment_variable
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.