inf-113 texto en borrador

17
Gnu/Linux Shell, Html, Css y JavaScript Sin dejar de mencionar los sistemas operativos para móviles: Android, Windows Phone, … Hay varios sistemas operativos: Google chrome OS, Windows, Mac Os X, Unix, GNU/Linux… free like (minix) GNU/Linux (Beastie) (Ñu) (Tux) Y aún dentro de Linux hay varias distribuciones: Todos ellos tienen ventajas y desventajas, críticos y defensores (por ej. Richard Stallman ha afirmado que Ubuntu es spyware, de FreeBSD se destaca su estabilidad y de GNU/Linux su soporte de hardwrae). Richard Stallman (USA), creador del Proyecto GNU (un S.O. libre) y fundador del movimiento

Upload: juan-perez-peres

Post on 02-Jan-2016

30 views

Category:

Documents


0 download

TRANSCRIPT

Gnu/Linux Shell, Html, Css y JavaScript

Sin dejar de mencionar los sistemas operativos para móviles: Android, Windows Phone, …

Hay varios sistemas operativos: Google chrome OS, Windows, Mac Os X, Unix, GNU/Linux…

free like (minix) GNU/Linux

(Beastie) (Ñu) (Tux)

Y aún dentro de Linux hay varias distribuciones:

Todos ellos tienen ventajas y desventajas, críticos y defensores (por ej. Richard Stallman ha afirmado que Ubuntu es spyware, de FreeBSD se destaca su estabilidad y de GNU/Linux su soporte de hardwrae).

Richard Stallman (USA), creador del Proyecto GNU

(un S.O. libre) y fundador del movimiento

por el software libre (editor Emacs, compilador gcc).

Linus Torvald (Finlandia), creador del kernel

Linux.

Imagine programar, controlar, planificar y ejecutar la interacción directa con el hardware, repartiendo el tiempo de procesador entre ellos, grabar en los discos manipulando los cabezales, paginar la memoria, gestionar la jerarquía del sistema de archivos…

El kernel (el S.O.) hace ello.

Este es el famso e-mail de Linus Torvald al grupo comp.os.minix:

Hola a todos aquellos que usan Minix -

Estoy haciendo un sistema operativo (gratuito) (solamente una afición, no será

grande ni profesional como el GNU) para clones 386(486) AT.

Este ha estado gestándose desde abril, y está comenzando a estar listo.

Me gustaría recibir cualquier comentario sobre las cosas que gustan/disgustan

en minix, ya que mi SO (Sistema Operativo) se le parece un poco (la misma

disposición física del sistema de archivos, debido a motivos prácticos, entre

otras cosas).

Actualmente he portado bash(1.08) y gcc(1.40), y las cosas parecen funcionar.

Esto implica que conseguiré algo práctico dentro de unos meses, y me gustaría

saber qué características quiere la mayoría de la gente. Cualquier

sugerenciaes bienvenida, pero no prometeré que las pondré en práctica

PD. Sí – es libre de cualquier código de minix, y tiene un sistema de archivos

multi-hilo. NO es portable (usa conmutación de tareas 386 etc.), y

probablemente nunca será soportada por nada más que los discos duros AT,

porque es todo lo que tengo .

Linus Benedict Torvalds ([email protected])

La/el Shell es una interfaz entre el usuario y el S.O.

UNIX fue uno de los primeros S.O. en hacer la interfaz de usuario independiente del S.O.

Interpreta las órdenes de usuario y las envía al kernel para su ejecución.

La primel shell Unix (sh) fue escrita por Ken Thompson en 1971. En 1978 Stephen Bourne escribió el shell Bourne. Y en 1989 Brian Fox escribió el shell bash.

(ver /etc/shells)

Algunas órdenes (comandos) del shell bash:

Para averiguar órdenes (qué hace, dónde está el archivo, …)

Ejemplo

man comando Ayuda del comando especificado man ls, man –k printer

whatis algo Busca información sobre “algo” whatis remove

apropos algo Idem Idem

whereis nomorden Localiza archivos relacionados a nomorden whereis grep

Para ver archivos

cat arch1 […archN] (Concatena y) muestra archivos cat /etc/passwd, cat > nomarch

more arch1 […

archN]Muestra archivos una pantalla a la vez

more arch1 arch2, more arch*

:p :n barraespaciadora

less arch1 […archN]

Muestra archivos permitiendo ir hacia

arriba o hacia abajo (por ej. con las

flechas)

less arch1 arch2, less arch*

:p :n

tail arch1 […archN] Muestra archivos (su última parte) tail arch1 arch2, tail arch*

head arch1 […archN] Muestra archivos (su primera parte) head arch1 arch2, head arch*

Para moverse a través de los directorios (dirección absoluta/relativa)

cd dir Cambia de directorio cd /var/log, cd ..

Para trabajar con directorios y archivos

mkdir nomdir Crea un directorio mkdir scripts

touch nomarch

Cambia la fecha de un archivo

se puede usar para crear el archivo

touch archivo2

rmdir nomdir Borra un directorio vacío rmdir prog_dir

