0% encontró este documento útil (0 votos)
30 vistas16 páginas

SHELL

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 16

SHELL.

md 2/11/2023

Shell
Hola mundo

Systema Unix
Bash

Es un interprete de comandos que por defecto viene con diferentes distribuciones de linux, sin embargo no
es la unica cascara que existe.

funcionamiento de la shell

Redirecciones Contamos con 3 estandares

1. stdin (estandar) recibe el comando ingresado por teclado


2. stdout (estand salid) representado con un numero 1 teniendo como salida sin ningun error
3. stderr (estandar error) que nos representa un error y se identifica como un 3

NOTA : Estos numero de representacion se les conocen como file description

La shell interperta ambas salidas de forma distinta

como poderemos redireccionar una salida pues con el simbolo > (mayor que) de esta forma:

cat > text.txt

este simbolo funciona para escribir en nuestro archivo la salida de cat pero puede llegar a tener
complicaciones ya uqe sobreescribira el archivo en este caso.

SI lo que deseamos el concatenarle se usaran >> dos signos mayor que para agregar una salida a
nuestro archivo en este caso:

cat >> text.txt

NOTA: por defecto redirige el estandar stdout por defecto si queremos cambiarlo tendremos que Esto
ya dicho veremos que tipo de errores tendremos

cd holasdasd/ >> salida.txt 2>&1

2>&1 indica que queremos redirigir el estandar error a el estandar salida y nos mostrara en el
documento creado y modificado el error en este caso

Otras formas logicas


/
SHELL.md 2/11/2023

ls -l; touch hola.txt Esto nos permite ejecutar forma sincrona


ls & cat fichero & head fichero Para ejecutar de foram asyncrona

Comandos mas usados en linux estamos

cowsay nos dara como salida una vaquita y una comentario que le queramos poner

cowsay "hola soy un vaca"

man Nos permite ver el manual de cada comando o algunos programas que instalaremos

man ls

alias

Nos permite asignarle un alias a una instruccion y luego ejecutarla.

De esta forma listaremos los alias.

alias

Podremos crear nuestro alias de forma muy facil usando alias como comando y ya conociendo la
sintaxis solo es cambiar valores.

alias ms="cd ./nombre_carpeta"

Podremos hacer uso del alias escribiendo en nuestra terminal.

ms

podremos ver nuestra lista de alias o modficarlo en el documento .bashrc es un documento de


configuracion.

Podemos ver su contenido de la siguiente manera:

nvim ~/.bashrc

/
SHELL.md 2/11/2023

Recordemos que los alias son temporales si lo usamos en nuestra terminal de forma directa.

Ahora bien si deseamos que sea de forma permanente los lias debemos ingresar de esta forma a
nuestro archivo de configuraciones llamado .bashrc en la siguiente ruta.

nano ~/.bashrc

Buscaremos nuestras lineas de comando que empiecen con alias y simplemente tendremos que
crear nuestros alias:

...
alias temp='echo "hola mundo"'
...

Ejecutamos el script con source

source ~/.bashrc

unalias Elinara algun alias pasandole como argumento el alias creado.

unalias hm

awk

La sintaxis de awk es awk [condicion] { comandos }

Es un comando un poco confuso para los mas nuevos sin embargo muy util a la hora de filtrar
algunas columnas de algunn fichero o bien la salidad de un ls -l.

Para imprimir las celdas de un conjunto de columnas hacemos los siguiente:

ls -l | awk {print $4 ":" $8}

Los $numero indica la columna que quiero imprimir por pantalla.

El simbolo | es un tunel, lo veremos mas adelante

/
SHELL.md 2/11/2023

ls -l este comando lo veremos mas adelante pero en resumidas palabras nos lista un
directorio en el cual nos encontramos o seleccionamos. Otra forma de filtrar con awk seria de
la siguiente manera segun este planteamiento:

Si quiero filtrar por extencion podria usar `ls -lh *.txt` esto nos imprime todos los archivos
que terminen con extencion `.txt` adicional a ello nos brindaran diferentes columnas donde
se encontraran datos del fichero. Pero si queremos filtrar por algun dato del fichero en
particular que se encuentre en alguna columna podremos realizarlo de la siguiente forma.

ls -lh *.extencion | awk '{print $5}''

Si traducimos esto seria de esta forma:

lista los ficheros y directorios del directorio en el que me encuentro posicionado asegurate que cada
fichero tenga la extencion .txt por lo tanto descarta todo lo demas pasalo como parametro a awk y
este seleccionara la columna 5 de las filas pasadas como argumentos.

