Intro comandos unix

Post on 12-Apr-2017

379 views 0 download

Transcript of Intro comandos unix

Introducción a UNIX

Sistemas Operativos 2015

Unix Programming Environment

Objectivos: Conocer las características básicas de Unix y la filosofía de Unix

Comandos básicos

Sistema de archivos

Shell

Filtros (wc, grep, sort, awk)

Redirección de archivos, Tuberías

Estructura de un Sistema UNIX

Applications

Shell

\Kernel (OS)

Hardware

Aplicaciones estandar:

• Comandos de Sistema de archivos

• editores de textos

• compiladores

• procesadores de texto

Unix y los Usuarios

La mayoría de versiones de Unix proven el mismo conjunto de aplicaciones (comandos y shells).

A pesar de que sus interfaces de usuario no son parte directa del SO, están estandarizados lo suficientemente para que baste con aprender una versión.

Versiones de Unix

SysV (AT&T)

BSD (Berkeley)

Solaris (Sun)

IRIX (SGI)

AIX (IBM)

LINUX (free software)

Logearse

Modos:

Desde la consola

Acceso remoto mediante SSH, telnet.

Los nombres y comandos son sensitivas a mayúsculas o minúsculas!

Username

(tipicamente) una secuencia de caracteres alfanuméricos de longitud no mayor a 8.

Identificacion primaria de la cuenta.

(usualmente) usada como direccion de correo

El nombre del directorio home está relacionado con el nombre de usuario.

Creación de un usuario

adduser hernan

Password

Cadena secreta que nadie debe conocer (ni el sistema!)

Al pulsar la clave, el Sistema la encripta y la compara con lo almacenado.

Debería tener al menos 6 caracteres

Es una Buena idea mezclar mayúsculas y minúsculas, números y caracteres especiales (asccii estandar)

Cambio de clave de un usuario

passwd hernan

Directorio home

Directorio personal del usuario,

/home/hernan

/home/prueba

A veces está montado en un file system separado del SO

Directorio home

Directorio actual al logearse

cd lleva a home

Localizacion de varios archivos de inicio y configuración. :

.vimrc .bashrc .bash_profile .forward .plan .mozilla/ .elm/ .logout

Archivos y nombre de archivos

Un archivo es la unidad básica de almacenamiento.

Son sensibles a mayúsculas! (case sensitive)

De hecho, todo es case sensitive!

Los archivos en Unix pueden contener cualquier character, excepto el character null y slash (/).

Los nombres de archivos pueden ser largos!

Cuan largo depende de la version

Archivos y nombre de archivos

Cada archivo en el mismo directorio debe tener un nombre único.

Los archivos que inician con un '.' son ucultos

Directorios

Un directorio es un clase especial de archivo - Unix usa los directories para almacenar informacion acerca de los archivos.

Unix Filesystem

El Sistema de archivos

Es un Sistema de organización jerárquicade archivos y directorios.

El nivel superior de la jerarquía se llama la “raiz” (root) y and guarda todos los archivos y directorios del Sistema de archivos.

El nombre del directorio root es /

Filesystem

/

bin etc home/ tmp usr

hollid2 scully bin etc

netprog unix X ls who

Rutas (Pathnames)

La ruta de un archivo incluye el nombre del archivo y el nombre de la carpeta que lo contiene, y el nombre de la carpeta que la contiene … hasta llegar a la raiz

Ej.

/home/hernan/trabajos/tarea1

Comando para ver directorio actual

pwd

Ejemplos de rutas

/

bin/ etc/ home/ tmp/ usr/

Hollid2/ scully/ bin/ local/

netprog unix/ X ls who

/usr/bin/lsSyllabus

/home/hollid2/unix/Syllabus

Crear usuarios y su estructura con su nombre en vez de Hollid2

Rutas Absolutas

Las que se especifican desde la raiz.

/home/hernan

Absolutas especiales :

~hernan/ /home/hernan (solo para el

directorio home del usuario)

~ es el directorio home de $USER

Para ver el contenido de las variables de entorno

echo $USER

Rutas relativas

Prefijadas con el directorio actual ( $PWD )Relativas a la carpeta de trabajo actual$ cd /home/hernan

$ pwd

/home/hernan

$ ls unix/Sillabus

unix/Sillabus

$ ls X

ls: X: No such file or directory

$ ls /home/scully/X

/home/scully/X

Rutas relativas especiales

. – Directorio actual

.. – Directorio padre

$ pwd

/home/hernan

$ ls ./netprog

./netprog

$ ls ../scully

X

24/10/2015

Disco vs. Sistema de archivosLa jerarquía completa puede incluir varios discos físicos.

