Está en la página 1de 46

Introducción al shell

Grupo de Sistemas y Comunicaciones


gsyc-profes@gsyc.escet.urjc.es

Noviembre 2006

GSyC,
c Grupo de Sistemas y Comunicaciones, 2006
http://gsyc.escet.urjc.es

Se permite copiar, distribuir, exhibir, comunicar la obra, crear obras deriva-


das y hacer uso comercial de este trabajo bajo la condición de reconocer y
dar crédito al autor original (Creative Commons Attribution License 2.0 ).

GSyC
c 2006
2

Introducción al Shell

GSyC
c 2006 Introducción al shell

Interfaces de usuario (cont.) 3

Interfaces de usuario

Interfaz gráfico

Supone un gran avance


Excelente para usuarios, o para tareas que hagamos de vez en cuando
Mucho menos eficientes
En Unix hay cosas sólo se pueden hacer con interfaz texto
No es la filosofı́a Unix
No son estándar Unix
Exigen tener gráficos (mucho más caro que pj ssh)
Hay gestores de ficheros gráficos, pero no los uses
-si quieres dominar Unix-

GSyC
c 2006 Introducción al shell : Introducción al Shell
Interfaces de usuario 4

Unix dispone de interfaz gráfico desde los 80. X Window.


(No confundir con Microsoft Windows).
Sobre las X Window van el gestor de ventanas y el escritorio
(Actualmente KDE o Gnome)

GSyC
c 2006 Introducción al shell : Introducción al Shell

Interfaces de usuario (cont.) 5

Interfaz de texto

Write programs that do one thing and do it well. Write programs to work
together. Write programs that handle text streams, because that is a
universal.
interfaz texto: teclado
• terminales x
• consola: terminales virtuales (Ctrl+Alt+F1) (Ctrl+Alt+F6)
• Vuelta a sesión X (Ctrl+Alt+F7)
exit (EOF, Ctrl + D)

GSyC
c 2006 Introducción al shell : Introducción al Shell
Interfaces de usuario (cont.) 6

Interfaz de texto en Unix:

GSyC
c 2006 Introducción al shell : Introducción al Shell

Interfaces de usuario (cont.) 7

Interfaz gráfico en Unix:

¿Qué deberı́a manejar un fotógrafo?

GSyC
c 2006 Introducción al shell : Introducción al Shell
Shell:Intérprete de comandos 8

Shell:Intérprete de comandos

Programa que
• lee el texto (borrar, autocompletar, history),
• lo analiza (expande metacaracteres)
• Ejecuta el programa (comando)
• Duerme
◦ A menos que lancemos comando en background
acroread file.1 &
Hay muchos: /bin/sh, /bin/bash, /bin/csh ...
variables de entorno
los comandos son sólo (pequeños) programas ejecutables

GSyC
c 2006 Introducción al shell : Introducción al Shell

Shell:Intérprete de comandos (cont.) 9

GSyC
c 2006 Introducción al shell : Introducción al Shell
Shell:Intérprete de comandos (cont.) 10

Documentación

El comando más importante: man


q Finaliza la consulta (quit)
/ Busca una cadena

El manual se organiza en tomos


man 1 write
man 2 write
1 Programas ejecutables y guiones de bash
2 Llamadas del sistema (funciones servidas por el núcleo)
3 Llamadas de biblioteca
4 Ficheros especiales ( /dev)
5 Formato de ficheros y convenios p.ej. I/etc/passwd
6 Juegos
7 Paquetes de macros y convenios p.ej. man(7), signal(7).

Para buscar en el manual: apropos

GSyC
c 2006 Introducción al shell : Introducción al Shell

Shell:Intérprete de comandos (cont.) 11

También puede ser útil buscar un tutorial, howto o FAQ


Suele estar mal considerado consultar a un humano sin hacer cierto
esfuerzo previo

GSyC
c 2006 Introducción al shell : Introducción al Shell
Shell:Intérprete de comandos (cont.) 12

¿Quién soy? ¿Dónde estoy? ¿Qué tengo?

