Curso de Unix de la A a la Z - Órdenes Básicas
Curso gratis creado por Publispain. Extraido de: http://www.publispain.com
22 de Agosto de 2005
Unix
2 - Órdenes Básicas
Conexión y desconexión
Para acceder al sistema , éste presenta el mensaje de login , con el que quiere significar algo así como "introduce el usuario con el que quieres abrir una sesión" .
UNIX(r) System V Release 4.2
login:
Una vez tecleado el usuario que se quiere y haber pulsado RETURN , solicita una palabra de paso (password) , la cual , como es natural , no se verá en pantalla aunque se escriba .
UNIX(r) System V Release 4.2
login:antonio
Password:
$
Tanto el nombre del usuario como la palabra de paso han de ser escritas "de golpe" , es decir , no se pueden dar a los cursores para modificar ningún carácter y mucho menos la tecla de Backspace , Ins , Del ... . Esto es debido a que , tanto éste carácter como los aplicados a los cursores son caracteres válidos en nombres de usuario y en palabras de paso.
El sistema , una vez aceptado el nombre del usuario ( el cual como es obvio habrá sido asignado por el Administrador , así como la palabra de paso ) , lanza por pantalla unos mensajes de bienvenida y termina con el s&iacut e;mbolo denominado "prompt" , símbolo configurable (como casi todo en UNIX) y que suele ser un ‘$’ ó un ‘#’.
Existe en todos los sistemas UNIX un superusuario llamado "root" , que puede hacer absolutamente lo que quiera en el sistema. Además , hay algunos usuarios especiales , dependiendo del sistema que se trate con má s privilegios de los normales ( admin ó sa ó sysadm , usuario de administración del equipo , uucp como usuario de comunicaciones ) y el resto , que corresponden a usuarios normales.
El programa que está en éste momento mostrando el prompt es la shell ó intérprete de comandos. Con éste prompt indica algo así como "preparado para que me escribas el comando que quieres ej ecutar" .
Cada comando debe finalizar en un RETURN , el cual funcionalmente se asemeja a la orden "AR" en la mili ( El sargento dice "firmes" , pero nadie se mueve hasta que da el RETURN , es decir , "AR" ).
También es significativa la diferencia entre mayúsculas y minúsculas ; no es lo mismo "cal" que "CAL" . El primero es un comando de calendario ; el segundo no existe y la shell se queja de que no lo encuentra :
$ cal
January 1995
S M Tu W Th F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
$ CAL
UX:sh: ERROR: CAL: Not found (no existe ningún comando "CAL" !)
Para terminar la sesión, se tecleará el comando "exit" , lo que provocará la aparición del mensaje de login :
$ exit
UNIX(r) System V Release 4.2
login:
efecto que puede también conseguirse apagando y encendiendo el terminal (en terminales "civilizados") ó pulsando Ctrl D (Tecla de "Control" y tecla "D" a la vez). Puede que en su terminal alg una de éstas dos cosas no funcione : piense que en UNIX casi todo es configurable .
Conceptos : grupo,directorio de trabajo , shell , tipo de terminal
Cada usuario , aparte de la palabra de paso , posee unos determinados atributos los cuales básicamente son :
- Grupo : A cada usuario , en el momento de su creación , se le asigna uno ( ó varios , si la versión del sistema es moderno ) . La misión de ésto radica en agrupar usuarios en "grupos" car a a permitir y a denegar accesos en el sistema. Para ver a que grupo pertenecemos , se puede ejecutar el comando "id" , el cual producirá un resultado similar al siguiente :
$ id
uid=129(jose) gid=1(other)
Como era de esperar , el comando nos contesta con siglas en inglés ; "uid" (UserID) , identificador de usuario , un número y un nombre (129 y jose) ; "gid" (GroupID) , identificador de grupo , un n&uacu te;mero y un nombre (1 y other).
- Directorio de trabajo : Al iniciar una sesión (tras hacer "login") , cada usuario "cae" en un determinado directorio prefijado . Este habrá sido fijado por el administrador en el momento de la creaci& oacute;n , y normalmente estará situado en "/Tutoriales/jose" , "/users/acct/jose" ó similar. No existe un estándar sobre ésto y puede ser cualquier subdirectorio del sistema , incluída la raíz.
Para visualizar cual es nuestro directorio , podemos escribir el comando "pwd" (Print Working Directory) inmediatamente después de haber hecho "login" .
- Shell : Si bien nos hemos referido de forma genérica a la shell existen diversas versiones asignables a usuarios , de las cuales podemos citar algunas :
- la Bourne shell ("sh") : Una de las más antiguas y , por tanto , más seguras.
- la Korn shell ("ksh") : Basada en la de Bourne pero más moderna y con más funcionalidades.
- la C-Shell ("csh") : Preferida en entornos BSD y bastante potente aunque más criptica que las dos anteriores.
Veremos más adelante las características de cada una de ellas con más detalle.
- Características del Terminal : Dependiendo de cómo se tenga configurado el terminal , la sesión se comporta de una manera determinada frente los siguientes caracteres especiales :
- Control + C (INTR) : Interrumpe el programa que se está ejecutando en ese momento.
- Control + H (ERASE) : Borra el último carácter escrito.
- Control + D (EOF) : Termina la sesión ; posee un efecto similar a escribir "exit" .
Comandos (who/date/man/who am i/logname)
En UNIX , un comando se invoca escribiendo su nombre y , separados por blancos , los argumentos opcionales. Como antes , se debe pulsar RETURN una vez se ha escrito la orden correspondiente.
El comando "who" informa de los usuarios que se hallan presentes en el sistema .
$ who
jose ttyp05 Ene 27 10:45
conta1 ttyp15 Ene 27 11:05
carmen syscons Ene 27 10:48
Si deseamos saber quienes somos ( cara al sistema , claro - el unix y la filosofía son cosas distintas) , usaremos el comando "who am i".
A veces , no coinciden el usuario con el que uno se ha conectado (con login) y el usuario efectivo. Ya se verá más adelante algo más sobre éste tema. En éste caso , el comando que muestra con qú e usuario se ha hecho la conexión será "logname".
Los campos corresponden al usuario , terminal asociado y fecha de conexión.
El comando "date" permite ver la fecha y hora del sistema y también fijarla ; si escribimos "date" a secas :
$ date
Mon Jan 4 18:46:12 GMT 1995
Y si intentamos cambiarla , por motivos obvios , sólamente podremos hacerlo como el usuario "root" (Las implicaciones que el cambio de fecha trae consigo en relación con los backups incrementales , así com o cualquier proceso dependiente de la hora , pueden ser importantes).
No obstante , hay veces que se debe hacer ; en éstos casos , todos los menús de administración de cualquier equipo UNIX traen el comando "Change Date/Time". No obstante , podemos dar desde "root" el siguiente comando :
date -u 1202120094
para cambiar a día 02 del mes 12 a las 12.00 del año 1994. (El formato para date es MESMESDIADIAHORAHORAMINUTOMINUTOAÑO).
Archivos y directorios
Uno de los primeros "manuales" de UNIX (La definición del BSD) , establecía que en Unix "todo son ficheros". Tenemos varios tipos :
- Fichero "normal" con sus variantes que más tarde veremos . Es algo que , referido a un nombre , contiene una secuencia determinada de caracteres (bytes). El sistema operativo no impone ningún tipo de formato ni de registro. Ejemplos de ficheros "normales" puede ser el que nos creamos con algún editor , conteniendo un documento. Por ejemplo , el fichero "/etc/motd" es un fichero cuyo contenido es el mensaje del día . Si ejecutam os el comando "cat" (ver el contenido de un fichero), tendríamos una salida como ésta :
$ cat /etc/motd
*
© 1981-95 AT&T Unix System Laboratories
Bienvenido al equipo XXXXXXXXXXX
*
El mismo comando "cat" es un fichero , lo que ocurre es que , en vez de contener "letras" legibles , contiene código binario que sólo el equipo es capaz de comprender. Podemos probar ésto haciendo :
$ cat /bin/cat
kjsdñkqbehls wqej jsdf sdcaj
dfkjsadf df asldfj af ^C ^C ^B aasd ( .... BASURILLA .... )
Pues también son ficheros normales aquellos que contienen programas compilados (ejecutables).
-Directorios , que son ficheros cuyo contenido son nombres de ficheros. Funcionalmente , se comportan de la misma manera que en sistemas tipo MS-DOS.
-Ficheros especiales .Ya que es el propio sistema operativo el que debe ocuparse de los detalles "sucios" de acceso a dispositivos , la apuesta de los creadores y continuadores de UNIX fué el de homogeneizar todos &eacu te;stos accesos vía fichero. De tal forma , si tenemos un fichero correspondiente a una impresora , bastará escribir en él para que salga en papel ; de la misma manera , si deseamos ver lo que una cinta Exabyte , DAT ó Streamer contiene debe ser suficiente con "leer" lo que el fichero de acceso a ésos dispositivos contiene.
Si bien la nomenclatura varía entre sistemas , normalmente todos éstos tipos residen en el directorio "/dev". Podemos citar algunos de ellos:
Podemos crear un archivo de múltiples formas ; utilizando un editor , mediante un programa ó utilizando algún comando. Unicamente se tendrá en cuenta , a la hora de escoger nombres para los ficheros , las sig uientes reglas :
- El nombre no podrá exceder de 255 letras (14 en versiones UNIX anteriores a la R2.1)
- Utilizar caracteres "normales" (Si bien se puede usar cualquier carácter , desechar aquellos que no sean A-Z /a-z / 0-9) Especial atención merecen aquellos ficheros cuyo primer carácter es el punto " ;." , ya que se consideran "ocultos" en la medida en que determinados comandos , al detectar este hecho , los ignoran.
- Vamos a crear un fichero cuyo contenido sea "hola" :
$ echo "hola" > tonto
$
(... parece que no ha ocurrido nada ... )
$ cat tonto
hola
$
(efectivamente - ahora , el comando "ls" nos da un listado de los ficheros)
$ ls
tonto
$ ls -a
.
..
tonto
.profile
$
Ahora parece que el fichero "tonto" ha criado! Lo que ocurre es que estamos en nuestro directorio de trabajo , y ahí existe desde el principio un fichero "oculto" (el .profile) el cual sólo podemos list ar utilizando la opción "-a" (all) del ls. Además de ésto, aparecen el "punto" (.) y el "punto-punto" , sinónimos de "directorio actual" y "directorio anterior".
Primero , vamos a ver en qué directorio estamos , para lo cual emplearemos el comando "pwd" (Print Working Directory).
$ pwd
/usr/jose
$ ls
tonto
Nuestro directorio de trabajo es "/usr/jose" y tenemos dentro del mismo el fichero "tonto" . Utilizando los conceptos de "." y ".." , podemos ejecutar el comando "ls" pasando los mismos como argumentos :
$ ls . ( listar el contenido del directorio "actual" ; funciona igual que "ls" a secas )
tonto
$ ls ..
jose
paco
antonio
bin
(....)
Estamos diciendo que nos liste el "directorio anterior" , es decir , "/usr" .
Podemos hacer lo mismo cambiando al directorio anterior y ejecutando "ls" : nos cambiamos de directorio usando el comando "cd" (Change Directory) , con direccionamiento absoluto ( indicando todo el camino de subdirec torios desde el directorio "raiz" (/) :
$ cd /usr
$ pwd
/usr
$ ls
jose
paco
antonio
bin
(...)
O bien , cambiando con direccionamiento relativo , y se dice así por ser relativo al directorio donde estamos trabajando :
$ cd .. ( nos cambiamos al directorio anterior , es decir , a "/usr" )
$ pwd
/usr
ls
jose
paco
antonio
bin
(...)
Para volver a nuestro directorio "origen" (Tutoriales directory) , bastaría con ejecutar el comando "cd" a secas ; él vuelve siempre al mismo sitio , en éste caso , a "/usr/jose" estemos dond e estemos.
Si queremos crear un nuevo directorio emplearemos en camino absoluto ó relativo el comando "mkdir" con el argumento "nombre_del_directorio_que_queremos_crear" . Para eliminarlo , ejecutaremos "rmdir" con el mismo argumento :
$ mkdir nuevo
$ ls
tonto
nuevo
Tenemos ahora el fichero de siempre y un directorio que se llama "nuevo". Pero escribiendo "ls" no vemos a simple vista ninguna diferencia ; hay que dar la opción "-F" ó "-l" :
$ ls -F
tonto
nuevo/
$ ls -l
-rw-r--r-- 1 jose sys 4 Mar 1 11:07 tonto
drw-r--r-- 1 jose sys 84 Mar 1 11:07 nuevo
(la letra "d" al principio del listado largo nos indica que se trata de un directorio)
$ cd nuevo
$ pwd
/usr/jose/nuevo
(.. nos hemos cambiado al directorio nuevo ..)
$ cd ..
$ pwd
/usr/jose
( .. Tutorialess vuelto ... )
$ rmdir nuevo
$ ls
tonto
( .. ! ya no está .. )
Tipos de archivos
Si bien UNIX no impone una estructura a ningún fichero , éstos tendrán características comunes dependiendo para lo que sirvan ; podemos agrupar éstos en varios tipos :
- Ejecutables . Nornalmente se trata de programas compilados y contienen código binario ininteligible para la mayoría de los humanos pero no así para la máquina. Ejemplos de éstos ficheros pueden ser l os ficheros "/bin/ls" , "/bin/cat/" ... Todos ellos deben tener activados los permisos de ejecución que más tarde veremos.
- Binarios , englobando dentro de ésta categoría aquellos que son empleados por programas capaces de entender su contenido ( un fichero indexado accesible desde COBOL , por ejemplo ) pero no legibles.
-Texto , correspondientes a aquellos ficheros que contienen registros de caracteres terminados en "nueva línea" y normalmente son legibles. Ejemplo de fichero de texto puede ser el "/etc/motd" , "/etc/pas swd" y cualquiera que haya sido confeccionado con el editor.
- Dispositivo. Cualquier fichero asignado a un dispositivo físico ; normalmente residen a partir del subdirectorio "/dev" y son ficheros de terminales , de particiones de discos , de puertos de impresora .... Dentro de ésta categoría podemos incluir el fichero especial "/dev/null" , el cual tiene como misión el que cualquier cosa que se le mande es desechada.
Cualquier fichero de tipo dispositivo puede tener dos categorías : bien de tipo "caracter" , ó "raw mode" ( lee y escribe "de golpe" ) ó de tipo "bloque" ó "cooked mode" ( lee y escribe a trozos según el tamaño de buffer que tenga asignado).
Si se tienen dudas acerca del tipo de fichero , podemos ejecutar el comando "file <nombre_del_fichero>.
$ file /bin/ls
/bin/ls: ELF 32-bit MSB executable M88000 Version 1
( Ejecutable dependiente del procesador 88000 de Motorola )
$ file /dev/null
character special
Tipos de acceso / permisos
En cualquier sistema multiusuario es preciso que existan métodos que impidan que un determinado usuario pueda modificar ó borrar un fichero confidencial, ó incluso leer su contenido. Asimismo , determinados comandos ( apagar la máquina , por ejemplo ) deben estar permitidos exclusivamente a determinados usuarios , quedando inoperantes para los demás.
En UNIX , éstos métodos radican en que cada fichero tiene un propietario , que es el usuario que creó el fichero. Además , los usuarios están divididos en grupos , asignación que normalmente se lleva a cabo por el Administrador del sistemas , dependiendo de la afinidad de las tareas que realizan. El fichero anterior tiene también un grupo , que es el grupo del usuario que lo ha creado . UNIX distingue tres tipos de acceso - lectura , escr itura y ejecución - sobre el usuario que lo ha creado , los usuarios del mismo grupo que el que lo creó y todos los demás usuarios .
Por todo lo anteriormente dicho , un fichero puede tener cualquier combinación de los tres tipos de acceso sobre tres tipos de usuarios : el creador , los de su grupo y todos los demás ( otros cualquiera que no cumplan nin guna de las dos condiciones anteriores ). Para ver lso permisos de un fichero cualquiera , empleamos el comando "ls -l" (formato largo) :
$ ls -l
-rw-r--r-- 1 jose sys 4 Mar 1 11:07 tonto
drw-r--r-- 1 jose sys 84 Mar 1 11:07 nuevo
Los campos que lo componen son :
-rw-r--r-- : tipo de fichero ( la primera raya ; en el caso de "nuevo" , una "d" significa que es un directorio , y una raya "-" significa fichero normal ) y 3 grupos de tres correspondientes , los tres primeros , a permisos del usuario ; los tres siguientes , a los del grupo , y los tres últimos , a todos los demás.
jose : Usuario que creó el fichero.
sys : Grupo del creador.
4 : Tamaño en bytes.
Mar 1 11:07 : Fecha de creación ó de última modificación.
tonto : Nombre del fichero.
Cada grupo de tres elementos pueden ser "rwx" , que son : permiso para leer , permiso para escribir y permiso para ejecutar. Una raya significa "carece de permiso para (.)" .
Por tanto , el fichero "tonto" puede ser leído y escrito (y , por tanto , borrado) , por el usuario "jose" . Cualquier otro usuario , sea del grupo "sys" ó no , tiene permisos sólo de lectura.
En el caso de directorios , todo igual salvo que en éste caso la "x" de ejecutar no tendría sentido ; por ello , aquí éste carácter significa "el usuario X puede cambiarse a éste directorio" .
Para darle ó quitarle permisos a un fichero ó directorio , se emplea el comando chmod <máscara> <nombre_de_fichero> . La máscara es un número octal de hasta un máximo de cuatro cifra s correspondiente a sumar los siguientes números :
1 : Permiso de ejecución.
2 : Permiso de escritura.
4 : Permiso de lectura.
Por tanto , para darle máximos permisos al fichero "tonto" , ejecutaremos el comando :
$ chmod 777 tonto
$ ls tonto
-rwxrwx rwx 1 jose sys 4 Mar 1 11:07 tonto
al darle tres sietes ( 1 + 2 + 4 = 7 ) , el fichero se queda con la máscara rwx.
Si queremos sólo lectura para creador , grupo y otros , el comando sería "chmod 444 tonto" y así sucesivamente.
En determinadas ocasiones puede ser necesario cambiar de propietario a un fichero ó directorio ; para ello utilizamos el comando "chown <nombre_del_propietario> <fichero>". Igual pasa con los grupos ; el com ando es "chgrp <nombre_del_grupo> <fichero>"
$ chown juan tonto
$ ls tonto
-rwxrwxrwx 1 juan sys 4 Mar 1 11:07 tonto
$ chgrp conta tonto
$ ls tonto
-rwxrwxrwx 1 jose conta 4 Mar 1 11:07 tonto
Pero , cuando creamos un fichero , que permisos coge por defecto ? El valor de "umask" que tenemos asignado en la sesión complementado con 666 (rw-rw-rw). El comando "umask" a secas nos devuelve dicho valor :< /P>
$ umask
022
En éste caso , 666-022 = 644 , es decir , cualquier fichero que creemos con un editor ó con otros comandos serán creados con permisos 644 (rw-r--r--) .
Para cambiar la máscara , usamos el comando umask con la nueva máscara que le quieremos dar :
$ umask 000
En cuyo caso , todos los ficheros a partir del ése momento , y hasta que finalice la sesión , serán creados con "barra libre" para todo el mundo.
Manipulación de ficheros
Podemos examinar una primera tanda de comandos hermanos , que son los siguientes:
cp <fichero a copiar> <fichero nuevo>
mv <fichero a mover> <fichero nuevo>
ln <fichero a lincar> <fichero nuevo>
"cp" copia el primer argumento al segundo. Valen caminos relativos , es decir
$ cp tonto /tmp
$ cp tonto /tmp/nuevo
$ cp /Tutoriales/jose/tonto /tmp/tonto
producirían el mismo resultado ; copian el fichero desde el directorio actual al /tmp.
El comando "mv" se comporta igual salvo que el fichero original desaparece ; es similar al "RENAME" de MS-DOS.
El comando "ln" hace que pueda existir un contenido con varios nombres :
$ ln tonto tonto1
$ ls -l tonto*
-rw-r--r-- 2 jose sys 4 Mar 1 11:07 tonto
-rw-r--r-- 2 jose sys 4 Mar 1 11:07 tonto1
ahora "tonto" y "tonto1" hacen referencia al mismo contenido ; por tanto , cualquier cambio que realicemos en uno se verá en el otro, y si borramos ahora el fichero "tonto" , quedará el " tonto1" con el mismo contenido , que sólo será borrado al borrar el último de los ficheros lincados a su contenido.
Debido a la naturaleza del propio comando , no se pueden hacer enlaces (links) entre ficheros ó directorios situados en sistemas de ficheros distintos.
Para éste último caso , existe una opción del comando "ln" , el "ln -s" (link simbólico) ; crea un enlace simbólico entre dos entidades pero sólo como una referencia ; en &e acute;ste caso si el fichero original se borra , el link queda suelto y el contenido irrecuperable.
El comando "rm" borra ficheros y directorios ; para borrar el tonto1 que ya no necesitamos , podemos escribir :
$ rm tonto1
Valen metacaracteres . Si escribimos
$ rm *
nos borramos TODO lo que haya en el "directorio actual" SIN pedir confirmación.
Una opción de rm lo hace más seguro al pedirla :
$ rm -i tonto1
tonto1 ? y
La opción más peligrosa puede ser la "-r" (recursivo) que borra ficheros y directorios a partir del directorio de arranque. Por tanto , ojo con poner
$ rm -r .
si estamos en el directorio "raíz" y tenemos privilegios , podemos borrar el contenido de TODOS LOS DISCOS
Por último , veremos un comando de utilidad simililar a "ls" pero con mas opciones ; el comando "find" muestra en pantalla directorios y/o ficheros atendiendo a opciones determinadas . Si bien la sintaxis es d emasiado extensa para estudiarla en su totalidad , conviene ver algunos ejemplos :
- El comando toma como argumentos declaraciones en formato "find <directorio base> <opciones> -print" . Por tanto , para sacar en pantalla todos los ficheros y directorios del disco , valdría con :
find / -print
- Si se desean sólo ficheros ó sólo directorios :
find / -type f -print
ó
find / -type d -print
respectivamente.
- Buscar todos los ficheros y directorios que tengan más de 30 días de antigüedad :
find / -atime +30 -print
El resto de las opciones sirve para buscar ficheros con determinados permisos , mayores ó menores que un determinado tamaño ....
Directorios del sistema
Si bien la estructura de los directorios varía entre versiones y dialectos de UNIX , podemos mencionar algunos de los más representativos :
Resumen del editor de pantalla "vi" .
Vi es un editor de pantalla completa creado en el UNIX de Berkeley y extendido más tarde a todos los demás dialectos.
La ventaja de éste editor radica en su compatibilidad con el resto de herramientas de edición UNIX .
Vi contempla , una vez iniciada la sesión con él , dos modos :
- Modo comando : es el modo en el que arranca por defecto. Vale para dar comandos tales como : leer un fichero , escribir un fichero , búsqueda ó sustitución de caracteres dentro del texto actual ...
Este modo es al que se vuelve siempre , pulsando la tecla <ESC>.
- Modo insercion/reemplazo : es el que se usa para escribir caracteres . Se entra a éste modo desde el modo comando pulsando la letra " i ".
Desde el modo comando , podemos pasar también a modo inserción escribiendo las siguientes letras :
- i : Pasar a modo inserción , delante de la posición del cursor.
- a: Igual , pero detrás de la posición del cursor.
- I : Pasar a modo inserción ,pero empezando a insertar al principio de la línea donde se esté.
- A : Igual , pero empezando al final de la línea donde se esté.
- o : Pasar a modo inserción, pero abriendo una línea nueva debajo de donde se esté.
- O : Igual , pero la línea nueva se abre arriba.
- <ESC>: Pasar a modo comando.
- Backspace: Borra la última letra escrita.
- <Control>v: Identifica el carácter que vamos a escibir a continuación como un caracter especial , es decir , un escape , ó salto de hoja (^L) , ó cualquier carácter ascii entre el 1 y el 31. ( 1=^A , 2=^B .....).
Pasando a modo comando , podemos emplear las siguientes secuencias para movernos por el texto :
- ^: Ir al principio de la línea.
- $: Ir al final de la línea.
- l,h: Izquierda / derecha.
- j,k: Abajo / Arriba.
- ^F (Control + F ): Una pantalla adelante.
- ^B (Control + B ): Una pantalla atrás.
- ^G (Control +G): Enseña el número de línea donde estamos posicionados.
- 1G: Al principio del todo.
- G: Al final del todo.
- /<cadena>: Busca <cadena> desde la línea actual hasta el final del texto.
- / Sigue buscando más ocurrencias de la cadena.
-?<cadena>: Busca <cadena> desde la línea actual para atrás.
-? Sigue buscando más ocurrencias , para atrás.
-ZZ Grabar y salir.
-dd: Borrar la línea donde se esté.
-J: Juntar la línea donde se esté y la de abajo.
-r: Reemplaza una sola letra.
-R: Reemplaza todo hasta que se pulse <ESC> .
-yy: yank/yank: Marca la línea actual.
-p: Copia la línea marcada despues del cursor.
-P: Copia la línea marcada antes del cursor.
-.: Repite el último cambio.
-u Undo (anula el último cambio)
-U Undo , pero en la línea actual.
Ordenes de "dos puntos" : Al pulsar en modo comando el carácter ":" , el cursor se baja a la última linea y el editor saca los dos puntos en espera de que le demos algún comando de estos. Salimos de aquí pulsando <ESC> .Algunos son :
:wq! (write/quit)Grabar y salir.
:w! <nombre_fichero> (write) Graba el texto en <nombre_fichero>.
:r <nombre_fichero> (read) Incluye el fichero como parte del texto en edición.
:!<comando> Ejecutar <comando> . Vuelve al terminar el comando.
:<número de línea> Ir a <número de línea>.
:q! (quit) Salir sin grabar.
:se nu
:se nonu Numera las líneas.(set number,set nonumber-pone y quita).
:1,5de Borra desde la 1 a la 5.
:1,5co20 Copia desde la 1 a la 5 a partir de la línea 20.
:1,5mo20 Igual, pero mueve.(desaparece desde la línea 1 a la 5).
:g/XXX/sYYY/g Cambia en todo el texto XXX por YYY.
Hay muchísimos más comandos , pero para ir tirando , con éstos son suficientes.
Para acceder al sistema , éste presenta el mensaje de login , con el que quiere significar algo así como "introduce el usuario con el que quieres abrir una sesión" .
UNIX(r) System V Release 4.2
login:
Una vez tecleado el usuario que se quiere y haber pulsado RETURN , solicita una palabra de paso (password) , la cual , como es natural , no se verá en pantalla aunque se escriba .
UNIX(r) System V Release 4.2
login:antonio
Password:
$
Tanto el nombre del usuario como la palabra de paso han de ser escritas "de golpe" , es decir , no se pueden dar a los cursores para modificar ningún carácter y mucho menos la tecla de Backspace , Ins , Del ... . Esto es debido a que , tanto éste carácter como los aplicados a los cursores son caracteres válidos en nombres de usuario y en palabras de paso.
El sistema , una vez aceptado el nombre del usuario ( el cual como es obvio habrá sido asignado por el Administrador , así como la palabra de paso ) , lanza por pantalla unos mensajes de bienvenida y termina con el s&iacut e;mbolo denominado "prompt" , símbolo configurable (como casi todo en UNIX) y que suele ser un ‘$’ ó un ‘#’.
Existe en todos los sistemas UNIX un superusuario llamado "root" , que puede hacer absolutamente lo que quiera en el sistema. Además , hay algunos usuarios especiales , dependiendo del sistema que se trate con má s privilegios de los normales ( admin ó sa ó sysadm , usuario de administración del equipo , uucp como usuario de comunicaciones ) y el resto , que corresponden a usuarios normales.
El programa que está en éste momento mostrando el prompt es la shell ó intérprete de comandos. Con éste prompt indica algo así como "preparado para que me escribas el comando que quieres ej ecutar" .
Cada comando debe finalizar en un RETURN , el cual funcionalmente se asemeja a la orden "AR" en la mili ( El sargento dice "firmes" , pero nadie se mueve hasta que da el RETURN , es decir , "AR" ).
También es significativa la diferencia entre mayúsculas y minúsculas ; no es lo mismo "cal" que "CAL" . El primero es un comando de calendario ; el segundo no existe y la shell se queja de que no lo encuentra :
$ cal
January 1995
S M Tu W Th F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
$ CAL
UX:sh: ERROR: CAL: Not found (no existe ningún comando "CAL" !)
Para terminar la sesión, se tecleará el comando "exit" , lo que provocará la aparición del mensaje de login :
$ exit
UNIX(r) System V Release 4.2
login:
efecto que puede también conseguirse apagando y encendiendo el terminal (en terminales "civilizados") ó pulsando Ctrl D (Tecla de "Control" y tecla "D" a la vez). Puede que en su terminal alg una de éstas dos cosas no funcione : piense que en UNIX casi todo es configurable .
Conceptos : grupo,directorio de trabajo , shell , tipo de terminal
Cada usuario , aparte de la palabra de paso , posee unos determinados atributos los cuales básicamente son :
- Grupo : A cada usuario , en el momento de su creación , se le asigna uno ( ó varios , si la versión del sistema es moderno ) . La misión de ésto radica en agrupar usuarios en "grupos" car a a permitir y a denegar accesos en el sistema. Para ver a que grupo pertenecemos , se puede ejecutar el comando "id" , el cual producirá un resultado similar al siguiente :
$ id
uid=129(jose) gid=1(other)
Como era de esperar , el comando nos contesta con siglas en inglés ; "uid" (UserID) , identificador de usuario , un número y un nombre (129 y jose) ; "gid" (GroupID) , identificador de grupo , un n&uacu te;mero y un nombre (1 y other).
- Directorio de trabajo : Al iniciar una sesión (tras hacer "login") , cada usuario "cae" en un determinado directorio prefijado . Este habrá sido fijado por el administrador en el momento de la creaci& oacute;n , y normalmente estará situado en "/Tutoriales/jose" , "/users/acct/jose" ó similar. No existe un estándar sobre ésto y puede ser cualquier subdirectorio del sistema , incluída la raíz.
Para visualizar cual es nuestro directorio , podemos escribir el comando "pwd" (Print Working Directory) inmediatamente después de haber hecho "login" .
- Shell : Si bien nos hemos referido de forma genérica a la shell existen diversas versiones asignables a usuarios , de las cuales podemos citar algunas :
- la Bourne shell ("sh") : Una de las más antiguas y , por tanto , más seguras.
- la Korn shell ("ksh") : Basada en la de Bourne pero más moderna y con más funcionalidades.
- la C-Shell ("csh") : Preferida en entornos BSD y bastante potente aunque más criptica que las dos anteriores.
Veremos más adelante las características de cada una de ellas con más detalle.
- Características del Terminal : Dependiendo de cómo se tenga configurado el terminal , la sesión se comporta de una manera determinada frente los siguientes caracteres especiales :
- Control + C (INTR) : Interrumpe el programa que se está ejecutando en ese momento.
- Control + H (ERASE) : Borra el último carácter escrito.
- Control + D (EOF) : Termina la sesión ; posee un efecto similar a escribir "exit" .
Comandos (who/date/man/who am i/logname)
En UNIX , un comando se invoca escribiendo su nombre y , separados por blancos , los argumentos opcionales. Como antes , se debe pulsar RETURN una vez se ha escrito la orden correspondiente.
El comando "who" informa de los usuarios que se hallan presentes en el sistema .
$ who
jose ttyp05 Ene 27 10:45
conta1 ttyp15 Ene 27 11:05
carmen syscons Ene 27 10:48
Si deseamos saber quienes somos ( cara al sistema , claro - el unix y la filosofía son cosas distintas) , usaremos el comando "who am i".
A veces , no coinciden el usuario con el que uno se ha conectado (con login) y el usuario efectivo. Ya se verá más adelante algo más sobre éste tema. En éste caso , el comando que muestra con qú e usuario se ha hecho la conexión será "logname".
Los campos corresponden al usuario , terminal asociado y fecha de conexión.
El comando "date" permite ver la fecha y hora del sistema y también fijarla ; si escribimos "date" a secas :
$ date
Mon Jan 4 18:46:12 GMT 1995
Y si intentamos cambiarla , por motivos obvios , sólamente podremos hacerlo como el usuario "root" (Las implicaciones que el cambio de fecha trae consigo en relación con los backups incrementales , así com o cualquier proceso dependiente de la hora , pueden ser importantes).
No obstante , hay veces que se debe hacer ; en éstos casos , todos los menús de administración de cualquier equipo UNIX traen el comando "Change Date/Time". No obstante , podemos dar desde "root" el siguiente comando :
date -u 1202120094
para cambiar a día 02 del mes 12 a las 12.00 del año 1994. (El formato para date es MESMESDIADIAHORAHORAMINUTOMINUTOAÑO).
Archivos y directorios
Uno de los primeros "manuales" de UNIX (La definición del BSD) , establecía que en Unix "todo son ficheros". Tenemos varios tipos :
- Fichero "normal" con sus variantes que más tarde veremos . Es algo que , referido a un nombre , contiene una secuencia determinada de caracteres (bytes). El sistema operativo no impone ningún tipo de formato ni de registro. Ejemplos de ficheros "normales" puede ser el que nos creamos con algún editor , conteniendo un documento. Por ejemplo , el fichero "/etc/motd" es un fichero cuyo contenido es el mensaje del día . Si ejecutam os el comando "cat" (ver el contenido de un fichero), tendríamos una salida como ésta :
$ cat /etc/motd
*
© 1981-95 AT&T Unix System Laboratories
Bienvenido al equipo XXXXXXXXXXX
*
El mismo comando "cat" es un fichero , lo que ocurre es que , en vez de contener "letras" legibles , contiene código binario que sólo el equipo es capaz de comprender. Podemos probar ésto haciendo :
$ cat /bin/cat
kjsdñkqbehls wqej jsdf sdcaj
dfkjsadf df asldfj af ^C ^C ^B aasd ( .... BASURILLA .... )
Pues también son ficheros normales aquellos que contienen programas compilados (ejecutables).
-Directorios , que son ficheros cuyo contenido son nombres de ficheros. Funcionalmente , se comportan de la misma manera que en sistemas tipo MS-DOS.
-Ficheros especiales .Ya que es el propio sistema operativo el que debe ocuparse de los detalles "sucios" de acceso a dispositivos , la apuesta de los creadores y continuadores de UNIX fué el de homogeneizar todos &eacu te;stos accesos vía fichero. De tal forma , si tenemos un fichero correspondiente a una impresora , bastará escribir en él para que salga en papel ; de la misma manera , si deseamos ver lo que una cinta Exabyte , DAT ó Streamer contiene debe ser suficiente con "leer" lo que el fichero de acceso a ésos dispositivos contiene.
Si bien la nomenclatura varía entre sistemas , normalmente todos éstos tipos residen en el directorio "/dev". Podemos citar algunos de ellos:
- /dev/lp0,/dev/lp1 : Primera y segunda impresora en paralelo.
- /dev/tty00,/dev/tty01 .... : Terminales ó modems en conexión serie.
- /dev/eth0 : Primera placa ethernet
- /dev/dsk/c0d0s0 : Primera partición del disco "0" en la controladora "0"
- /dev/rmt/0 : Unidad de cinta Stremer con rebobinado automático.
Podemos crear un archivo de múltiples formas ; utilizando un editor , mediante un programa ó utilizando algún comando. Unicamente se tendrá en cuenta , a la hora de escoger nombres para los ficheros , las sig uientes reglas :
- El nombre no podrá exceder de 255 letras (14 en versiones UNIX anteriores a la R2.1)
- Utilizar caracteres "normales" (Si bien se puede usar cualquier carácter , desechar aquellos que no sean A-Z /a-z / 0-9) Especial atención merecen aquellos ficheros cuyo primer carácter es el punto " ;." , ya que se consideran "ocultos" en la medida en que determinados comandos , al detectar este hecho , los ignoran.
- Vamos a crear un fichero cuyo contenido sea "hola" :
$ echo "hola" > tonto
$
(... parece que no ha ocurrido nada ... )
$ cat tonto
hola
$
(efectivamente - ahora , el comando "ls" nos da un listado de los ficheros)
$ ls
tonto
$ ls -a
.
..
tonto
.profile
$
Ahora parece que el fichero "tonto" ha criado! Lo que ocurre es que estamos en nuestro directorio de trabajo , y ahí existe desde el principio un fichero "oculto" (el .profile) el cual sólo podemos list ar utilizando la opción "-a" (all) del ls. Además de ésto, aparecen el "punto" (.) y el "punto-punto" , sinónimos de "directorio actual" y "directorio anterior".
Primero , vamos a ver en qué directorio estamos , para lo cual emplearemos el comando "pwd" (Print Working Directory).
$ pwd
/usr/jose
$ ls
tonto
Nuestro directorio de trabajo es "/usr/jose" y tenemos dentro del mismo el fichero "tonto" . Utilizando los conceptos de "." y ".." , podemos ejecutar el comando "ls" pasando los mismos como argumentos :
$ ls . ( listar el contenido del directorio "actual" ; funciona igual que "ls" a secas )
tonto
$ ls ..
jose
paco
antonio
bin
(....)
Estamos diciendo que nos liste el "directorio anterior" , es decir , "/usr" .
Podemos hacer lo mismo cambiando al directorio anterior y ejecutando "ls" : nos cambiamos de directorio usando el comando "cd" (Change Directory) , con direccionamiento absoluto ( indicando todo el camino de subdirec torios desde el directorio "raiz" (/) :
$ cd /usr
$ pwd
/usr
$ ls
jose
paco
antonio
bin
(...)
O bien , cambiando con direccionamiento relativo , y se dice así por ser relativo al directorio donde estamos trabajando :
$ cd .. ( nos cambiamos al directorio anterior , es decir , a "/usr" )
$ pwd
/usr
ls
jose
paco
antonio
bin
(...)
Para volver a nuestro directorio "origen" (Tutoriales directory) , bastaría con ejecutar el comando "cd" a secas ; él vuelve siempre al mismo sitio , en éste caso , a "/usr/jose" estemos dond e estemos.
Si queremos crear un nuevo directorio emplearemos en camino absoluto ó relativo el comando "mkdir" con el argumento "nombre_del_directorio_que_queremos_crear" . Para eliminarlo , ejecutaremos "rmdir" con el mismo argumento :
$ mkdir nuevo
$ ls
tonto
nuevo
Tenemos ahora el fichero de siempre y un directorio que se llama "nuevo". Pero escribiendo "ls" no vemos a simple vista ninguna diferencia ; hay que dar la opción "-F" ó "-l" :
$ ls -F
tonto
nuevo/
$ ls -l
-rw-r--r-- 1 jose sys 4 Mar 1 11:07 tonto
drw-r--r-- 1 jose sys 84 Mar 1 11:07 nuevo
(la letra "d" al principio del listado largo nos indica que se trata de un directorio)
$ cd nuevo
$ pwd
/usr/jose/nuevo
(.. nos hemos cambiado al directorio nuevo ..)
$ cd ..
$ pwd
/usr/jose
( .. Tutorialess vuelto ... )
$ rmdir nuevo
$ ls
tonto
( .. ! ya no está .. )
Tipos de archivos
Si bien UNIX no impone una estructura a ningún fichero , éstos tendrán características comunes dependiendo para lo que sirvan ; podemos agrupar éstos en varios tipos :
- Ejecutables . Nornalmente se trata de programas compilados y contienen código binario ininteligible para la mayoría de los humanos pero no así para la máquina. Ejemplos de éstos ficheros pueden ser l os ficheros "/bin/ls" , "/bin/cat/" ... Todos ellos deben tener activados los permisos de ejecución que más tarde veremos.
- Binarios , englobando dentro de ésta categoría aquellos que son empleados por programas capaces de entender su contenido ( un fichero indexado accesible desde COBOL , por ejemplo ) pero no legibles.
-Texto , correspondientes a aquellos ficheros que contienen registros de caracteres terminados en "nueva línea" y normalmente son legibles. Ejemplo de fichero de texto puede ser el "/etc/motd" , "/etc/pas swd" y cualquiera que haya sido confeccionado con el editor.
- Dispositivo. Cualquier fichero asignado a un dispositivo físico ; normalmente residen a partir del subdirectorio "/dev" y son ficheros de terminales , de particiones de discos , de puertos de impresora .... Dentro de ésta categoría podemos incluir el fichero especial "/dev/null" , el cual tiene como misión el que cualquier cosa que se le mande es desechada.
Cualquier fichero de tipo dispositivo puede tener dos categorías : bien de tipo "caracter" , ó "raw mode" ( lee y escribe "de golpe" ) ó de tipo "bloque" ó "cooked mode" ( lee y escribe a trozos según el tamaño de buffer que tenga asignado).
Si se tienen dudas acerca del tipo de fichero , podemos ejecutar el comando "file <nombre_del_fichero>.
$ file /bin/ls
/bin/ls: ELF 32-bit MSB executable M88000 Version 1
( Ejecutable dependiente del procesador 88000 de Motorola )
$ file /dev/null
character special
Tipos de acceso / permisos
En cualquier sistema multiusuario es preciso que existan métodos que impidan que un determinado usuario pueda modificar ó borrar un fichero confidencial, ó incluso leer su contenido. Asimismo , determinados comandos ( apagar la máquina , por ejemplo ) deben estar permitidos exclusivamente a determinados usuarios , quedando inoperantes para los demás.
En UNIX , éstos métodos radican en que cada fichero tiene un propietario , que es el usuario que creó el fichero. Además , los usuarios están divididos en grupos , asignación que normalmente se lleva a cabo por el Administrador del sistemas , dependiendo de la afinidad de las tareas que realizan. El fichero anterior tiene también un grupo , que es el grupo del usuario que lo ha creado . UNIX distingue tres tipos de acceso - lectura , escr itura y ejecución - sobre el usuario que lo ha creado , los usuarios del mismo grupo que el que lo creó y todos los demás usuarios .
Por todo lo anteriormente dicho , un fichero puede tener cualquier combinación de los tres tipos de acceso sobre tres tipos de usuarios : el creador , los de su grupo y todos los demás ( otros cualquiera que no cumplan nin guna de las dos condiciones anteriores ). Para ver lso permisos de un fichero cualquiera , empleamos el comando "ls -l" (formato largo) :
$ ls -l
-rw-r--r-- 1 jose sys 4 Mar 1 11:07 tonto
drw-r--r-- 1 jose sys 84 Mar 1 11:07 nuevo
Los campos que lo componen son :
-rw-r--r-- : tipo de fichero ( la primera raya ; en el caso de "nuevo" , una "d" significa que es un directorio , y una raya "-" significa fichero normal ) y 3 grupos de tres correspondientes , los tres primeros , a permisos del usuario ; los tres siguientes , a los del grupo , y los tres últimos , a todos los demás.
jose : Usuario que creó el fichero.
sys : Grupo del creador.
4 : Tamaño en bytes.
Mar 1 11:07 : Fecha de creación ó de última modificación.
tonto : Nombre del fichero.
Cada grupo de tres elementos pueden ser "rwx" , que son : permiso para leer , permiso para escribir y permiso para ejecutar. Una raya significa "carece de permiso para (.)" .
Por tanto , el fichero "tonto" puede ser leído y escrito (y , por tanto , borrado) , por el usuario "jose" . Cualquier otro usuario , sea del grupo "sys" ó no , tiene permisos sólo de lectura.
En el caso de directorios , todo igual salvo que en éste caso la "x" de ejecutar no tendría sentido ; por ello , aquí éste carácter significa "el usuario X puede cambiarse a éste directorio" .
Para darle ó quitarle permisos a un fichero ó directorio , se emplea el comando chmod <máscara> <nombre_de_fichero> . La máscara es un número octal de hasta un máximo de cuatro cifra s correspondiente a sumar los siguientes números :
1 : Permiso de ejecución.
2 : Permiso de escritura.
4 : Permiso de lectura.
Por tanto , para darle máximos permisos al fichero "tonto" , ejecutaremos el comando :
$ chmod 777 tonto
$ ls tonto
-rwxrwx rwx 1 jose sys 4 Mar 1 11:07 tonto
al darle tres sietes ( 1 + 2 + 4 = 7 ) , el fichero se queda con la máscara rwx.
Si queremos sólo lectura para creador , grupo y otros , el comando sería "chmod 444 tonto" y así sucesivamente.
En determinadas ocasiones puede ser necesario cambiar de propietario a un fichero ó directorio ; para ello utilizamos el comando "chown <nombre_del_propietario> <fichero>". Igual pasa con los grupos ; el com ando es "chgrp <nombre_del_grupo> <fichero>"
$ chown juan tonto
$ ls tonto
-rwxrwxrwx 1 juan sys 4 Mar 1 11:07 tonto
$ chgrp conta tonto
$ ls tonto
-rwxrwxrwx 1 jose conta 4 Mar 1 11:07 tonto
Pero , cuando creamos un fichero , que permisos coge por defecto ? El valor de "umask" que tenemos asignado en la sesión complementado con 666 (rw-rw-rw). El comando "umask" a secas nos devuelve dicho valor :< /P>
$ umask
022
En éste caso , 666-022 = 644 , es decir , cualquier fichero que creemos con un editor ó con otros comandos serán creados con permisos 644 (rw-r--r--) .
Para cambiar la máscara , usamos el comando umask con la nueva máscara que le quieremos dar :
$ umask 000
En cuyo caso , todos los ficheros a partir del ése momento , y hasta que finalice la sesión , serán creados con "barra libre" para todo el mundo.
Manipulación de ficheros
Podemos examinar una primera tanda de comandos hermanos , que son los siguientes:
cp <fichero a copiar> <fichero nuevo>
mv <fichero a mover> <fichero nuevo>
ln <fichero a lincar> <fichero nuevo>
"cp" copia el primer argumento al segundo. Valen caminos relativos , es decir
$ cp tonto /tmp
$ cp tonto /tmp/nuevo
$ cp /Tutoriales/jose/tonto /tmp/tonto
producirían el mismo resultado ; copian el fichero desde el directorio actual al /tmp.
El comando "mv" se comporta igual salvo que el fichero original desaparece ; es similar al "RENAME" de MS-DOS.
El comando "ln" hace que pueda existir un contenido con varios nombres :
$ ln tonto tonto1
$ ls -l tonto*
-rw-r--r-- 2 jose sys 4 Mar 1 11:07 tonto
-rw-r--r-- 2 jose sys 4 Mar 1 11:07 tonto1
ahora "tonto" y "tonto1" hacen referencia al mismo contenido ; por tanto , cualquier cambio que realicemos en uno se verá en el otro, y si borramos ahora el fichero "tonto" , quedará el " tonto1" con el mismo contenido , que sólo será borrado al borrar el último de los ficheros lincados a su contenido.
Debido a la naturaleza del propio comando , no se pueden hacer enlaces (links) entre ficheros ó directorios situados en sistemas de ficheros distintos.
Para éste último caso , existe una opción del comando "ln" , el "ln -s" (link simbólico) ; crea un enlace simbólico entre dos entidades pero sólo como una referencia ; en &e acute;ste caso si el fichero original se borra , el link queda suelto y el contenido irrecuperable.
El comando "rm" borra ficheros y directorios ; para borrar el tonto1 que ya no necesitamos , podemos escribir :
$ rm tonto1
Valen metacaracteres . Si escribimos
$ rm *
nos borramos TODO lo que haya en el "directorio actual" SIN pedir confirmación.
Una opción de rm lo hace más seguro al pedirla :
$ rm -i tonto1
tonto1 ? y
La opción más peligrosa puede ser la "-r" (recursivo) que borra ficheros y directorios a partir del directorio de arranque. Por tanto , ojo con poner
$ rm -r .
si estamos en el directorio "raíz" y tenemos privilegios , podemos borrar el contenido de TODOS LOS DISCOS
Por último , veremos un comando de utilidad simililar a "ls" pero con mas opciones ; el comando "find" muestra en pantalla directorios y/o ficheros atendiendo a opciones determinadas . Si bien la sintaxis es d emasiado extensa para estudiarla en su totalidad , conviene ver algunos ejemplos :
- El comando toma como argumentos declaraciones en formato "find <directorio base> <opciones> -print" . Por tanto , para sacar en pantalla todos los ficheros y directorios del disco , valdría con :
find / -print
- Si se desean sólo ficheros ó sólo directorios :
find / -type f -print
ó
find / -type d -print
respectivamente.
- Buscar todos los ficheros y directorios que tengan más de 30 días de antigüedad :
find / -atime +30 -print
El resto de las opciones sirve para buscar ficheros con determinados permisos , mayores ó menores que un determinado tamaño ....
Directorios del sistema
Si bien la estructura de los directorios varía entre versiones y dialectos de UNIX , podemos mencionar algunos de los más representativos :
- /bin,/usr/bin,/usr/sbin,/usr/ucb: Directorios de programas ejecutables . Es aquí donde se mantienen la mayoría de los comandos (/bin/ls , /bin/vi , /usr/bin/chmod ... )
- /etc : Programas y ficheros diversos : aquí residen la mayoría de los archivos de configuración y las shell-scripts de arranque y parada del equipo.
- /tmp,/usr/tmp,/var/tmp : Directorios "temporales" ; el propio sistema operativo los usa como almacenamiento intermedio en muchas de sus tareas ; normalmente , todo el contenido de éstos directorios se borra al apagar el equipo.
- /Tutoriales,/usr/acct,/var/acct : Directorios de usuarios.
- /var/adm,/usr/adm : Directorios de administración : programas de administrador , ficheros con informaciones de la paquetería instalada y demás.
- /usr/log, /var/log : Directorios para ficheros de "log" de sistemas y de programas . Normalmente, existirá un fichero "console" con toda la información que se desvía a la consola del sistema , y varios ficheros informativos , de advertencia y de errores del sistema.
- /lib,/usr/lib : Directorios de archivos de librería.
- /usr/spool : Directorios de spool de ficheros de impresión (/usr/spool/lp) , de comunicaciones (/usr/spool/uucp) y demás.
- /usr/mail : En éste directorio se halla el correo de todos los usuarios.
- /usr/preserve,/var/preserve : Aquí se guardan todas las copias de ficheros incompletamente terminados por los editores de UNIX.
- /dev : Directorio de ficheros de dispositivos.
- /usr/games : Juegos. Casi nunca están instalados.
Resumen del editor de pantalla "vi" .
Vi es un editor de pantalla completa creado en el UNIX de Berkeley y extendido más tarde a todos los demás dialectos.
La ventaja de éste editor radica en su compatibilidad con el resto de herramientas de edición UNIX .
Vi contempla , una vez iniciada la sesión con él , dos modos :
- Modo comando : es el modo en el que arranca por defecto. Vale para dar comandos tales como : leer un fichero , escribir un fichero , búsqueda ó sustitución de caracteres dentro del texto actual ...
Este modo es al que se vuelve siempre , pulsando la tecla <ESC>.
- Modo insercion/reemplazo : es el que se usa para escribir caracteres . Se entra a éste modo desde el modo comando pulsando la letra " i ".
Desde el modo comando , podemos pasar también a modo inserción escribiendo las siguientes letras :
- i : Pasar a modo inserción , delante de la posición del cursor.
- a: Igual , pero detrás de la posición del cursor.
- I : Pasar a modo inserción ,pero empezando a insertar al principio de la línea donde se esté.
- A : Igual , pero empezando al final de la línea donde se esté.
- o : Pasar a modo inserción, pero abriendo una línea nueva debajo de donde se esté.
- O : Igual , pero la línea nueva se abre arriba.
- <ESC>: Pasar a modo comando.
- Backspace: Borra la última letra escrita.
- <Control>v: Identifica el carácter que vamos a escibir a continuación como un caracter especial , es decir , un escape , ó salto de hoja (^L) , ó cualquier carácter ascii entre el 1 y el 31. ( 1=^A , 2=^B .....).
Pasando a modo comando , podemos emplear las siguientes secuencias para movernos por el texto :
- ^: Ir al principio de la línea.
- $: Ir al final de la línea.
- l,h: Izquierda / derecha.
- j,k: Abajo / Arriba.
- ^F (Control + F ): Una pantalla adelante.
- ^B (Control + B ): Una pantalla atrás.
- ^G (Control +G): Enseña el número de línea donde estamos posicionados.
- 1G: Al principio del todo.
- G: Al final del todo.
- /<cadena>: Busca <cadena> desde la línea actual hasta el final del texto.
- / Sigue buscando más ocurrencias de la cadena.
-?<cadena>: Busca <cadena> desde la línea actual para atrás.
-? Sigue buscando más ocurrencias , para atrás.
-ZZ Grabar y salir.
-dd: Borrar la línea donde se esté.
-J: Juntar la línea donde se esté y la de abajo.
-r: Reemplaza una sola letra.
-R: Reemplaza todo hasta que se pulse <ESC> .
-yy: yank/yank: Marca la línea actual.
-p: Copia la línea marcada despues del cursor.
-P: Copia la línea marcada antes del cursor.
-.: Repite el último cambio.
-u Undo (anula el último cambio)
-U Undo , pero en la línea actual.
Ordenes de "dos puntos" : Al pulsar en modo comando el carácter ":" , el cursor se baja a la última linea y el editor saca los dos puntos en espera de que le demos algún comando de estos. Salimos de aquí pulsando <ESC> .Algunos son :
:wq! (write/quit)Grabar y salir.
:w! <nombre_fichero> (write) Graba el texto en <nombre_fichero>.
:r <nombre_fichero> (read) Incluye el fichero como parte del texto en edición.
:!<comando> Ejecutar <comando> . Vuelve al terminar el comando.
:<número de línea> Ir a <número de línea>.
:q! (quit) Salir sin grabar.
:se nu
:se nonu Numera las líneas.(set number,set nonumber-pone y quita).
:1,5de Borra desde la 1 a la 5.
:1,5co20 Copia desde la 1 a la 5 a partir de la línea 20.
:1,5mo20 Igual, pero mueve.(desaparece desde la línea 1 a la 5).
:g/XXX/sYYY/g Cambia en todo el texto XXX por YYY.
Hay muchísimos más comandos , pero para ir tirando , con éstos son suficientes.
Valora este capítulo:
Autor y licencia de 'Curso de Unix de la A a la Z - Órdenes Básicas'
|
Opiniona sobre 'Curso de Unix de la A a la Z - Órdenes Básicas' (5)
Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.
Opina sobre este curso gratis |
Wikis relacionados con 'Curso de Unix de la A a la Z - Órdenes Básicas'
Es muy fácil crear archivos en el sistema operativo UNIX. Por lo tanto, los usuarios...
Más »
Aqui veremos la relacion entre la transformada-z y el plano complejo. especificamente, la creacion de...
Más »
A lo largo de este trabajo se va a intentar hacer un repaso de los...
Más »
Manual de Referencia Rápida de Unix.
Ken Thompson y Dennis Ritchie decidieron esbozar un sistema operativo que supliera las necesidades de...
Más »