Algunas carpetas pueden estar en otras computadoras

/

bin etc users tmp usr

hollid2 scully

Comandos – Sintaxis Básica

El Shell considera el primer elemento como un comando. Los siguientes elementos son argumentos

Los Argumentos que inician con un – son llamadosopciones

Sintaxis de comandos:command [option1] [option2] . . . [optionN]grep "Hernan" /etc/passwd

ls -o /home/hernan /home/prueba/Public

– -o lista larga

– Los 2 parámetros son directorios

Comandos de archivos y carpetas

ls – lista el contenido de un directorio

-a – all files

-l – long listing

pwd – print working directory

cd – change directory

Sin argumentos, lleva a home

Páginas de ayuda

Información detallada de comandos:man ls

man cat

man man

– Se puede buscar por palabras clave:

man -k buscado

Opciones de línea de commandos

Se puede modificar el formato de salida de lsmediante opciones.

-l long format (fechas, propietario y permisos). Comparable a -o

-a all (muestra también los archivos ocultos*)

-F incluye un caracter especial para indicar el tipo de archivo.

-C lista en columnas

*los archivos ocultos inician con "."

Ver archivos

cat – concatena, envía a la salida

estándar (stdout). Muestra el contenido de un archivo

less, more – utilidades de paginación

od – octal dump. Para ver el contenido

en octal, hex, control chars, etc.

Copiar, borrar, enlazar

rm – borrar

rm ~/tmp/download

mv – mover (renombrar) un archivo

mv ant.arch ../otroDir/nuevo.arch

cp – copiar

cp dirOrigen/arch dirDest/arch

ln – crea un enlace duro (inode) o suave (symbolic) a un archivo

Comandos para directorios

mkdir crear directorio (make

directory)

rmdir borrar un directorio (remove

directory)

Los directorios pueden moverse o renombrarse (mv), y copiarse (cp –r)

Comandos…

filtrar datosgrep "Hernan" /etc/passwd

• Versión de Linuxuname -srv

• Leer un archivomore /etc/passwdcat /etc/passwd

Comandos…

Procesos en ejecución

ps ax o ps –e• Concatenar comandos• cd; ls -l; pwd

• Combinación de comandos Shell: uso de tubería (pipe)• ls /dev | grep sda

Redireccionamiento28/10/2015

Redireccionamiento

• Entrada de un comando desde un archivo: ordenar• sort < /etc/passwd

• Guardando el resultado en un archivo• grep uucd /etc/passwd > usuario• sort /etc/passwd > ~/ordenado.text

• Entrada y salida desde y hacia un archivo• sort < /etc/passwd > ordenado

Redireccionamiento

Agregando datos a un archivo

• echo hola >> usuario• Leyendo datos a un archivo hasta cierta condición

• cat <<zz > input.txt

• Encontrar / Buscar• find / -name COPYING -print

• Enviar el error a un archivo• find / -name COPYING -print 2> finderr

• Desechar el error• find / -name COPYING -print 2> /dev/null

Comandos…

Atajo con TABcat /etc/mod{TAB}

• Conteo de líneas palabras y caracteres• wc /etc/passwd• wc –l /etc/passwd• cat /etc/passwd | wc

• ej. Cuantos procesos están activos en memoria?

Atributos de los archivos

Cada archivo tiene algunos atributos:

Fechas de acceso:

Creacion del archivo

Último cambio

Última lectura

Tamaño

Propietarios (usuario y grupo)

Permisos

Tipo – directorio, enlace, norlam, etc.

ACLs – lista de control de acceso

Atributos de los archivos

Atributos de fecha:

Cuando fue cambiado ls -l

Ordenar por fecha de modificación ls -lt

Propietarios

Cada archivo es propiedad de un usuario.

Se puede ver con ls y la opción -l o -o:

ls -l

total 24

drwxr-xr-x 7 jjohnson users 80 Jan 3 2015 cs265/

-rw------- 1 jjohnson users 8258 Jan 3 2015 cs265.html

-rw-r--r-- 1 jjohnson users 8261 Jan 3 2015 cs265.html~

ls -l

$ ls -l foo

-rw-rw---- 1 hollingd grads 13 Jan 10 23:05 foo

permisospropiet grupo

tam

fecha

nombre

Permisos

Cada archivo tiene permisos específicos

Hay tres tipos de permisos: read r

write w

execute x

Hay 3 conjuntos de permisos:

1. Usuario / propietario

2. grupo

3. otros (los demás)

ls -l y los permisos

-rwxrwxrwxUser Group Others

Tipo de archivo:

- – archivo normal