Es una herramienta muy util cuando tengamos una cantidad ingente de ficheros y queramos hacer
algo mas que listarlos o buiscarlos por otros medios como permisos fecha de creacion etc ...

Una lista de comandos por ejecutar:

$0 → Mostrar la línea completa

$1-$N → Mostrar los campos (columnas) de la línea especificados.

FS → Field Separator

NF → Número de campos en la línea actual

NR → Número de líneas en el stream/fichero a procesar.

OFS → Output Field Separator.

ORS → Output Record Separator.

RS → Input Record Separator.

BEGIN → Define sentencias a ejecutar antes de empezar el procesado.

END → Define sentencias a ejecutar tras acabar el procesado.

length → Longitud de la línea en proceso.

FILENAME → Nombre del fichero en procesamiento.

/
SHELL.md 2/11/2023

ARGC → Número de parámetros de entrada al programa.

ARGV → Valor de los parámetros pasados al programa.

awk soporta algunos operadores como: *, /, %, +, -, =, ++, --, +=, -=, *=, /=, %=.

Contamos una increible flexibilidad logica si queremos crear algo mas impresionante.

basename

Realmente solo sirve para extraer el nombre de la ultima ruta con su respectiva extencion.

basename /usr/loquesea/texmporal,txt

como salida tendremos texmporal.txt

cal

Si deseamos visualizar las fechas a travez de nuestra terminal de forma sencilla cal es la solucion:

cal

esto muestra por terminal el mes con sus respectivos dias aunque podemos usar algunas opciones
como:

cal 03 2000

Nos el primer argumento indica el mes y el segundo el ano.

cat Extrae el formato o contenido de un documento representando lineas vaciaso lineas enumeradas
segun las opciones que usemos. En palabras mas simples nos deja tener una visualizar.

cat nombre.txt

cd cd (command directory) nos permite navegar entre directorios.

/
SHELL.md 2/11/2023

Ingresamos en el directorio seleccionado o la ruta completa

cd /hola/mundo/

salimos del directorio donde nos encontramos

cd ../

chgrp Cambia el grupo de un directorio de forma recursiva y segura

chgrp -c -R nombre_grupo directorio

Se tiene que tener presente que grupo es para que no existan problemas de seguridad.

chmod

chmod nos permite modificar los permisos de lectura, escritura y ejecucion de algun archivo o
directorio.

sudo chmod 777 hola.sh

Se tiene que tener en cuenta que tenemos que por posicion 1 indica Permisos del Usuario, posicion 2
indica Permisos del Grupo, posicion 3 indica Permisos de Otros.

Segun la numerologia a si mismo su valor

1. read 4
2. write 2
3. execute 1

Se repite para cada posicion se suman y dan como resultado la cantida de permisos qeu tienen en
cada grupo y adicional a ello que tipo de permiso.

chown Cambia la propiedad a otro usuario o bien otro gurpo o ambas de esta forma:

sudo chown usuario fichero.txt

/
SHELL.md 2/11/2023

sudo chown usuario:grupo fichero.txt

cp Copiamos y pegamos en diferentes directorios como por ejemplo:

cp /directorio/archivo.txt /directorio/archivo_copia.txt

Podemos tambien hacelro de forma requirsiva con -R

curl sintaxis: curl \[options\] \[URL...\]

Es una util herramiento que veremos constantemente para enviar o recibir datos con cualquier
protocolo.

En este caso me extrae toda la pagina como si de web scraping se tratara

curl https://example.com

Tambien podremos indicarle si queremos mostrar la barra que muestra medicion de pogreso en
ejecucion y los caracteres que lo determinara y se dibujaran uno a uno mostrando a si el progreso:

curl -# -O https://example.com

Podemos realizar peticions get que nos retornara un formato JSON el cual podemos modificar.

curl https://jsonplaceholder.typicode.com/todos/1

Podremos enviar correos electronicos si deseamos con curl tendremos que tener configurado
nuestra cuenta de Google segun esta documentacion.

sudo curl --url 'smtps://smtp.gmail.com:465' --user


'my_correo:password' --mail-from 'my_email' --mail-rcpt 'you_email' --
upload-file text.txt

Otras caracteristicas

/
SHELL.md 2/11/2023

Podremos obtener los encabezados de nuestra peticion get con la opcion -v o para resumir la
informacion entregada con la opcion -i