whoami
Muestra el usuario
id
Muestra usuario y grupos
uname
uname -a
Versión de Linux
hostname
Nombre de máquina
pwd
Directorio de trabajo actual

GSyC
c 2006 Introducción al shell : Introducción al Shell

Shell:Intérprete de comandos (cont.) 13

w
Usuarios conectados a la máquina
du Espacio de disco ocupado por los ficheros de un directorio
du -s Espacio de disco ocupado por un directorio
du -h Unidades legibles para un humano

df
Espacio de disco libre

GSyC
c 2006 Introducción al shell : Introducción al Shell
14

ls -l Formato largo
ls -a Muestra ficheros ocultos (empiezan por punto)
ls -lh Formato largo, unidades legibles por humano
ls -R Recursivo
ls -ld Lista el directorio, no su contenido

Unix es case sensitive

GSyC
c 2006 Introducción al shell : Introducción al Shell

(cont.) 15

Metacaracteres del Shell

$ Variable
* 0 o más caracteres cualquiera
? exactamente 1 caracter cualquiera
[] 1 caracter de la clase

ejemplo:
ls *.txt
el shell lo expande a
ls texto1.txt texto2.txt texto3.txt
El comando recibe 3 argumentos, no sabe nada de metacaracteres

GSyC
c 2006 Introducción al shell : Introducción al Shell
Ficheros 16

Ficheros

Árbol de directorios

Árbol, todo cuelga de un


único directorio raiz
Dentro de cada directorio,
habrá ficheros o subdirec-
torios
jerarquı́a clásica unix:
• /home
• /bin
• /usr
• (...)

GSyC
c 2006 Introducción al shell : Introducción al Shell

Ficheros (cont.) 17

path

cd
.
..
El slash / separa directorios
• Fichero que empieza por ’/’ : absoluto
• Fichero sin ’/’: relativo
• cp fichero tmp
cp fichero ./tmp
cp fichero /tmp
cd ~jperez/dir

GSyC
c 2006 Introducción al shell : Introducción al Shell
Ficheros (cont.) 18

Comandos de ficheros

Tradicionalmente en Unix los ficheros no llevaban extensión