d – directorio

s – enlace simbólico

(otros)

rwx

archivos:

r – permitido leer.

w - permitido escribir / editar

x - permitido ejecutar

Directorios:

r - permitido ver el contenido (nombres)

w - permitido agregar o eliminar archivos.

x - permitido a “ingresar” al directorio

Cambio de permisos

El commando chmod cambia permisos

de archivos y directorios.

forma:

chmod modo archivo

chmod – modos numericos

Permisos para cada conjunto de usuarios (user, group, other) como núm de 3-bit

r – 4

w – 2

x – 1

El modo es un número octal de 3 dígitos #

755 – rwxr-xr-x

644 – rw-r—r--

700 – rwx------

chmod - ejemplos$ chmod 700 CS571

$ ls –o Personal

drwx------ 10 kschmidt 4096 Dec 19 2004 CS571/

$ chmod 755 public_html

$ chmod 644 public_html/index.html

$ ls –ao public_html

drwxr-xr-x 16 kschmidt 4096 Jan 8 10:15 .

drwx--x--x 92 kschmidt 8192 Jan 8 13:36 ..

-rw-r--r-- 5 kschmidt 151 Nov 16 19:18 index.html

$ chmod 644 .plan

$ ls –o .plan

-rw-r--r-- 5 kschmidt 151 Nov 16 19:18 .plan

29/10/2015Tarea:Realizar ejemplo de cada uno de los comandos

chmod –modos simbólicos

Usado para colocar, agregar, o eliminar permisos

forma:[ugoa][+-=][rwx]

u – user g – group o – other a – all

+ agregar permisos - quitar permisos = colocar permisos

chmod ejemplos

$ ls -al foo

-rwxrwx--x 1 hollingd grads foo

$ chmod g-wx foo

$ ls -al foo

-rwxr----x 1 hollingd grads foo

$ chmod u-r .

$ ls

ls: .: Permission denied

Comandos para almacenar

tar

Crea un gran archivo a partir de muchosarchivos

gzip, gunzip

Utilidad de compreción de archivos

tar en Linux realiza una compression gzip con la opción z :

$ tar czf 571back.tgz CS571

$ tar xzf assn1.tgz

El Shell como interfaz de usuario

Un shell es un intérprete de commandos , una interfaz entre el humano (u otro programa) y el SO

Es, por si mismo, otro programa

Bourne-again Shell (bash)

Extension del shell Bourne Shell (sh)

Tiene mucho de las extensions del shell Korn (ksh)

Inicio de Sesión

Una vez logeado, el shell inicia y muestra el prompt. ($)

Al iniciar el shell busca archivos de configuración y personalización en home. Se puede cambiar el prompt, PATH, etc.

Personalización

parámetros.

Prompt de usuario

Dónde encontrar el correo

atajos

Se lo realiza en los archivos de inicio

Archivos de inicio

sh,ksh:

/etc/profile (predet del sistema)

~/.profile

bash:

~/.bash_profile

~/.bashrc

~/.bash_logout

csh:

~/.cshrc

~/.login

~/.logout

Logeo Incorrecto

Se recibe la petición de “Password:” aún si se usó un login erroneo

– Por qué?

Ingreso de commandos

El shell imprime el prompt y espera que se escriba un comando.

El primer element se espera sea el commando. Pueden ser:

Incorporados del shell - comandos que el shell interpreta directamente.

Programas externos (utilidades) –programas independientes en el disco (se busca en el orden especificado de las carpetas en $PATH)

Interpretar un Comando - type

Cuando se encuentra un comando, el shell:1. Busca por alias

2. Busca funciones definidas por el usuario

3. Busca si es incorporado

4. Busca utilidades en los directorios especificadosen $PATH

Se puede usar type para saber que usa el shell:type echo

echo is a shell builtin

type chmod

chmod is /bin/chmod

Opciones y argumentos

Forma estandarizada de los comandos:

comando opción(es) argumentos

Las opciones modifican la forma en la cual trabajaa un comando, frecuentemente un guión y una letra(puede combinarse luego del guión)

Des logearse

exit (commando incorporado)

Sale del shell

Si se está en el shell de login (nivelsuperior), nos desconecta del sistema

Al ser el shell un programa que se ejecuta, puede ser invocadorecursivamente

Standard I/O

Cuando se ingresa un commando, el shell crea un subshell para ejecutar el proceso o script.

El shell establece e canales I/O:

Entrada estándar (0) – teclado

Salida estándar (1) – pantalla

Error estándar (2) – pantalla

Esos flujos pueden ser redireccinados a y desde un archivo, o incluso a otro comando

Los programas y los I/O estandar