Podemos almacenar la peticion en un documento, por defecto nos brinda la opcion -o

curl -o text.json link

Podremos extraer el nombre por defecto de la ultima ruta para guardar el archivo con ese
nombre la opcion es -O.

Podemos descargar imagenes y pdf o lo que deseemos:

curl -O ruta_online_de_la_imagen

Si deseamos realizar una peticion POST osea enviando datos y obtener una respuesta a partir
de este POST enviado:

curl --data "title=hello world&body=esto contiene algo de esta forma"


https://jsonplaceholder.typicode.com/todos

Si queremos hacer peticiones PUT:

curl -X PUT --data "title=hello world&body=esto contiene algo de esta


forma" https://jsonplaceholder.typicode.com/todos/1

Se puede borrar tambien de esta forma:

curl -X DELETE https://jsonplaceholder.typicode.com/todos/1

cut Es una herramienta de corte muy util para eliminar columnas, recuerda que uan columna es un
conjunto de datos con un separador representando dicha columna y filas.

Estamos obsecionados con las columnas por lo tanto en este caso podremos seleciconar las
columnas uqe necesitaremos una documento con las fechas del mes y adicionalmente filtraremos
cada una de sus columnas de la siguiente forma

cut -c numeroinicial numerofinal ejemplo.xt

/
SHELL.md 2/11/2023

Esto no se limita a documentos tambien es una forma simplificada de awk a la hora de capatar datos
y quiza guardarlos en un fichero como muestra la siguiente intruccion en donde listamos los
ficherosy directorios sin emabrgo solo requerimos guaradas sus permisos en un documento de esta
forma:

ls -l | cut -c -10 >> permisos_de_este_directorio.txt

date Este comando es bastante interesante ya que si bien solo mostrara fechas tambien tiene varias
opciones muy interesantes como:

Solo mostrar la fecha actual

date

Para convertir un formato de fecha a algo mas legible:

date --set="20100513 05:30"

Si deseamos formatear cadenas de caracteres con caracteres especiales de escape para


cadenas en este caso usare %V y %y:

date +"numero de semanas: %V anos: %y"

Queres ver el pasado? podemos hacerlo:

date --date="yesterday"
date --date="10 sec ago"
date --date="next monday"
date --date="4 day"
date --date="tomorrow"

Tambien podremos espiar un poco cuando se creo un archivo:

date --file=file_name.txt

Por supuesto si se puede con ficheros tambien con directorios de forma recursiva

/
SHELL.md 2/11/2023

date -r /etc/hosts

df Si deseamos saber queesta haciendo nuestro disco duro podemos usar df, espiemos este
comando un poco mas:

La opción más usada es la -h ya que nos muestra el espacio en unidades más fácil de interpretar, MB,
GB, etc..

df -h

du Si deseamos calcular el peso de nuestro directorio o directorio seleccionado completo podemos


realizarlo con du y la opcion -sh

du -sh

Contamos con mas opciones segun nuestra necesidad, podemos jugar con las opciones que nos
ofrece para mostrar lista de ficheros y sus pesos respectivamente en diferentes unidades.

diff Si queremos conocer las diferencias de dos directorios diff es la respuesta, pues nos permite
conocer mas en detalle estas diferencias que para un aser humano o creando una programa nos
tardariamos demaciado tiempo analizar.

r Nos indica uqe compare de forma recursiva los directorios q Nos indica las diferencias que salen en
un directorio y no en el otro

diff -r -q 'directorio1' 'directorio2'

dig Avanzado

tree Nos permite revisar el arbol de directorios

/
SHELL.md 2/11/2023

tree rutadeldirectorio

dirname De momento lo usare cuando l ovea conveniente

echo Nos permite imprimir por pantalla valores

echo "hola mundo"

expand Lo unico que realiza esto es darle tabulacion o contrario quitar tabulizacion de una cadena
de caracteres.

expand -t 1 NOMBRE_ARCHIVO

less Muestra mas informacion de tal forma que nos ofrece herramienta integradas esto como salida
puede beneficiar en la busqueda e algun caractere en algun documento.

less documento.txt

la salida puede cambiar y de igual forma se podra usar los filtros como en este caso

ls -l | less

Un pipe line nos permite redirigir la salida de un comnaod haciendolo pasar por otro comando de
shell para por modificarlo segun la salida del segundo comando como muestra este ejemplo:

pwd | xclip -sel c

/
SHELL.md 2/11/2023