No hay un programa asociado a cada extension
file mifichero Indica el tipo del fichero
cp origen destino
cp -r /tmp .
Copia el directorio tmp al directorio actual
cp /tmp/* .
Copia los ficheros del directorio tmp al directorio actual
cp -r /usr/share/ejemplo $HOME/pruebas
Copia el directorio ejemplo en el directorio pruebas del home del
usurio actual.
mv origen destino
Mueve un fichero. Equivale a renombrar

GSyC
c 2006 Introducción al shell : Introducción al Shell

Ficheros (cont.) 19

cp y mv pueden recibir más de 2 argumentos.


En ese caso, el ultimo debe ser un directorio
rm fichero
borra fichero a
rm -r directorio
Borra un directorio y todo su contenido
mkdir
Crea un directorio
a Cuando hablemos de enlaces veremos una definición más exacta

GSyC
c 2006 Introducción al shell : Introducción al Shell
Ficheros (cont.) 20

Un usuario de MS-DOS podrı́a intentar hacer


mv *.txt *.doc # ¡MAL! No funciona, y puede ser fatal
Supongamos que tenemos en el directorio actual
carta1.txt
carta2.doc

Tras expandir los asteriscos, el resultado es


mv carta1.txt carta2.doc # ¡destruimos el segundo fichero!
Solución válida a :
#!/bin/bash
for fichero in *.txt
do
nombre=$(echo $fichero | cut -d. -f1)
extension=$(echo $fichero | cut -d. -f2)
mv $fichero $nombre.doc
done
a Siempre que solo haya un punto en el nombre

GSyC
c 2006 Introducción al shell : Introducción al Shell

Usuario root 21

Usuario root

En Unix, tradicionalmente hay un súper-usuario root.


El directorio home del usuario root es el directorio /root
su
nos convertimos en root
sudo aparece con posterioridad. En muchos Unix es opcional, en Ubuntu
Linux es obligatorio
sudo comando
ejecuta un único comando como root
Solo los usuario en el grupo admin pueden ejecutar sudo
Para aplicaciones gráficas, no debe usarse sudo sino gksudo
gksudo mi-aplicacion

GSyC
c 2006 Introducción al shell : Introducción al Shell
Usuarios y grupos 22

Usuarios y grupos

Comandos que sólo pueden ejecutarse como root


groupadd grupo
crea un grupo
adduser usuario a
añade un usuario
adduser usuario grupo
añade un usuario a un grupo
usermod -g grupo inicial usuario
Cambia el grupo inicial del usuario
userdel usuario
borra un usuario
a En RedHat, useradd usuario y chfn usuario

GSyC
c 2006 Introducción al shell : Introducción al Shell

Usuarios y grupos 23

userdel -r usuario
borra un usuario y su HOME
passwd usuario
Cambia la contraseña de un usuario
su usuario
Cambia el id. de usuario actual
chown dueño fichero(s)
cambia el dueño de un fichero
chgrp dueño fichero(s)
cambia el grupo de un fichero
Comandos para cualquier usuario
passwd
Cambia la contraseña

GSyC
c 2006 Introducción al shell : Introducción al Shell
Usuarios y grupos 24

id usuario
muestra id, gid, grupos
newgrp grupo
Entre los grupos de un usuario, elige el actual

GSyC
c 2006 Introducción al shell : Introducción al Shell

Usuarios y grupos (cont.) 25

Permisos de los ficheros

chmod 754 mi_fichero


chmod [ugo] [+-] [rwx] mi_fichero
chmod o+x mi_fichero

GSyC
c 2006 Introducción al shell : Introducción al Shell
Usuarios y grupos (cont.) 26

Permisos de los directorios

r y x normalmente van juntos. (Ambos o ninguno).


Permiten entrar en el directorio
w permite añadir añadir ficheros o borrarlos

Muy Importante:
Comprueba los permisos de tu $HOME, en muchos sistemas por omisión
está abierto
Atención,
un fichero sin permisos de escritura
pero con permiso de escritura en el directorio que lo contiene,
no podrá ser modificado pero sı́ borrado
(a menos que esté el sticky bit activado chmod [+-]t dir)

GSyC
c 2006 Introducción al shell : Introducción al Shell

Conexión con otras máquinas 27

Conexión con otras máquinas

ping
Envia indefinidamente paquetes de prueba. Peligroso en scripts
ping -c 1 Envia 1 paquete de prueba
telnet (no recomendable, contraseñas sin cifrar)
ftp (no recomendable, excepto ftp anónimo)
ssh usuario@maquina
scp usuario@maquina:/dir/fich destino

GSyC
c 2006 Introducción al shell : Introducción al Shell
Enlaces 28

Enlaces

enlace duro
Un nuevo nombre para el fichero
ln a b
enlace blando o simbólico
un nuevo fichero que apunta a un nombre
ln -s a c

rm borra un nombre de un fichero


si es el último, borra el fichero.

Con enlaces simbólicos, si se borra el original


el enlace queda roto

GSyC
c 2006 Introducción al shell : Introducción al Shell

Enlaces (cont.) 29

Enlace duro

GSyC
c 2006 Introducción al shell : Introducción al Shell
Enlaces (cont.) 30

Enlace simbólico

GSyC
c 2006 Introducción al shell : Introducción al Shell

Entrada y salida 31

Entrada y salida

entrada estándar
salida estándar
salida de error estándar

GSyC
c 2006 Introducción al shell : Introducción al Shell
Entrada y salida (cont.) 32

Paso de argumentos a comandos

Muchos comandos se comportan ası́ (no todos)


Sin argumentos: Entrada estándar
wc
1 argumento: Nombre de fichero
wc fichero
n nombres de fichero
wc fichero1 fichero2

GSyC
c 2006 Introducción al shell : Introducción al Shell

Entrada y salida (cont.) 33

cat
lee lo que hay en stdin y lo escribe en stdout
(Ctrl D: fin de fichero)
cat fichero1 fichero2
lee los ficheros que se pasan como argumento y los escribe (concate-
nados) en stdout
(Ctrl D: fin de fichero)
echo argumento
escribe en stdout el texto que se le pasa como argumento
less fichero
escribe un fichero en stdout, permitiendo paginación

GSyC
c 2006 Introducción al shell : Introducción al Shell
Entrada y salida (cont.) 34

Redirecciones

< redirige stdin desde fichero


> redirige stdout a fichero, reemplazando
>> redirige stdout a fichero, añadiendo
& > redirige stdout y stderr a fichero
| redirige el stdout de un proceso al stdin del siguiente
cat
cat file1 file2 >file3
cat file1 | less
cat >file1
less fichero
cat fichero | less
less <fichero
(El resultado es el mismo, pero es importante distinguirlo)

GSyC
c 2006 Introducción al shell : Introducción al Shell

Comandos de procesos 35

Comandos de procesos

ps Información sobre los procesos


ps -e Información sobre todos los procesos de la maquina
ps -ef Formato largo

top Muestra los procesos que consumen más cpu


kill Envia una señal a un proceso

GSyC
c 2006 Introducción al shell : Introducción al Shell
Señales 36

Señales

kill -9 pid
15 SIGTERM (valor por defecto)
9 SIGKILL
2 SIGINT (Ctrl C) interrumpe
man 7 signal

GSyC
c 2006 Introducción al shell : Introducción al Shell

Filtros 37

Filtros

grep
grep hidalgo quijote.txt Devuelve lı́neas con el patrón
grep "la mancha" quijote.txt
grep -v Devuelve lı́neas sin el patrón
grep -i Ignora mayúsculas/minúsculas
Atención,en el patrón ana encaja la palabra rosana
cut
ls -l | cut -c2-4
cat /etc/passwd | cut -d: -f5
paste
paste -s
wc

GSyC
c 2006 Introducción al shell : Introducción al Shell
Filtros 38

diff
sort
uniq
head
head -5 fichero.txt
tail
tail -3 fichero.txt
who | cut -c1-8 |sort |uniq | wc -l

ps -ef | grep miguel | grep -v gvim

GSyC
c 2006 Introducción al shell : Introducción al Shell

Filtros 39

Expresiones Regulares (Regexp)

? opcional
* 0 o más veces
+ 1 o más veces
. cualquier carácter
[ ] cualquiera de la clase
[^ ] cualquiera excepto la clase
^ principio de linea
$ fin de linea
\< inicio de palabra
\> fin de palabra
| o
() agrupar
{min,max} rango

GSyC
c 2006 Introducción al shell : Introducción al Shell
Filtros (cont.) 40

No confundir los metacaracteres de las regexp


con los metacaracteres del shell
importante: escapar con \

egrep digo fichero

sed ’s/digo/diego/g’ fichero

GSyC
c 2006 Introducción al shell : Introducción al Shell

Variables de entorno (cont.) 41

Variables

variable=valor
echo $variable
Sin espacios antes y despues del igual
con $ para acceder al contenido de la variable
sin $ en la asignación
sólo son visibles en ese proceso
Variables de entorno

export VARIABLE=valor
hace que los procesos hijos la reciban
por convenio se usan mayúsculas

GSyC
c 2006 Introducción al shell : Introducción al Shell
Variables de entorno 42

se pueden modificar en el ~/.bashrc


que será ejecutado al abrir una nueva shell
printenv
muestra todas las variables de entorno
HOME
HOSTNAME
USER
PATH
export PATH=$PATH:/usr/local/bin:.

GSyC
c 2006 Introducción al shell : Introducción al Shell

Anexo: Invocación del shell 43

Anexo: Invocación del shell

1. bash interactivo y de login


Ej: Ctrl+Alt+F1
lee y ejecuta /etc/profile
Después, ejecuta el primero que encuentre de
~/.bash_profile
~/.bash_login
~/.profile
No se ejecuta .bashrc, a menos que .bash_profile lo llame
2. bash interactivo, no de login
Ej: Una consola desde una sesión X
~/.bashrc

GSyC
c 2006 Introducción al shell : Introducción al Shell
Anexo: Invocación del shell 44

3. bash no interactivo, no de login


Ej: Un script
Se ejecuta el fichero $BASH_ENV

Atención,hablamos del inicio del shell, no de unix

GSyC
c 2006 Introducción al shell : Introducción al Shell

Anexo: Empaquetado de ficheros 45

Anexo: Empaquetado de ficheros

gzip

Comprime o descomprime 1 fichero


Extensión: fichero.z fichero.gz
Comprimir:
gzip -c fichero > fichero.z
Descomprimir:
gzip -d fichero.z
Descomprimir:
zcat fichero.z | less
zcat fichero.z > fichero_descomprimido

GSyC
c 2006 Introducción al shell : Introducción al Shell
Anexo: Empaquetado de ficheros 46

tar + gzip

Comprime o descomprime varios ficheros, directorios


Extensión: fichero.tar.gz fichero.tgz
Comprimir:
tar -cvzf fichero.tgz fichero1 fichero2
Descomprimir:
tar -xvzf fichero.tgz
Mostrar contenido:
tar -tzf fichero.tgz
WinZip

No hay compresor en Linux. (Pero WinZip sabe descomprimir .tgz)


Descomprimir: unzip fichero.zip

GSyC
c 2006 Introducción al shell : Introducción al Shell

Anexo: Empaquetado de ficheros (cont.) 47

Disquetes

Podemos montar la disquetera como un sistema de ficheros Unix


Pero suele ser más práctico copiar un .tgz en modo msdos
mdir a:
mcopy fichero a:
mcopy a:fichero
Trocear ficheros

Trocear
split -b 1440k cancion.mp3 trozo
Recomponer
cat trozo* > cancion.mp3

GSyC
c 2006 Introducción al shell : Introducción al Shell
Anexo: Empaquetado de ficheros (cont.) 48

Localizar ficheros

find busca un fichero


find . | grep fichero Filtra la búsqueda
locate Busca un fichero (en una base de datos)
updatedb Actualiza la base de datos

GSyC
c 2006 Introducción al shell : Introducción al Shell

Anexo: Empaquetado de ficheros (cont.) 49

Anexo:Jerarquı́a del
sistema de ficheros
Linux

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux
Introducción: 50

Introducción:

Para quien se acerca a Linux resulta confuso un ls -l /


drwxr-xr-x 2 root root 4096 ene 30 20:34 bin
drwxr-xr-x 2 root root 4096 mar 12 19:46 boot
drwxr-xr-x 5 root root 24576 may 22 06:27 dev
drwxr-xr-x 66 root root 4096 may 19 00:26 etc
drwxrwsr-x 7 root staff 4096 abr 16 17:36 home
drwxr-xr-x 6 root root 4096 feb 1 18:02 lib
drwxr-xr-x 2 root root 16384 nov 7 2000 lost+found
dr-xr-xr-x 2 root root 4096 nov 10 2000 mix
dr-xr-xr-x 67 root root 0 may 19 02:25 proc
drwxr-xr-x 14 root root 4096 feb 12 19:28 root
drwxr-xr-x 2 root root 4096 ene 30 20:30 sbin
drwxrwxrwt 9 root root 4096 may 22 10:19 tmp
drwxr-xr-x 15 root root 4096 nov 8 2000 usr
drwxr-xr-x 16 root root 4096 nov 9 2000 var

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux

Normalización de Linux 51

Normalización de Linux

La estructura de todos los Unix se parece


La estructura de todas las distribuciones Linux se parece mucho

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux
Jerarquı́a clásica 52

Jerarquı́a clásica

La jerarquı́a actual puede resultar algo ilógica, pero hay motivos históricos
En los primeros Unix los discos eran más pequeños y más caros,
en uno estaba lo imprescindible para que el sistema funcionase:
/
/etc
/lib
/tmp
/bin
/root

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux

Jerarquı́a clásica (cont.) 53

y en un segundo disco, se montaba /usr


/usr/spool
/usr/bin
/usr/include
/usr/tmp
/usr/adrn
/usr/lib

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux
FHS Filesystem Hierarchy Standard 54

FHS Filesystem Hierarchy Standard

Estándar propuesto. Versión actual: 2.2 (mayo 2001)

1. Directorios de usuarios
2. Programas (incluyendo comandos y librerı́as)
3. Configuración del sistema
4. El Hardware
5. Documentación
6. Ficheros Temporales
7. Otros directorios relacionados con el S.O.

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux

1. Directorios de usuarios 55

1. Directorios de usuarios

Directorio del administrador


/root
Usuarios locales
/home/jperez
o bien
/home/profesores
/home/alumnos
Usuarios NIS
/users/jperez

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux
2. Programas y comandos 56

2. Programas y comandos

Comandos útiles para todos los usuarios


/bin
/usr/bin
Comandos útiles para el root
/sbin
/usr/sbin

(Todo lo que haya bajo /usr deberı́a ser sólo lectura)

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux

2. Programas y comandos (cont.) 57

Programas
• Software no incluido en la distribución Linux
/usr/local
• Grandes aplicaciones como StarOffice, KDE, Oracle...
/opt

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux
2. Programas y comandos (cont.) 58

Librerı́as estáticas (para compilar) y dinámicas


/lib
/usr/lib
/usr/local/lib
Ficheros de cabecera (para compilar)
/usr/include
Ficheros independientes de la arquitectura
/usr/share

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux

3. Configuración del sistema 59

3. Configuración del sistema

Directorio /etc
Información sobre el sistema de ficheros (puntos de montaje, opcio-
nes)
/etc/fstab
cuentas de usuarios
/etc/passwd
Passwords de los usuarios
/etc/shadow
Scripts para arranque del sistema
/etc/init.d
...

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux
4. El Hardware 60

4. El Hardware

Los dispositivos del sistema /dev


/dev/hda IDE primario master
/dev/hdb IDE primario slave
/dev/hdc IDE secundario master
/dev/hdd IDE secundario slave
/dev/cdrom
/dev/fd0 disquete
/dev/audio tarjeta sonido
/dev/modem
/dev/mouse
/dev/printer
/dev/ttyn donde n es el no de consola

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux

4. El Hardware (cont.) 61

Ficheros virtuales que representan las estructuras del Kernel en eje-


cución, dan información sobre la cpu...
/proc/cpuinfo CPU
/proc/pci Tarjetas PCI
/proc/ioports Puertos I/O
/proc/meminfo Información sobre la memoria

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux
5. Documentación 62

5. Documentación

/usr/share/doc
Documentación sobre el software del sistema
/usr/man
Ficheros del comando man

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux

6. Ficheros Temporales 63

6. Ficheros Temporales

Ficheros temporales
(se borran cuando la máquina arranca)
/tmp
Fragmentos de ficheros recuperados
/lost+found

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux
6. Ficheros Temporales (cont.) 64

Ficheros que cambian con frecuencia


/var
/var/log/messages logs del sistema
/var/log/dmesg logs del sistema al arrancar
/var/spool/lpd/lp spool de la impresora
/var/tmp Ficheros temporales
/var/mail Correo de los usuarios
/var/run PID de programas en ejecución

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux

7. Otros directorios relacionados con el S.O. 65

7. Otros directorios relacionados con el S.O.

Información útil para el arranque del sistema: /boot


Código fuente
• Código fuente del software de sistema
/usr/src
• Código fuente del kernel linux
/usr/src/linux

GSyC
c 2006 Introducción al shell : Anexo:Jerarquı́a del sistema de ficheros Linux
7. Otros directorios relacionados con el S.O. (cont.) 66

Editores de texto

GSyC
c 2006 Introducción al shell : Editores de texto

Introducción 67

Introducción

Este es un repaso de algunos editores de texto para linux.


¿Cuál es mejor?
Cada uno tiene sus ventajas e inconvenientes.
La respuesta a esta pregunta en buena parte depende de gustos per-
sonales
Este es un asunto tı́pico para guerras de religión

GSyC
c 2006 Introducción al shell : Editores de texto
Introducción (cont.) 68

GSyC
c 2006 Introducción al shell : Editores de texto

vi (cont.) 69

vi

El editor más clasico en Unix. Año 1976


Se considera que cualquier administrador Unix deberı́a conocer al menos
los comandos básicos
Hoy usamos clones como vim.
Ventajas

Siempre estará disponible y funcionando en cualquier máquina Unix


Versiones para la mayorı́a de los SSOO (Windows, Mac OS...)
Es muy flexible y potente, conociéndolo bien se puede trabajar a gran
velocidad
Está pensado para trabajar en sesiones remotas con malas conexiones

GSyC
c 2006 Introducción al shell : Editores de texto
vi 70

La versión gvim tiene menús y botones, es útil mientras se aprenden


los comandos

GSyC
c 2006 Introducción al shell : Editores de texto

vi (cont.) 71

Inconvenientes

Interfaz de usuario muy anticuado, el usuario debe memorizar coman-


dos ¡donde hasta las mayúsculas son significativas!

GSyC
c 2006 Introducción al shell : Editores de texto
vi (cont.) 72

1. Modo comando (modo orden, modo normal)


2. Mode texto (mode entrada)
Comandos Imprescindibles

$ vi fichero edita el fichero, si no existe lo crea


i,o pasan a modo texto
Esc pasa a modo comando
Esc: pasa a comando de modo linea
R pasa a mode reemplazar, hasta que pulsemos Esc
:r leer un fichero
:q Salir del buffer / salir del programa
:w nombre escribe fichero
:wq Escribir y salir, equivale a :x zz
:q! Salir sin grabar
J Une dos lineas
punto Repite el último comando
u Deshace último cambio
dd Borra lı́nea actual

GSyC
c 2006 Introducción al shell : Editores de texto

vi (cont.) 73

2dd Borra dos lı́neas


D Borra hasta final de lı́nea
p pega lo ultimo copiado o borrado
/patron Busca un patrón (hacia adelante)
G Ir a Final del archivo
5G Ir a lı́nea 5
% correspondencia de paréntesis, llaves...

GSyC
c 2006 Introducción al shell : Editores de texto
vi (cont.) 74

Otros Comandos

0 ir a principio lı́nea
$ ir a fin linea
w siguiente palabra
b palabra anterior
r Sustituye 1 carácter
4cw Cambia las próximas 4 palabras
x Borra carácter
5x Borrar 5 caracteres
dw Borra hasta fin palabra
n Repite búsqueda
N Busca en dirección inversa a anterior
yy copia (yanc) linea
yw Copia palabra
3yw copia 3 palabras
* busca palabra igual a la que marca el cursor
ma marca a
mb marca b
’a ir a marca a

GSyC
c 2006 Introducción al shell : Editores de texto

vi (cont.) 75

’b ir a marca b
Ctrl G Indica linea actual
~ Pasa de may. a minusc. o al revés
:49,53 w! fichero Graba en fichero lineas de 49 a 53
:.,53 w! fichero Graba en fichero de linea actual a final
:1,$ s/digo/diego/g Busca y Reemplaza
:set nu Indica el no de linea
:set nonu Desactiva no de linea
:set ic Ignore Case (Insensible a mayúsculas en búsquedas)
:set noic Desactiva ic
Puede configurarse en un fichero en el $HOME
koji@mazinger:~$ cat .vimrc
set vb
set ic
set tabstop=8
syntax on

(Elimina pitidos, ignora mayúsculas/minúsculas, tamaño del tabulador, colorea con la


sintaxis)

GSyC
c 2006 Introducción al shell : Editores de texto
vi (cont.) 76

Todo lo necesario sobre vi está en:


vi lovers home page

GSyC
c 2006 Introducción al shell : Editores de texto

Otros editores ligeros 77

Otros editores ligeros

Todo programador Unix/Linux deberı́a conocer algún editor ligero, que


trabaje en modo texto.
Eso permitirá, por ejemplo

Trabajar cuando no tengamos X Window (Gráficos)


Trabajar desde otra máquina (en la universidad o en casa) aunque
sólo tengamos windows y una conexión mala. O incluso un PDA y un
teléfono móvil

Para esto lo mejor es vi. Pero si nos asusta el interfaz de usuario, hay
alternativas como joe o nano (clon de pico)

GSyC
c 2006 Introducción al shell : Editores de texto
Emacs / XEmacs 78

Emacs / XEmacs

Editor clásico en Unix. Uno de los más conocidos, se populariza a mediados


de los 80
Ventajas

Completı́simo, es mucho más que un editor. Permite leer correo, news,


se integra con gran cantidad de herramientas...
Módulos para muchos lenguajes de programación
Da formato y color al fuente, con mucha calidad.
Completamente personalizable (en lisp)
Puede emular a vi

GSyC
c 2006 Introducción al shell : Editores de texto

Emacs / XEmacs (cont.) 79

Inconvenientes

Muy grande y pesado, consume muchos recursos.


Su uso resulta complicado
Aún para las tareas sencillas, tiene alguna peculiaridad que lo hace
poco intuitivo al usuario actual

GSyC
c 2006 Introducción al shell : Editores de texto
Emacs / XEmacs (cont.) 80

Usando emacs

menu
pantalla edición
lı́nea de modo
lı́nea comandos

GSyC
c 2006 Introducción al shell : Editores de texto

Emacs / XEmacs (cont.) 81

emacs 6= xemacs

GSyC
c 2006 Introducción al shell : Editores de texto
Emacs / XEmacs (cont.) 82

Atajos de teclado

CTRL-K borrar linea


ESC-X query-replace, ESC-X replace
ESC-X goto-line
CTRL-X-S salvar
CTRL-X-F encontrar fichero
CTRL-W=cortar, CTRL-Y=pegar
CTRL-@=marca

GSyC
c 2006 Introducción al shell : Editores de texto

Emacs / XEmacs (cont.) 83

Enlaces sobre Emacs/XEmacs

Emacs http://www.gnu.org/software/emacs
XEmacs http://www.xemacs.org

GSyC
c 2006 Introducción al shell : Editores de texto
wily/acme 84

wily/acme

wily es un clon para linux


del acme de plan9
ventajas

Su uso en simple
Pequeño
Usa el shell como len-
guaje

GSyC
c 2006 Introducción al shell : Editores de texto

wily/acme (cont.) 85

Inconvenientes

Para usarlo de forma efectiva,


hay que usar Unix de forma efectiva
enlaces

http://www.cs.bell-labs.com/sys/doc/acme/acme.html

GSyC
c 2006 Introducción al shell : Editores de texto
SciTE 86

SciTE
Editor de texto reciente
Ventajas

Muy completo: Da for-


mato, color, se integra
con el compilador...
Versiones para Win32 y
X Window
Muy fácil de manejar
Es el editor de anjuta,
el IDE de gnome

GSyC
c 2006 Introducción al shell : Editores de texto

SciTE (cont.) 87

Inconvenientes

Exige una sesión gráfica


No tan extendido como vim o emacs
Hay cosas que vim o xemacs hacen mejor
enlaces

http://www.scintilla.org/SciTE.html

GSyC
c 2006 Introducción al shell : Editores de texto
Kate 88

Kate
Es el editor del escritorio
KDE
Ventajas

Muy completo: Da for-


mato, color, se integra
con el compilador...
Muy buen pretty prin-
ting
Muy fácil de manejar

GSyC
c 2006 Introducción al shell : Editores de texto

Kate (cont.) 89

Inconvenientes

Exige una sesión gráfica


No tan extendido como vim o emacs
Hay cosas que vim o xemacs hacen mejor
Es necesario tener instalado KDE (o al menos buena parte)
No disponible en otras plataformas
enlaces

http://kate-editor.org/

GSyC
c 2006 Introducción al shell : Editores de texto
gedit 90

gedit

Editor de texto reciente, es


el block de notas de gnome
Ventajas

Muy sencillo y fácil de


manejar

GSyC
c 2006 Introducción al shell : Editores de texto

gedit (cont.) 91

Inconvenientes

Exige una sesión gráfica


Ha mejorado mucho, pero sigue teniendo poca funcionalidad
No hay motivo para usarlo si está disponible kate o scite

GSyC
c 2006 Introducción al shell : Editores de texto

También podría gustarte