ProgramStandard Input

(STDIN)

Standard Output

(STDOUT)

Standard Error

(STDERR)

Terminar un flujo en la entrada estandar

Para indicar el fin de la entrada pulsar Ctrl-D (^D), que es la señal EOF de la línea, esto Cierra el flujo de entrada (stream).

El shell es un programa que lee desde la entrada estándar.

Qué sucede al pulsar ^D en el shell?

(Ver el comando set e ignoreeof)

Ejercicio: Crear Script y usar argumentos %0, %1, etc.

cat > prog1.sh

Lista comandos … ^D

chmod a+x *.sh

./prog1.sh o sh prog1.sh

Metacaracteres del Shell

Algunos caracteres tienen significadosespeciales para el shell: redirección I/O

< > |

comodines

* ? [ ]

otros

& ; $ ! \ ( ) space tab newline

Deben usarse junto con caracteres de escape o entre comillas para evitarcomportamientos indeseados

Comodines

* – iguala 0 o más caracteres

? – iguala exáctamente 1 caracter

[<list>] – iguala cualquier caracter dentro de la lista

Ej.

ls *.cc – lista todos los archivos fuente de C++ en la

carpeta

ls a* – lista todos los archivos que inician con ’a’

ls a*.jpeg – lista todos las fotos JPEGs que iniciancon ’a’

ls * - lista todo dentro de subdirectorios inclusive

Comodines …

ls file?

- busca file1, file2, pero no file ofile22

ls file?.*.DEL

- busca file1.h.DEL, file9.cc.DEL, file3..DEL pero no file8.DEL o file.html.DEL

Estas no son expresiones regulares!

4/11/2015

Comodines

[abc] iguala cualquiera de los caracteres

ls T[eE][sS][tT].doc

[a-z] iguala cualquier caracter en el rangols [a-zA-Z]*

[!abc…] iguala cualquier caracter except

aquellos en la lista.ls [!0-9]*

Variables de Shell

bash usa variables shell para almacenar información

Usadas para cambiar el comportamiento del shell y de otros programas

Podemos acceder a esas variables: Colocar nuevos valores para personalizar el

shell.

Ver el valor para ayudar a completar una tarea.

Cambiar/Ver las Variables

Para asignar (en sh, ksh, bash):VAR=algunaCadena

OTRA_VAR=“Con espacios”

Nota, no usar espacio alrededor de ‘=‘

Para ver :$ echo $VAR

algunaCadena

$ echo $OTRA_VAR

Con espacios

Variables del Shell

Algunas comunes:

PATH – lista de carpetas en donde buscar commandos que no son incorporados al shell

PS1 –prompt primario

USER – nombre del login del usuario

HOME – carpeta home del usuario

PWD – carpeta de trabajo actual

Otras importantes

SHELL – el shell del login

TERM – el tipo de terminal

HISTFILE – en donde se almacena el historial de comandos

EDITOR – mantiene el editor preferido del usuario

HOSTNAME – nombre de la máquina

SHELLOPTS – valor de varias opciones del shell (ver set incorporado del shell Bash)

Mostrar el valor de variables de Shell

Colocar el Prefijo "$“ a la variable.

El comando echo lo muestra:

$ echo $HOME

$ echo $PATH

Se puede usar estas variables en cualquier comando:

$ ls -al $HOME

Colocando valores en las variables Shell

Se usa un comando de asignaciónincorporado: set

HOME=/etc

PATH=/usr/bin:/usr/etc:/sbin

NEWVAR="blah blah blah"

Comando set

Sin argumentos imprime el listado de todas las variables de entorno.

Algunas opciones bash

noclobber – no permite que la redirecciónsobreescriba un archivo existente

ignoreeof – El Shell no sale con ctrl-D

vi – usa una interfaz de estilo vi (se usaemacs de forma predeterminada)

-n – ejecución en seco (solo ejecuta el parser, pero no lo ejecuta). Útil para depuración de scripts

Caracter de escape \

Usar backslash para inhibir el comportamiento especial de los siguientes caracteres :

$ echo $USER

hernan

$ echo \$USER

$USER

$ echo a\\b

a\b

Comillas dobles

Inhibe todos los comportamientos, excepto sustitución de variables, sustitución de comandos, y el caracterde escape \$ echo “$USER es $USER”

hernan es hernan

$ echo “\$USER es $USER”

$USER es hernan

$ echo “He dicho, \”Espera un

momento\””

He dicho, “Espera un momento”

Comillas simples

Inhibe casi todos los comportamientosespeciales

No puede contener una comilla simple

$ echo ‘he dicho “espera!”’