rm nomarch

Borra un archivo

Con la opción –r borra un directorio y todo su

contenido

rm archivo1.txt,

rm –r directorio2

mv arch1 ...archN dir Mueve el(los) archivo(s) a un directorio mv carta1 ../cartas

mv arch1 arch2 Renombra un archivo mv carta1 carta.bk

cp arch1...archN nomdir Copia archivos cp arch1 copiadea1

ls [nomdir] Lista el contenido del directorio ls -la /usr/bin, ls -d

pwd Muestra la ruta del directorio actual Pwd

chmod permisos arch Cambia los permisos de un archivochmod u+x

script1.sh

chown usuario:grupo arch Cambia el dueño un archivo chown nobody script

Acerca de usuarios

finger usuario Muestra información sobre un usuario en la red finger user113

id Número id de un usuario id user113, id

passwd Cambia la contraseña passwd

who Muestra los usuarios conectados al sistema who

w Muestra los usuarios conectados y qué hacen w

Para comparar, determinar propiedades y buscar archivos

du arch-o-dir Estima el espacio utilizado du –h arch1, du -hs .

diff [-e]arch1 arch2 Encuentra diferencias entre archivos diff arch1.c arch2.c

file arch Muestra el tipo de un archivo file –i archivo1

which progbin Busca binarios en el PATH del usuario which who

locate Busca archivos (vía BD) locate arch*

find Busca archivos find . -name ‘*.sh’ –print0

grep expr archivos Busca patrones en archivos grep –v 113 /etc/passwd

Para trabajar con/ver procesos

ps Muestra los procesos que se están ejecutando ps -A, ps –ef

kill [-señal] PID Matar un proceso (terminarlo) kill 1234

Comando varios

ln [-s] arch acceso Crea un acceso directo a un archivoln -s

/users/mike/.profile .

at Ejecuta un comando más tarde at 6pm Friday script1

cal mes año Muestra un calendario del mes/año cal 3 2013

date Muestra la hora y la fecha date

echo string Escribe mensaje en la salida estándar echo “Mensaje”

hostname Muestra información sobre el host hostname

uname Muestra información sobre el sistema uname -a

uptime Tiempo de encendido del sistema uptime

write user Envía un mensaje a otro usuario write aizen ^D

mesg Controla el acceso de mensajes mesg n

seq Imprime una secuencia de números seq 2 9, seq –sw; 13

Y aún otros comandos

sort Ordena la entrada en stdout sort arch1

cut Corta ciertas columnas de un archivo cut –d: -f1,5 /etc/passwd

pasteGraba las columnas de los archivos

uno al lado del otro

paste –d: arch1 arch2

Combinar órdenes en una única orden lógica: Metacaracteres sintácticos:

Secuenciación: ; Combinación (subshell): ()

Pipe, cauce o tubería:| Segundo plano o background: &

Or,And: listaord1 || listaord2 listaord1 && listaord2

-or:2 si 1 falla -and:2 si 1exitosa ||,&& solo la ultimaorden

Ejemplos:

cat /etc/passwd | grep 113 | sort

date; who | wc vs $ (date; who)|wc

Expansion

find . -name arch* no es lo mismo que find . -name ‘arch*‘

pues find . -name archivo1 archivo2 no es un comando correcto (archivo2 !?)

Algunas cosas “dignas” de mencionar

env o set (variables de ambiente)

Pag. 213 de Unix a base de ejemplos.PDF (netstat)

bash –x script1 (debug)

source script1 (“exporta variables”)

compress uncompress

tee p.37 apuntesBASH.pdf

jobs

pinky = finger

tar

egrep

sed

awk

editores

Cuándo utilizar el shell: ...muchos archivos ...tarea repetitiva

Scripts.sh (variables de usuario, variables especiales y sentencias de control)

La variable $?

which who

who -s who

echo $? Despliega 0 porque el último comando se ejecutó bien

who -s ju_noexiste

echo $? Despliega 1 porque el último comando falló

La variable $# y el if

cat script_if_y_numparam.sh#!/bin/bashif [ "$#" -ne 1 ]then echo "Debe incluir un parametro" exit 1fi

echo “ingreso un solo parametro, correcto!”

exit 0

Se puede hacer en el prompt (fíjese que el return se substituye por ;):

if grep inf113 /etc/passwd; then echo “estoy”; fi

if grep infff113 /etc/passwd; then echo “estoy”; else echo “no esta”; fi

cat script_casemenu.sh#!/bin/bashclearecho "Elija por favor"echo -e "1)Fecha de hoy 2)Usuarios conectados 3)Directorio actual: \c"

read ncase $n in 1) date;; 2) who|more;; 3) pwd;; *) echo "Opcion inexistente... Hasta luego";;esacechoexit 0

cat script_whilemenu.sh#!/bin/bashwhile true; do clear echo "Elija por favor" echo -e "1)Fecha de hoy 2)Usuarios conectados 3)Directorio actual: \c"

read n case $n in 1) date;; 2) who|more;; 3) pwd;; *) echo "Opcion inexistente... Hasta luego"; break;; esac echo echo "Digite enter o return " read ndone