file nos ayuda a determinar el tipo de archivo en texto plano o algun sistema diferente a el comun
por ejemplo texto ASCII ou otro como tipo MIME

ASCII es un codigo estandar para el intercambio de informacion, es un estandar de codificacion de


caracteres para la comunicacion digital en pocas palabras ASCII representa todos los caracteres
posibles de nuestros computadores.

MIME son una serie de convenciones o especificaciones dirigidas al intercambio a traves de internet
de todo tipo de archivo text, auto, etc ...

file nombre_arichivo.extension

o bien si queremos

operadores aritmeticos Contamos con una gran cantidad de operadores aritmeticos en bash en
este caso usaremos los mas usados.

wildcards

Son combinaciones de caracteres que nos sirven a nosotros como un medio de filtracion mas
eficiente, tenemos que saber que una wildcard no son expresiones regulares aunque tengan
simiulitudes.

Este comando con el wildcard nos permite filtrar teniendo en cuenta solamente las mayusculas

ls [[:upper:]]

Este comando con el wildcard nos permite filtrar teniendo en cuenta solamente las minusculas

ls [[:lower:]]

Este comando con el wildcard nos permite filtrar teniendo en cuenta solamente las minusculas

ls [[:upper:]]

El comportamiento de * nos indica como podemos filtrar por parte de las busques ejemplo

ls *.txt

/
SHELL.md 2/11/2023

nos indica que busque todos los documentos que terminen con la extencion .txt no se limita a
esto podremos jugar de diferentes formas a si que vamos a probarlo en el siguiente ejemplo:

ls *hola*

el anterior ejemplo indica que no importa que fichero sea siempre y cuando tenga la palabra
hola lo filtra

Si deseamos que comience con alguna letra o una lista de letras podemos realizarlos con el
wildcard:

ls [aA]*

Si Deseamos quiza negar una declaracion podemos usar el signo de exclamacion ! para negar
en este caos quiro que me liste todos los ficherosuqe NO empeicen por un dijito y el resto de
contenido no importa:

ls [![:digit:]]*

Si solo sabesalgunasletras de la palabra podemos filtralos de esta forma:

?hola?????

Estaremos indicandole que de un rango existente de n a z filtrame todo que al principio


cumpla estoso requisitos adicional a ello con dos caracter faltantes:

[n-z]??

ln Contamos tambien con los links simbolicos como por ejemplo, esto es un acceso directo como los
oacceso director de windows

ln -s fichero directorio simbolo

*printenv Este comando nos ayuda a nosotros a conocer cuales son las variables globales:

printenv

/
SHELL.md 2/11/2023

history Nos permite visuaklizar una lista de comandos que hemos usado anteriormente

history

y podemos usar un comando de la siguiente forma

!numero

head Nos permite visualiza un encabezado qeu como salida sea texto

head file.txt

ls Nos permite listar el contenido de algun directorio

ls -la

mv Podremos usarlo para dos casos

1. Cambiar el nombre de algun fichero o directorio

mv hola.txt cambiado.txt

2. Podemos mover el directorio a una ruta diferente

mv ./hola.txt ../

ping Nos ayuda a conocer algunos detalles de envio y captacion de paquetes en la red

ping google.com

/
SHELL.md 2/11/2023

which Nos busca en todas las rutas genericas que encontramos enlas variables globales por ejemplo:

which OBS

grep Muy util para enocntrar patrones en salidas de texto

find ./ --wholename *code* | grep "vscode"

touch Creamos archivos con touch con cualqueir tipo de extension o sin extension

touch nombreficheroinventado.txt

type QUE ES UN COMANDO EN LA TERMINAL?, BIEN PUES PUEDE SER

UN PROGRAMA EJECUTABLE
PUEDE SER UNA FUNCION DE LA UTILIDAD DE LA SHELL
O PUEDE SER COMANDO S DE UTILIDAD DE SHELL

SI DESEAMOS SABER QUE TIPO ES CUALQUEIR COMANDO TENDREMOS EL COMANDO TYPE DE ESTA
FORMA

type ls

mkdir Podremos Crear nuestros directorio cuantos queramos

mkdir nombrenuevodirectorio

reboot Reiniciamos nuestro computador

reboot

/
SHELL.md 2/11/2023

source Podremos ejecutar algun binario por ejemplo la virtualizacion de python con virtualenv

source env/bin/activate

rm Podremos borrar lo qeu queramos pero etngamos mucho cuidado a la hora de usarlo

rm -rf borra_todo.XD

También podría gustarte