he dicho “espera!”

$ echo ‘Mi nombre es $USER’

Mi nombre es $USER

$ mv compuestoPorMozart

‘compuesto por – Mozart’

Filosofía Unix

La union de pequenas utileriasmediante entubamiento y redirecciónpara realizar fácilmente tareas no triviales

Ej., encontrar los 3 subdirectorios másgrandes:

$ du –s * | sort –nr | head -n3

120180 Files

22652 Zaychik

9472 tweedledee.tgz

Filosofía UnixEntubamiento y combinación con filtros

Conectar la salida de un comando a la entrada de otro para obtener filtroscompuestos

who | wc -l

ls | sort -f

ls -s | sort -n

ls -l | sort -nr -k4

ls -l | grep ‘^d’

Control de procesos

Los Procesos se ejecutan en un subshell (de forma predeterminada)

Los Subshell heredan las variables exportadas

Cada proceso tiene su ID (pid) y un padre (ppid)

Usar ps para verlos

$ ps

PID TTY TIME CMD

350 pts/4 00:00:00 bash

22251 pts/4 00:00:00 vim

22300 pts/4 00:00:00 ps

Control de procesos (cont.)

Usar la opción –f para un listado largo :

$ ps –fUID PID PPID C STIME TTY TIME CMD

hernan 350 349 0 10:06 pts/4 00:00:00 -bash

hernan 22251 350 0 17:32 pts/4 00:00:00 vim tarea

hernan 22437 350 0 17:36 pts/4 00:00:00 ps -f

Usar –e para listar los procesos de todos los usuarios.

$ ps –e | grep xmms

29940 pts/0 00:33:47 xmms

Matar un proceso

El comando kill envía una senal al proceso (al PID dado)

De forma predeterminada, envía TERM (terminate), el que solicita que finaliceel proceso, de tal manera se lo haga de forma limpia

usar -9 para enviar la senal KILL (no será ignorada), pero no de forma limpia

Ej:

$ kill -9 29940

Control de trabajo

El shell permite administrar trabajos(jobs)

Coloca los trabajos en Segundo plano(background)

mueve un trabajo a primer plano(foreground)

suspende un trabajo

Mata un trabajo

Trabajos a Segundo plano

Se lo hace colocando un "&“ al final de la línea de comando.

No se necesita esperar que se termine el trabajo, se puede escribir un Nuevo comandoinmediatamente.

Se puede tener un grupo de trabajos ejecutandoseal mismo momento.

Ej.ls -lR > /home/hernan/listadoTotal.txt &

Listar los trabajos

El comando jobs listará los trabajos en Segundo plano:

> jobs

[1] Running ls -lR >

listadoTotal.txt &

>

El shell asigna un número a cadatrabajo (en este caso 1).

Suspendiendo y Reanudando los trabajos en Segundo plano

Se puede suspender pulsando ^Z (Ctrl-Z). Suspendido significa que se detiene el trabajo, pero no

finaliza. El trabajo se mostrará en el listado obtenido con jobs.

Se usa fg y el número de trabajo, precedido por %. Sin un argumento, fg trae el ultimo trabajo al primer plano

$ jobs

[1] Stopped ls -lR > listadoTotal.txt &

$ fg %1

ls -lR > listadoTotal.txt

Colocar en el Segundo plano un trabajo suspendido

Si está en primer plano, se debe suspenderlo

Usar bg, tal como se lo hizo con fg,

para permitir que un trabajo suspendido continúe en el Segundo plano:$ bg %3

Finalizar un trabajo

Kill puede tomar un número de trabajo o incluso un nombre de trabajo, usando %:$ find . –name core\* -print >

archivosCore &

$ firefox&

$ jobs

[1]+ Running find . –name …

[2]+ Running firefox

$ kill %2

Editores de texto

Un editor de texto se usa para crear y modificar archivos.

Los más comunes son:

vi (también vim en Linux) $ vimtutor

emac

$ emacs

Entonces pulsar, ctrl-h t

VI comandos básicos:•cambiar de modo comando a modo insert: i• cambiar de modo insert a modo comando: Esc* Modo comando:

•hacia arriba k

•hacia abajo j•hacia la izquierda h•hacia la derecha l•grabar :wEnter (write)•salir sin grabar :q!Enter•deshacer u•rehacer Ctrl+r•escribir y salir :wqEnter• Eliminar linea dd• Salir grabando :x

Tarea: realizar un script llamado copiar.sh que pida unacarpeta de origen, un nombre de archivo, una carpeta de destino y un nombre de destino, realice la copia y finalmente muestre el contenido de forma paginada del archivo en cuestion.