cat script_ls_porvocales.sh#!/bin/bashvocales=aeiou

echo $vocalesechofor i in $(seq 0 4)do ls `echo ${vocales:$i:1}*` echo "que empiezan con ${vocales:$i:1}" echo doneexit 0

C:\Documents and Settings\Flia\Configuración local\Datos de programa\Google\Chrome\User Data\Default\User StyleSheets\Custom.css

chrome...UserContent.css

--------------------

utilizar el shell cuando: ...muchos archivos...tarea repetitiva

cd dir. absoluta/relativa

man x haceless so: buscar z: /z

Patrones (metacaracteres de sustitución): ? * [!a-z]*.sh ~ a{b,c,d}1.txt ("se expanden en...")

magic number: file * file -i *

combinar órdenes en unica orden lógica: metacaracteres sintácticos:

; | () & -background- ord1 || ord2 ord1 && ord2 -or:2 si 1 falla, and:2 si 1ex1tosa, ||.&&solo la ultimaorden-

$ date; who | wc vs $ (date; who)|wc

permisos en octal: que significan ?

Redirección de entrada, salida (y stderr) estándar:

Algunas órdenes requieren un nomarchivo -si no lo tienen- leen de la entrada estándar (teclado): Ej. cat

Otras usan sólo la entrada estándar: Ej. mail user113

De otras su salida estándar es la pantalla.Ej.: who cat arch1

Cuando algo sale mal (o se añadendatos extras) algunas órdenes indican esto en la stderr (pantalla).

Pero eso se puede cambiar!

stdin <: mail user113 < arch1

cut -d: -f1 < /etc/passwd | sort

stdout >: who > arch2 cat arch1.txt > /dev/null time ls > /dev/null

> arch2 (si existe zerea arch2 pero respeta sus permisos)

>>: ls >> archqueseamplia

stderr 2>: ls estearchnoexiste 2> arch3

2>>: ls estearchnoexiste 2> archqueseamplia

stdout y stderr >&: cat datos.txt >& arch4

>>&

|&: combina stderr y stdout ls equis |& sort > arch1

Combinaciones complejas: orden < envezdestdin > envezdestdout 2> archerrores

cat < archacopiar > archcopiado 2> archerrores

cat < /dev/null > arch2

sort < sinorden.txt > ordenado.txt

( orden > archsalida ) >& archerrores

redireccion conEOD <<: cat <<FinMsg (puede usarse en scripts)

p.43 de UNIX-a-Base-de-Ejemplos.pdf

compresion: gzip arch1 arch1.gz

history $HISTFILE

Metacaracteres de citación:

\ evita leer el sgte metacaracter

" evita leer cadena de metacaracteres (excepto !eventhistory, $var, `cmd` que se sustituyenporsusvalores

' evita considerar ordenes

´ se interpreta como orden (substitucion de ordenes)

arreglos:

matriz=(uno dos tres)

echo $matriz $matriz[2] ${matriz[2]}

variables con tipo (declare):

declare -i var1=5; declare -i var2=4; declare -i resul=$var1*$var2; echo $resul

Expresiones aritméticas: expansión y let y expr y bc:

echo "$(( 365 - $(date +%j) )) hast fin de año"

$((var+=2)) añade dos a la var $[3+4]

vale usar: <, >, <= ,>= ,== ,!= !, &&, ||

let a=4 *3; let x=" (9*5) / 7 "

expr (es un evaluador de expresiones no solo aritméticas)

bc (es una calculadora básica)

z=`expr $z + 3

echo "3 + 4"|bc

sentenciasOinstrucciones: if test while until for(incluir select)

mejor adduser que useradd pues es un comando de bajo nivel

ls/home

chown, chgrp sobre archivos

p.80 4.3:

---------

ps -la kill

usar top, vmstat, free, uptime, w

cat /proc/cpuinfo # informació n sobre el procesador

cat /proc/devices # sobre los dispositivos

cat /proc/interrupts

cat /proc/ioports # puertos de entrada/salida de dispositivos

alias

.doc + personalizar prompt

como se excribe la primeralinea de scripts whereis bash(!)

sin permisos a script1.sh hacer: source script1.sh bash script1.sh

variables $var es una simplificacion de ${var} que es p/strings una simplificacion de ${var:OFFSET:LENGTH} y quizas de ${var%er} ${var%%er} ${var#er} ${var##er}

MYVAR=foodforthought.jpg

echo ${MYVAR##*fo} ${MYVAR#*fo}

MYFOO="chickensoup.tar.gz"

echo ${MYFOO%%.*} ${MYFOO%.*}

Expansion indirecta: let ar=2; eval echo ${!ar} (agarra $2 -el segundo parametro enviado-)

Con ! se usa el VALOR de lo que sigue COMO NOMBRE DE VARIABLE que luego se expande con { }

echo ${!P*} (agarra PATH, PS1 etc) noeslomismoque echo $P*

paso de argumentos

variables de entorno: $# $* $@ $0 $1 $2 ... $9 ${10}

IFS=":"