Rodolfo Pilas
bloger podcaster devops sysadmin profesor father
Una shell es un programa que permite interactuar con el sistema operativo mediante comandos.
Interfaz entre el usuario y el sistema operativo
echo $SHELL$PSVersionTable.PSeditionbash (Burne Again shell)
zsh (Z shell)
dash (Debian Almequist shell)
PowerShell
echo $SHELL$PSVersionTable.PSeditionEjemplo: en una shell escribo ls (abreviación de 'list')
Nota: La shell no hace el trabajo, le pide al sistema que lo haga
shell
sistema operativo (kernel)
shell
shell
hardware
shell
pwd
ls
mkdir test
cd test
touch archivo.txtpwd
ls
mkdir test
cd test
New-Item archivo.txtpwd
ls
mkdir test
cd test
touch archivo.txtpwd
ls
mkdir test
cd test
New-Item archivo.txtmanipulación de archivos
inspección
pwd
ls
mkdir test
cd test
touch archivo.txtpwd
ls
mkdir test
cd test
New-Item archivo.txtmanipulación de archivos
inspección
Comandos que procesan texto
Comandos que procesan objetos
lspwdtreecatless Get-Contenthead "tail "wc (Get-Content arch | Measure-Object).County sistema de archivos
cpmvrmmkdirtouch New-Itemy sistema de archivos
grep Search-Stringfind Grep-ChildItemPath absoluto: comienza en la raiz / C:\Path relativo: depende del directorio actual. (directorio actual).. (directorio padre)touch a.txt b.txt c.log img_01.png img_02.png img_10.png data1.txt data2.txt nota.mdNew-Item a.txt,b.txt,c.log,img_01.png,img_02.png,img_10.png,data1.txt,data2.txt,nota.mdls *.txt
ls *.png
ls data*
ls *.log
ls **
(cero o más)
ls img_0?.png
ls data?.txt
ls ?.txt?
(un caracter)
ls *.?xt
ls img_*[0-2].png
ls [a-c].*
combinaciones
ls [ab].txt
ls data[12].txt
ls img_0[12].png[abc]
(uno de lista)
Entrada estándar (STDIN): datos que el programa recibe | Teclado
Salida estándar (STDOUT): datos que el programa muestra | Pantalla
Error estándar (STDERR): mensajes de error del programa | Pantalla
cat <enter>
while ($true) { Read-Host } <enter>Ctrl-D para terminarCtrl-C para terminar¿dónde están STDIN y STDOUT?
> sobrescribe>> agrega< lecturamodifica las std*
cat > archivo.txt <enter>
while ($true) { Read-Host } > archivo.txt <enter>Ctrl-D para terminarCtrl-C para terminarcat archivo.txt
Get-Content archivo.txtcomando
stdout
stdin
comando
echo -e "uno\ndos\ntres" | wc -l"uno","dos","tres" | Measure-Objectps ax | head -1 # Ver columana STAT
ps ax | sort -nrk 3 | head # Si STAT es columna 3Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10listar el TOP-10 de procesos que más memoria consumen
Una forma de escribir un patrón de texto que permita buscar, filtrar, validar o transformar textos
No busca texto literal, busca texto que coincida con un patrón
Ejemplo:
animales que terminen con ata:
'ata$' <- regex
gata
rata
suricata
Se usan para:
Se usan en:
Ejercicios rápidos ->
'a''UCU'. ? * + ^ $ | [ ] { } ( ) \ a[*]' )| Metacaracter | Nombre | Función |
|---|---|---|
. | Punto | un carácter cualquiera |
[...] | Lista | lista de caracteres permitidos |
[^...] | Lista negada | lista de caracteres prohibidos |
representan a un (1) carácter
grep -e "e.endido" allwords.txt
defendido, da
pretendido, dagrep -e "[tr]endido" allwords.txt
desentendido, da
desprendido, da
distendido, da
entendido, da
espalditendido, da
incomprendido, da
malentendido
piernitendido, da
prendido, da
pretendido, da
rendido, da
rendidor, ra
sobrentendido, da
tendido, dagrep -e "[^tr]endido" allwords.txt
autoencendido
boquihendido, da
defendido, da
encendido, da
hendido, da
labihendido, da
ofendido, da
patihendido, da
trascendido, da| Metacaracter | Nombre | Función |
|---|---|---|
| ? | Opcional | cero o uno |
| * | Asterisco | cero, uno o más |
| + | Más | uno o más |
indican las repeticiones del caracter anterior
egrep "p.?ando" allwords.txt
adoptando, da
agapando
pandoegrep "d.*cia" allwords.txt
abundancia
abundancial
acodiciar
demencia
fiducia
menudencia
radioluminiscenciaegrep "f.+cion" allwords.txt
afaccionado, da
afeccionar
aficionado, da
antiinflacionista
confucionismo
defeccionar
falsacionismo
ficcional| Metacaracter | Nombre | Función |
|---|---|---|
^ | Circunflejo | Inicio de la línea |
$ | Pesos | Fin de la línea |
marcan la posición específica en la línea
grep -e "^a[aeiou]" allwords.txt
aeración
aero
aerobús
aeroclub
aerodinámico, ca
aerodinamismo
autovíagrep -e "[^aeiou]no$" allwords.txt
adorno
autogobierno
corno
cuaderno
durazno
extorno
fornoUna variable es un nombre que referencia un valor:
INSTITUCION="UCU"
echo $INSTITUCION
$institucion = "UCU"
Write-Output $institucion
asignación
uso
$$Son variables definidas en el entorno del sistema
Ejemplos típicos:
/usr/bin/ls
ls
echo $PATH$env:PATH
$env:PATH -split ";"
env
printenvGet-ChildItem Env:
Es un archivo de texto que contiene una secuencia de comandos:
Se usan para:
#!/bin/bash
PROCESOS=$(ps axu | grep $USER | wc -l)
echo "El usuario $USER está ejecutando $PROCESOS procesos"$procesos = (Get-Process).Count
Write-Output "El usuario $env:USERNAME está ejecutando $procesos procesos"
bash script # no importa la extensión (convención .sh ).\script.ps1 # IMPORTANTE la extensión .ps1
#!/bin/bash
echo "Script: $0"
echo "Primer argumento: $1"
echo "Cantidad de argumentos: $#"Write-Output "Script: $PSCommandPath"
Write-Output "Primer argumento: $($args[0])"
Write-Output "Cantidad de argumentos: $($args.Count)"Hay variables especiales para scripts:
chmod +x script
./scriptSet-ExecutionPolicy -Scope Process RemoteSigned
.\script.ps1Para ejecutarlos autónomos hay permisos:
ejecución del script
ejecución en el entorno local
Hay estructuras de control de flujo for, if, while, case, etc.
#!/bin/bash
for arg in "$@"; do
echo "Arg: $arg"
doneforeach ($arg in $args) {
Write-Output "Arg: $arg"
}Los sistemas operativos multiusuario controlan quién puede hacer qué sobre archivos y recursos
Permisos sobre archivos -> todo es un archivo
echo "hola" > demo.txt
chmod 000 demo.txt
ls -l demo.txt
cat demo.txt # falla
chmod 777 demo.txt
ls -l demo.txt
cat demo.txt # funciona
./demo.txt # falla
chmod 644 demo.txtr - lectura
w - escritura
x - ejecución
echo "hola" > demo.txt
# Ver permisos
Get-Acl demo.txt
# Quitar acceso (ejemplo conceptual)
icacls demo.txt /deny Everyone:(F)
# Dar acceso total
icacls demo.txt /grant Everyone:(F)Permisos descriptivos
Se asignan por ACL (Access Control List)
https://creativecommons.org/licenses/by/4.0/deed.es
By Rodolfo Pilas