Aula Virtual
Bienvenid@s alumn@s les doy la más cordial bienvenida a Aula Virtual, este es un espacio diseñado para ti, en el que encontrarás información relacionada a los módulos que imparto, que espero te sean de gran utilidad.
jueves, 11 de febrero de 2016
Historia breve del lenguaje C ++
Historia breve del lenguaje C++
La imagen anterior presenta el árbol genealógico del lenguaje de programación C++.
El desarrollo de este lenguaje no puede ser mejor relatado que por su propio creador:
El desarrollo de este lenguaje no puede ser mejor relatado que por su propio creador:
Bjarne Stroustrup.
Stroustrup señala que la primera influencia de C++ proviene del lenguaje Fortran
(FORmula TRANslation), desarrollado inicialmente en 1956 y considerado el primer
lenguaje de programación de alto nivel, es decir, el primer paso dado hacia la
implementación de los programas en el dominio del problema.i,2 Fortran ya cuenta
con arreglos, ciclos de repetición, una librería de funciones matemáticas,
mecanismos de entrada/salida, funciones definidas por el usuario y, entre las
cuestiones más importantes logradas con su desarrollo, se descubrió la estructura
básica de un compilador así como la notación Backus-Naur Form (BNF) para
expresar la gramática de un lenguaje de programación.
El primero de los lenguajes de programación que empleó la notación BNF, fue
Algol60. El lenguaje algorítmico (ALGOrithmic Language), Algol, fue desarrollado por
un grupo de gente auspiciada por la Federación Internacional de Procesamiento de
Información (IFIP – International Federation of Information Processing), el cual
estableció los fundamentos para los lenguajes de programación modernos, incluido
C++, con las características implementadas en Algol: tipos de datos en tiempo de
compilación, ámbito léxico, uso de una gramática para definir el propio lenguaje,
separación de las reglas sintácticas de las semánticas así como de la definición del
lenguaje con respecto a su implementación y, al final pero no menos importante, el
soporte para la programación estructurada. Aunque Algol no tuvo gran éxito, por ser
demasiado diferente a lo que existía, fue un parteaguas que estableció las bases para
el futuro de la programación.
Siguiendo el linaje de Algol, a mediados de la década de los 60’s se desarrolló el
lenguaje Simula, como un superconjunto de Algol60 y como el primer lenguaje de
programación en implementar los conceptos que hoy definen a la POO: la
encapsulación, la herencia y el polimorfismo.iii Simula acuñó los términos clase, para
denominar a un tipo definido por el usuario; y virtual, para denotar una función que
puede ser sobrescrita e invocada a través de una clase base o padre. Así, un
programa se convierte en un conjunto de objetos interactuando entre ellos y no en
un monolito de código.
A través de otra derivación de Algol, diferente a la que originó Simula, llega la
principal influencia del lenguaje C++, el lenguaje de programación C, conocido
también como su lenguaje padre, por la cantidad tan grande de características que
heredó de él.
El origen de C proviene del proyecto CPL que nunca se completó en Inglaterra;
del lenguaje BCPL (CPL Básico – Basic CPL) que Martin Richards creó cuando visitó
el Instituto Tecnológico de Massachusetts, en Estados Unidos, proveniente de la
Universidad de Cambridge; y de un lenguaje interpretado denominado B, creado por
Ken Thompson.
CPL fue un proyecto conjunto entre la Universidad de Cambridge y el Colegio
Imperial en Londres. Como el proyecto se inició en Cambridge, el significado del
nombre, “C”, correspondía oficialmente a “Cambridge”. Luego entró al proyecto el
Colegio Imperial y el significado cambió a “Combinado”. Se supone que en realidad
su significado siempre fue “Christopher”, derivado del nombre del diseñador
principal de CPL, Christopher Strachey.
Dennis Ritchie diseñó e implementó el lenguaje de programación C en el Centro
de Investigación en Ciencias Computacionales de los Laboratorios Bell, en Murray
Hill, Nueva Jersey. Su trabajo fue un esfuerzo realizado como una clara
contraposición a la costumbre establecida en esa época de que el software de
sistemasv debía programarse en lenguaje ensamblador, generando la imposibilidad
de ser portable. Por tal motivo, Ken Thompson y el propio Dennis Ritchie
desarrollaron más tarde el sistema operativo Unix, programándolo exclusivamente en
C, incluidas las herramientas necesarias para su funcionamiento, como el
compilador. Unix es la influencia más grande conocida en el tema de los sistemas
operativos y, unido a él, el lenguaje C es el referente primario en el área de los
lenguajes de programación. Más ahora que el sistema operativo GNU/Linux,
derivado directo de Unix y también programado en C, ha tenido un repunte
impresionante, respaldado por los movimientos de software abierto y libre.
La belleza del lenguaje C radica en que es deliberadamente simple, apegado a
los aspectos fundamentales del hardware, esto es, las características del lenguaje
mapean directamente a las características de hardware.
Dennis Ritchie describió a C como “un lenguaje fuertemente tipado, pero
débilmente verificado”; esto es, C es muy estricto en tiempo de compilación, pero
muy débil o demasiado permisivo en tiempo de ejecución. Lo anterior no es un
efecto premeditado del diseño del lenguaje, se debe a las características tan
restrictivas que en esos tiempos tenía el hardware.
Finalmente, Bjarne Stroustrup diseñó e implementó el lenguaje de programación
C++ en el mismo Centro de Investigación en Ciencias Computacionales de los
Laboratorios Bell, en Murray Hill, donde nació el lenguaje C (y a unos cuantos pasos
de la oficina de Dennis Ritchie). C++ es un lenguaje de programación de propósitos
múltiples, con una cierta orientación hacia la programación de sistemas, que es un
mejor C y que soporta la abstracción de datos, la POO y la programación genérica.
Conceptos que, en los tiempos en que nació C++, se consideraban demasiado costosos en cuanto a recursos de cómputo, como para usarlos en el mundo real, o demasiado complicados para que los programadores ordinarios los aprendieran.
El trabajo de desarrollo de C++ inició en 1979, generando una versión comercial
en 1985. Posteriormente, Stroustrup siguió desarrollando el lenguaje con ayuda de
sus compañeros de los laboratorios Bell, y de gente externa a estos, hasta que
comenzó su estandarización oficial en 1990. A partir de ahí y teniendo como líder
del esfuerzo al propio Stroustrup, la definición de C++ la desarrolló el Instituto
Nacional Estadounidense de Estándares (ANSI – American National Standards
Institute) y, desde 1991, la Organización Internacional de Estándares (ISO –
International Organization for Standardization). Bjarne Stroustrup sigue dirigiendo el
grupo internacional de estandarización a cargo de diseñar e implementar las
características nuevas del lenguaje. El primer estándar internacional se ratificó en
1998 (denominado C++98) y, el segundo, en 2011 (denominado C++11)
El desarrollo más significativo del lenguaje C++, después de su primera década
de crecimiento, es la Librería Estándar de Plantillas (STL – Standard Template Library)
creada por Alexander Stepanov. La STL es la librería estándar del lenguaje para
manejo de contenedores (estructuras de datos) y los algoritmos que las manipulan.
El “C con clases” mostrado en la Figura 1, fue una síntesis inicial de ideas
tomadas de los lenguajes C y Simula, que dio paso a su sucesor, C++.
Las fortalezas principales que han hecho de C y C++ lo que hoy son, no son ni la
elegancia, ni las características avanzadas; son su flexibilidad, su rendimiento y su
estabilidad. En el mundo siempre cambiante de los sistemas de software, estas son
tres de las características más codiciadas.
Para finalizar este apartado, cabe señalar que el lector interesado en profundizar
en la descripción, el diseño, la evolución, el futuro y la propia programación en este
lenguaje puede recurrir a The C++ Programming Language,3 al estándar oficial C++11 de la ISO,4 a The Design and Evolution of C++,5 a la página web del propio
Bjarne Stroustrup6 y a Programming and Practice – Principles and Practice Using
C++.
Metodología para la construcción de programas
METODOLOGÍA PARA LA CONSTRUCCIÓN DE PROGRAMAS
Nota: Recuerde que estos son apuntes muy simplificados que deberá completar con la bibliografía recomendada.
Presentaremos de forma muy general los principales pasos que se deben seguir para resolver problemas aplicando técnicas de programación. Esta metodología será desarrollada a lo largo de todo el curso, en la medida que se estudien las restantes unidades del mismo.
1. FORMULACIÓN Y ANÁLISIS DEL PROBLEMA
Consiste en entender de qué se trata el problema planteado y esbozar su posible solución, concluyendo con una clara definición de tres aspectos: 1º qué es lo que nos piden, es decir, definición del resultado o solución deseada (para qué). 2º cómo obtener lo que nos piden (qué hacer). 3º qué necesitamos para obtener los resultados pedidos (con qué). Esto último nos facilitará la construcción de lo que denominaremos Especificación Funcional.
1.1.- Especificación Funcional: Consiste en determinar las funciones que se van a realizar (qué hacer) y sus respectivas entradas (con qué) y salidas (para qué):
Donde: entrada son los argumentos (variables o constantes) que se requieren para resolver un problema, salida son los resultados (argumentos) que se desean obtener una vez resuelto el problema y proceso es el procedimiento(s) u operación(es) que deben efectuarse sobre las entradas para obtener las salidas deseadas.
1.2.- Especificación de los Argumentos o Parámetros: Consiste en la documentación de los argumentos o parámetros (sean estos de entrada, salida o intermedios) requeridos en la solución del problema, mediante la elaboración de una tabla que contemple los siguientes aspectos:
1.3.- Establecimiento de Restricciones y Atributos: Consiste en determinar bajo qué restricciones se ha de operar y cuales son las medidas de rendimiento y calidad que debe tener el sistema (programa). Este aspecto no se realizará en este curso dada la simplicidad de los problemas tratados.
2. DISEÑO.
Consiste en diseñar cómo hace el programa la tarea solicitada. En forma general consiste en dividir el programa en subprogramas y cada subprograma en módulos.
El criterio de descomposición más utilizado es el de tipo funcional, el cual produce una estructura jerárquica en la que cada módulo ejecuta una o más funciones y para cada módulo se produce una especificación de programa o módulo, la cual contiene lo siguiente:
Nombre del Programa o Módulo.
Función que desarrolla.
Parámetros o Argumentos.
Parámetros o Argumentos de Entrada.
Parámetros o Argumentos de Salida.
Estructura de Datos Requerida.
Lenguaje de Programación.
Algoritmo
Donde ALGORITMO es un conjunto finito de pasos en secuencia que indican como se resuelve un determinado problema.
Propiedades de los algoritmos estructurales:
a) Número finito de pasos sin ambigüedades.
b) Numeración de cada paso en orden secuencial
c) La acción a realizar se indica con un verbo o con un gráfico.
d) Condicionado a las estructuras básicas de la programación estructurada.
e) Eficiente (menor número de pasos pero lo más claro posible)
Herramientas para diseñar algoritmos:
a) Diagramas de Flujo: representación gráfica de un algoritmo.
b) Pseudocódigo: lenguaje de especificación de algoritmos (el algoritmo se representa mediante palabras similares al inglés o al español, para facilitar tanto la lectura como la escritura de programas.
Los símbolos o la notación para elaborar, respectivamente, los diagramas de flujo o los pseudocódigos, serán indicados en los siguientes apuntes, en la medida que se estudie las correspondientes estructuras de programación.
3. CODIFICACIÓN.
Es la escritura en un lenguaje de programación de la representación del algoritmo desarrollado en la etapa de diseño. El resultado de la codificación es un programa fuente.
4. COMPILACIÓN Y EJECUCIÓN.
Es el proceso de traducción del programa fuente al lenguaje de máquina. Este proceso se realiza con el compilador y el Sistema Operativo. El resultado, si no hay errores, es la obtención del programa objeto que todavía no es ejecutable directamente. Luego, mediante el Sistema Operativo se realiza la carga del programa objeto con las librerías del programa compilador, el resultado es un programa ejecutable. Cuando el programa ejecutable se ha creado, se puede ejecutar el programa desde el Sistema Operativo generalmente con sólo teclear su nombre. Si no hay errores se obtiene como salida los resultados del programa.
5. VERIFICACIÓN Y DEPURACIÓN.
Es el proceso de probar que el programa trabaje correctamente y cumpla con los requerimientos del usuario.
VERIFICAR: es el proceso de ejecución del programa con una amplia variedad de datos de entrada (test o pruebas) que determinarán si el programa tiene errores.
DEPURAR: es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores.
TIPOS DE ERRORES:
a) Errores de compilación: suelen ser errores de sintaxis.
b) Errores de ejecución: suelen ser instrucciones que la computadora comprende pero que no puede ejecutar. Ejemplo: divisiones por cero, raíces negativas, etc.
c) Errores de lógica: se producen en la lógica del programa, en el diseño del algoritmo. Se detectan porque los resultados son incorrectos.
6. DOCUMENTACIÓN Y MANTENIMIENTO.
Consta de la descripción de los pasos a dar en el proceso de resolución de un problema. La documentación de un programa puede ser:
Interna: contenida en las líneas de comentarios del propio programa.
Externa: Incluye el análisis, la especificación del programa, el algoritmo, los manuales de los usuarios, etc.
El mantenimiento consiste en la actualización de los programas con los cambios requeridos por el usuario o corrección de posibles errores futuros.
Gráficamente la metodología puede ilustrarse de la siguiente manera:
sábado, 31 de octubre de 2015
Alternativa
ALTERNATIVA DEL SAE ARCHIVO DE EXCEL
Debido a los problemas que se están presentando al generar el archivo de Excel para la evaluación en el SAE, se les proporciona la siguiente alternativa:
1. Ingresar en la dirección:
http://sae.conalep.edu.mx/docente/
http://sae.conalep.edu.mx/docente/
2. Damos clic en ejecutar para instalar los archivos necesarios, una vez terminada la instalación damos click en iniciar
3. Ingresar la cuenta del docente y contraseña
4. Una vez que se ingresó al sistema, hay que indicar el modelo y tipo de acreditación o calendario, dar click en BUSCAR (los que parecen binoculares) para localizar sus grupos.
5. Dar clic en botón “generar archivo de Excel “
6. Tambien podemos subir el archivo con las evaluaciones en la opcion de "importar archivo de Excel"
Atte.
Mtra. Reyna Tunales
martes, 19 de noviembre de 2013
Ubuntu
1. INTRODUCCIÓN
Un intérprete de comandos es un programa que toma la entrada del usuario, por ejemplo las órdenes que teclea, y la traduce a instrucciones. Podemos compararlo con el COMMAND.COM de MS-DOS.
Para pasar al modo texto (intérprete de comandos)
desde el modo gráfico hemos de pulsar las combinaciónes: Ctrl + Alt + F1 o bien
con: F2 F3 F4 F5 F6
Esto hace que el sistema salga del modo gráfico y
acceda a alguna de las seis consolas virtuales de Linux, a las cuales también
se puede acceder cuando se arranca en modo de texto.
Para volver al modo gráfico hay que presionar Ctrl
+ Alt + F7 o Ctrl + Alt + F8 (Según la sesión en modo gráfico a la que deseemos
regresar).
Además de ser un intérprete interactivo de los comandos que tecleamos, el Shell es también un lenguaje de programación, el cual nos permite escribir guiones que permiten juntar varias órdenes en un fichero. Similar a los ficheros batch de MS-DOS.
Enlaces de interés:
GNU Emacs, Manuales Online
Una introducción rápida a GNU Emacs
2. NOCIONES BÁSICAS
En una terminal:
Las aplicaciones con nombres compuestos se escriben
con guión entre las palabras (ej. compizconfig-settings-manager).
Para los espacios en blanco se pone un guión
inferior (ej. nombre_archivo)
Cuando queremos poner varios comandos seguidos,
para ejecutarlos a la vez, dejamos un espacio entre ellos, nunca una coma (ej. avidemux
k3b kde-i18n-es k3b-i18n).
Cuando tecleamos una orden, el intérprete de
comandos sigue una serie de pasos:
1. Busca el nombre de la orden y comprueba si es una orden interna.
2. Comprueba si la orden es un alias, es decir, un nombre sustitutorio de otra orden.
3. Si no se cumple ninguno de los casos anteriores, busca el programa correspondiente y lo ejecuta.
4. Si el intérprete de comandos no puede encontrar la orden que hemos tecleado, muestra un mensaje de error.
El formato general de una orden en Linux es:
1. Busca el nombre de la orden y comprueba si es una orden interna.
2. Comprueba si la orden es un alias, es decir, un nombre sustitutorio de otra orden.
3. Si no se cumple ninguno de los casos anteriores, busca el programa correspondiente y lo ejecuta.
4. Si el intérprete de comandos no puede encontrar la orden que hemos tecleado, muestra un mensaje de error.
El formato general de una orden en Linux es:
comando [-opciones] [argumentos]
A la hora de introducir los comandos hay que tener
en cuenta las siguientes características:
• Los comandos hay que teclearlos exactamente.
• Las letras mayúsculas y minúsculas se consideran como diferentes.
• En su forma más habitual, el sistema operativo utiliza un signo de $ como prompt para indicar que está preparado para aceptar comandos, aunque este carácter puede ser fácilmente sustituido por otro u otros elegidos por el usuario. En el caso de que el usuario acceda como administrador este signo se sustituye por #.
• Cuando sea necesario introducir el nombre de un fichero o directorio como argumento a un comando, Linux, permite escribir las primeras letras del mismo y realiza un autorrellenado al presionar la tecla del tabulador. Si no puede distinguir entre diversos casos rellenará hasta el punto en el que se diferencien.
• Los comandos hay que teclearlos exactamente.
• Las letras mayúsculas y minúsculas se consideran como diferentes.
• En su forma más habitual, el sistema operativo utiliza un signo de $ como prompt para indicar que está preparado para aceptar comandos, aunque este carácter puede ser fácilmente sustituido por otro u otros elegidos por el usuario. En el caso de que el usuario acceda como administrador este signo se sustituye por #.
• Cuando sea necesario introducir el nombre de un fichero o directorio como argumento a un comando, Linux, permite escribir las primeras letras del mismo y realiza un autorrellenado al presionar la tecla del tabulador. Si no puede distinguir entre diversos casos rellenará hasta el punto en el que se diferencien.
La Terminal guarda un HISTORIAL y podéis ver
cómo funciona en:
4. COMANDOS BÁSICOS
ls -> list:
listar. Nos muestra el contenido de la carpeta que le indiquemos después.
Es el primer comando que todo linuxero debe
aprender. Por ejemplo. Si queremos que nos muestre lo que contiene /etc:
$ ls /etc
Si no ponemos nada interpretará que lo que queremos
ver es el contenido de la carpeta donde estamos actualmente:
$ ls
Además acepta ciertos argumentos que pueden ser
interesantes. Para mostrar todos los archivos y carpetas, incluyendo los
ocultos:
$ ls -a
Para mostrar los archivos y carpetas junto con los
derechos que tiene, lo que ocupa, etc:
$ ls -l
Además se pueden solapar los argumentos. Si
quisiéramos mostrar los archivos de la misma forma que antes, pero que muestre
también los ocultos:
$ ls -la
cd ->
change directory: cambiar directorio.
Podemos usarlo con rutas absolutas o relativas. En
las absolutas le indicamos toda la ruta desde la raíz (/). Por ejemplo, estemos
donde estemos, si escribimos en consola…
$ cd /etc/apt
…nos llevará a esa carpeta directamente. Del mismo
modo si escribimos…
$ cd /
…nos mandará a la raíz del sistema de ficheros.
Las rutas relativas son relativas a algo, y ese algo es la carpeta donde estemos actualmente. Imaginad que estamos en /home y queremos ir a una carpeta que se llama temporal dentro de vuestra carpeta personal. Con escribir…
Las rutas relativas son relativas a algo, y ese algo es la carpeta donde estemos actualmente. Imaginad que estamos en /home y queremos ir a una carpeta que se llama temporal dentro de vuestra carpeta personal. Con escribir…
$ cd tu_carpeta/temporal
…nos situará allí. Como véis hemos obviado el /home
inicial ya que si no lo introducimos toma como referencia el directorio donde
estamos, que es ese.
¿Y qué sucede si escribimos tan sólo…
¿Y qué sucede si escribimos tan sólo…
$ cd
Sí, sólo “cd”. Esto lo que hace es que te lleva a
tu carpeta personal directamente y estemos donde estemos. Es algo realmente muy
práctico, muy simple y que no todos conocen.
mkdir -> make
directory: hacer directorio. Crea una carpeta con el nombre que le indiquemos.
Nuevamente podemos usar rutas absolutas y
relativas. Podemos indicarle toda la ruta que le precede al directorio que
queremos crear, o si estamos ya en la carpeta que lo va a contener basta con
poner tan sólo el nombre:
$ mkdir /home/tu_cuenta/pepino
Si ya estamos en /home/tu_cuenta…
$ mkdir pepino
rm ->
remove: borrar. Borra el archivo o la carpeta que le indiquemos.
Como antes se puede indicar la ruta completa o el
nombre del archivo. Esto a partir de ahora lo vamos a obviar, creo que ya ha
quedado claro con los dos comandos anteriores.
Para borrar un archivo:
Para borrar un archivo:
$ rm nombre_archivo
Para borrar una carpeta vacía:
$ rm nombre_carpeta
Para borrar una carpeta que contiene archivos y/o
otras carpetas que pueden incluso contener más:
$ rm -r nombre_carpeta
Otras opciones: “-f” no te pide una confirmación
para eliminar o “-v” va mostrando lo que va borrando.
Para borrar un directorio:
Para borrar un directorio:
$ rmdir nombre_directorio
cp -> copy:
copiar. Copia el archivo indicado donde le digamos.
Aquí podemos también jugar con las rutas, tanto
para el fichero origen, como en el del destino. También podéis poner el nombre
que le queréis poner a la copia. Por ejemplo, si estuviéramos en /etc/X11 y
quisiéramos hacer una copia de seguridad de xorg.conf en nuestra carpeta
personal:
$ cp xorg.conf /home/tu_carpeta/xorg.conf.backup
mv -> move:
mover.
Es igual que el anterior, sólo que en lugar de
hacer una copia, mueve directamente el archivo con el nombre que le indiquemos,
puede ser otro distinto al original:
$ mv /etc/pepino.html
/home/tu_carpeta/ese_pepino.html
Otro uso muy práctico que se le puede dar es para
renombrar un archivo. Basta con indicar el nuevo nombre en el segundo argumento
con la misma ruta del primero. En este ejemplo suponemos que ya estamos en la
carpeta que lo contiene:
$ mv pepino.html ese_pepino.html
find -> find:
encontrar. Busca el archivo o carpeta que le indiques:
$ find / -name pepino
El comando anterior buscaría en todos los sitios
las carpetas y archivos que se llamen pepino. Si tuviéramos la seguridad de que
se encuentra en /var por ejemplo, se lo indicaríamos:
$ find /var -name pepino
Si no estamos muy seguros del nombre podemos
indicárselo con comodines. Supongamos que el nombre de lo que buscamos contiene
“pepi”, en la misma carpeta de antes:
$ find /var -name *pepi*
Tiene otras opciones. Por ejemplo podemos decirle
que encuentre los archivos/carpetas de más de 1500 KB:
$ find / -size +1500
O los archivos/carpetas contienen el nombre “pepi”
y tienen menos de 1000 KB:
$ find / -name *pepi* -size -1000
clear -> clear: despejar. Limpia la pantalla/consola quedándola como si acabáramos de abrirla.
$ clear
ps ->
process status: estado de los procesos.
Nos muestra lo que queramos saber de los procesos
que están corriendo en nuestro sistema. Cada proceso está identificado con un
número llamado PID. Si hacemos…
$ ps -A
…nos mostrará un listado de todos los procesos, su
PID a la izquierda y su nombre a la derecha. Si queremos más información:
$ ps aux
kill -> kill:
matar. Elimina el proceso que le indiquemos con su PID:
$ kill
En ocasiones el proceso no “muere” del todo, pero
se le puede forzar al sistema para que lo mate con seguridad del siguiente
modo:
$ kill -9
sudo ->
super-user do: hacer como superusuario.
La cuenta de usuario en Ubuntu es relativamente
normal. Tiene derechos de administrador a medias. Me explico, los tiene, pero
cada vez que se haga algo importante y de riesgo para el sistema, hay que
hacerlo mediante el prefijo “sudo” y escribiendo después la contraseña.
Por ejemplo, algo que hemos hecho muchas veces en los tutoriales es hacer una copia de seguridad del fichero xorg.conf. Éste está localizado en la carpeta /etc/X11 y ahí ningún usuario puede hacer modificaciones o borrar nada si no es el administrador o tiene derechos como tal, gracias a sudo. Por eso hacíamos siempre:
Por ejemplo, algo que hemos hecho muchas veces en los tutoriales es hacer una copia de seguridad del fichero xorg.conf. Éste está localizado en la carpeta /etc/X11 y ahí ningún usuario puede hacer modificaciones o borrar nada si no es el administrador o tiene derechos como tal, gracias a sudo. Por eso hacíamos siempre:
$ sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf
Siempre que necesitemos hacer un apt-get/aptitude
update o install y acciones de este tipo, tendremos que poner antes el “sudo”
passwd ->
password: contraseña.
Con este comando podremos cambiar la contraseña de
nuestra cuenta. Primero nos pedirá la contraseña actual como medida de
seguridad. Después nos pedirá que introduzcamos dos veces seguidas la nueva
contraseña.
$ passwd
su ->
super-user: superusuario. (aunque el comando su suele relacionarse con
"super user" realmente parece ser que viene de "switch
user" o "substitute user")
Mediante su podremos loguearnos como superusuario.
Tras escribirlo nos pedirá la contraseña de root y estaremos como
administrador. Podremos hacer todo lo que queramos.
$ su
Este comando también nos permite hacer login con
otra cuenta distinta. Por ejemplo, imaginemos que tenemos otra cuenta, además
de root y la nuestra, llamada “invitado”. Para hacer login como tal bastaría
con poner:
$ su invitado
y después escribir la contraseña de esa cuenta.
sudo passwd ->
podréis cambiar la contraseña de root (la del super-usuario).
No es un comando propiamente dicho (es la unión de
2) pero es interesante que lo conozcáis.
$ sudo passwd
apt ->
advanced packets tool: herramienta avanzada de paquetes.
Es uno de los comandos más útiles que se han
desarrollado en los sistemas GNU/Linux debian o basados en esta distro. Nos
permite comprobar actualizaciones, actualizar todo el sistema. También nos
ofrece funcionalidad para buscar, descargar e instalar paquetes con una sola
orden.
Tenemos variantes, las más usadas son las siguientes:
Tenemos variantes, las más usadas son las siguientes:
$ apt-cache search nombre_paquete
Busca nombre_paquete para ver si existe literal o
aproximadamente ofreciéndonos los paquetes que pudieran ser en caso de que
hayamos puesto un nombre aproximado.
$ apt-get update
Actualiza los repositorios que son los que
contienen los paquetes. Los repositorios son como las direcciones que contienen
nuestros paquetes. apt-get update lo que hace es actualizar el listado de todos
esos paquetes, con la dirección de dónde obtenerlos para que a la hora de hacer
la búsqueda y su posterior descarga sea más rápida haciéndolo en nuestro
ordenador.
$ apt-get upgrade
Actualiza nuestro sistema con todas las posibles
actualizaciones que pudiera haber. La actualización no se realiza sólo sobre el
propio sistema operativo, sino también sobre las aplicaciones que estén
contenidas en los repositorios. Una útil forma de estar siempre al día.
$ apt-get install nombre_paquete
Localizado el nombre del paquete que queremos
descargar e instalar, este comando se encargará del proceso. Buscará en nuestro
índice (el que se crea con update) de dónde tiene que descargarse el paquete,
lo hace y posteriormente lo instala.
$ apt-get remove [--purge] nombre_paquete
Elimina el paquete especificado del sistema. Damite
el argumento “–purge” (corchetes = opcional) para que borre también los
ficheros de configuración.
$ apt-get autoremove
Elimina paquetes que han quedado inservibles tras
realizar algún apt-get remove, los llamados huérfanos. Normalmente tras hacer
este último te avisa en un mensaje que lo realices.
Todos estos comandos necesitan tener privilegios de administración, así que si no los usáis como root, debéis agregar primero el conocido “sudo”.
Todos estos comandos necesitan tener privilegios de administración, así que si no los usáis como root, debéis agregar primero el conocido “sudo”.
aptitude ->
aptitude: aptitud, habilidad. En el fondo juega con las siglas de apt para
crear aptitude.
Es una versión mejorada de apt. Si os habéis fijado
en todos los manuales y entradas donde había un proceso de instalación he usado
aptitude en lugar de apt. El segundo es quizá el más extendido al ser el que
vio la luz primero.
aptitude nació como un front-end de apt, es decir, como una especie de aplicación gráfica y en modo texto para realizar todo lo que hace apt. Pero lo cierto es que sus características son mejores.
apt cuando instala algo te puede realizar una sugerencia para que instales algo más que te podría venir bien, pero no lo hace. Hay programas que a la vez usan otros para algunas de sus funciones u opciones. apt no instalaría los segundos, como mucho te avisaría. Sin embargo aptitude sí que lo instalará porque sabe que de alguna forma es indispensable para el que has pedido.
De la misma forma, si con apt instalas luego ese programa que es usado por otro, cuando desinstalas el principal, no se desinstalará el secundario, aunque éste ya no tenga mucho sentido que esté instalado, y lo mismo sucede con librerías. aptitude está capacitado para desinstalar lo que él mismo ha instalado como recomendación. Te deja el sistema más limpio tras las desinstalaciones.
Para abrir el interfaz gráfico de aptitude, tan sólo hay que teclearlo:
aptitude nació como un front-end de apt, es decir, como una especie de aplicación gráfica y en modo texto para realizar todo lo que hace apt. Pero lo cierto es que sus características son mejores.
apt cuando instala algo te puede realizar una sugerencia para que instales algo más que te podría venir bien, pero no lo hace. Hay programas que a la vez usan otros para algunas de sus funciones u opciones. apt no instalaría los segundos, como mucho te avisaría. Sin embargo aptitude sí que lo instalará porque sabe que de alguna forma es indispensable para el que has pedido.
De la misma forma, si con apt instalas luego ese programa que es usado por otro, cuando desinstalas el principal, no se desinstalará el secundario, aunque éste ya no tenga mucho sentido que esté instalado, y lo mismo sucede con librerías. aptitude está capacitado para desinstalar lo que él mismo ha instalado como recomendación. Te deja el sistema más limpio tras las desinstalaciones.
Para abrir el interfaz gráfico de aptitude, tan sólo hay que teclearlo:
$ aptitude
Sin embargo, también se puede usar exactamente
igual que apt, pero con las características que he comentado de aptitude:
$ aptitude search nombre_paquete
$ aptitude install nombre_paquete
$ aptitude remove nombre_paquete
$ aptitude purge nombre_paquete
$ aptitude update
$ aptitude upgrade
$ aptitude remove nombre_paquete
$ aptitude purge nombre_paquete
$ aptitude update
$ aptitude upgrade
Y al igual que antes, necesitaréis usarlo con el
sudo delante si no estáis como administrador.
dpkg ->
depackage: despaquetar.
Los paquetes cuando se instalan sufren un proceso
de despaquetaje. En el fondo un paquete .deb contiene una serie de scripts de
pre-instalación, post-instalación y los archivos en cuestión del paquete.
Este comando lo usaremos para instalar un paquete .deb que ya tengamos descargados en nuestro sistema. En muchas ocasiones hay una aplicación que no está en los repositorios y nos hemos bajado el .deb para instalarlo con el interfaz gráfico que corresponda (GDebi en el caso de GNOME).
En el fondo estas interfaces gráficas están basadas en dpkg. Si queremos instalar un paquete ya descargado mediante consola usaremos el argumento ‘-i’ (i=install):
Este comando lo usaremos para instalar un paquete .deb que ya tengamos descargados en nuestro sistema. En muchas ocasiones hay una aplicación que no está en los repositorios y nos hemos bajado el .deb para instalarlo con el interfaz gráfico que corresponda (GDebi en el caso de GNOME).
En el fondo estas interfaces gráficas están basadas en dpkg. Si queremos instalar un paquete ya descargado mediante consola usaremos el argumento ‘-i’ (i=install):
$ dpkg -i nombre_paquete
Para desinstalarlo ‘-r’ (r=remove):
$ dpkg -r nombre_paquete
Para desinstalar el paquete y los ficheros de
configuración “–purge” (purgar):
$ dpkg -r –purge nombre_paquete
Alien ->
Alien: de otro país, de otro planeta.
Aunque Debian -y por extensión Ubuntu- dispone de
una ingente cantidad de paquetes en sus repositorios, puede que alguien tenga
algún problema en encontrar una aplicación específica empaquetada como le
interesa aunque ha visto el paquete que quiere para otras distros.
alien es bastante práctico para estas situaciones ya que nos permite transformar un paquete de un gestor de paquetes determinado en otro. Por ejemplo podemos pasar de un .deb (Debian) a un .rpm (Red Hat) y viceversa. Las extensiones soportadas son:
* deb (Debian)
* rpm (Red Hat)
* slm (Stampede)
* tgz (Slackware)
* pkg (Solaris)
Su uso es sencillo. Lo que debemos saber es el argumento que transformará el paquete original en la extensión objetivo:
* “–to-deb” o “-d” para transformar a .deb
* “–to-rpm” o “-r” para transformar a .rpm
* “–to-tgz” o “-t” para transformar a .tgz
* “–to-pkg” o “-p” para transformar a .pkg
* “–to-slp” para transformar a .slp
Como ejemplo, pasaremos un supuesto paquete de Red Hat llamado “pepino.rpm” a “pepino.deb”:
alien es bastante práctico para estas situaciones ya que nos permite transformar un paquete de un gestor de paquetes determinado en otro. Por ejemplo podemos pasar de un .deb (Debian) a un .rpm (Red Hat) y viceversa. Las extensiones soportadas son:
* deb (Debian)
* rpm (Red Hat)
* slm (Stampede)
* tgz (Slackware)
* pkg (Solaris)
Su uso es sencillo. Lo que debemos saber es el argumento que transformará el paquete original en la extensión objetivo:
* “–to-deb” o “-d” para transformar a .deb
* “–to-rpm” o “-r” para transformar a .rpm
* “–to-tgz” o “-t” para transformar a .tgz
* “–to-pkg” o “-p” para transformar a .pkg
* “–to-slp” para transformar a .slp
Como ejemplo, pasaremos un supuesto paquete de Red Hat llamado “pepino.rpm” a “pepino.deb”:
$ alien -d pepino.rpm
man ->
manual: manual. Es otro de los comandos de gran potencia en linux.
Normalmente queda programa o comando viene con un
archivo de ayuda muy completo sobre su uso y sus argumentos. Cuando
desconozcáis cómo se usa y qué argumentos tiene un comando o aplicación tan
sólo tenéis que escribir en consola:
$ man nombre
En ocasiones la información que nos ofrece man
puede llegar a ser excesiva. Casi todos los comandos y aplicaicones aceptan el
argumento “--help” o "-h" para que muestre cierta ayuda más resumida.
Por ejemplo con aptitude:
$ aptitude --help
$ aptitude -h
Todos los comandos que os he mostrado tienen muchos
más argumentos. Os he puesto los más usados o necesarios, así que si hay alguno
que os interesa particularmente conocer más de él, tenéis “man” o “--help” para
obtener más detalles.
Enlace: poner en español el comando "man"
Enlace: poner en español el comando "man"
passwd - Podemos
cambiar la contraseña empleando la orden passwd.
Nos pedirá la contraseña anterior (current) y la
nueva. Volverá a pedir una segunda vez la nueva para validarla. El usuario root
podrá cambiar la contraseña de cualquier otro usuario. Sin embargo, los
usuarios no privilegiados solamente podrán cambiar su propia clave. Sintaxis:
passwd
date - Muestra
por pantalla el día y la hora, permitiendo, además, el cambio de la misma.
Sintaxis:
date [opcion][formato]
cal - Muestra
el calendario del mes o año actual actual. Sintaxis:
cal [mes][año]
Por ejemplo,
• cal muestra el calendario del mes actual.
• cal 1949 muestra el calendario del año 1949.
• cal 05 1945 muestra el calendario de Mayo de 1949.
• cal muestra el calendario del mes actual.
• cal 1949 muestra el calendario del año 1949.
• cal 05 1945 muestra el calendario de Mayo de 1949.
who - Indica
qué usuarios tiene el ordenador en ese momento, en qué terminal están y a qué
hora iniciaron la sesión. Sintaxis
who
whoami - Indica el
usuario que está trabajando en la terminal actual. Sintaxis:
whoami
finger - Presenta
una información completa de los usuarios conectados a la red. Sintaxis:
finger [-bfilpqsw][login1 login2]
uname -
Proporciona el nombre del sistema en el que se está trabajando. Sintaxis:
uname [-opciones]
Como opciones principales tenemos:
-a indica, además, la versión, fecha y tipo de
procesador.
-m indica, además, el tipo de de procesador.
-r indica, además, la versión.
-v indica, además, la fecha.
-m indica, además, el tipo de de procesador.
-r indica, además, la versión.
-v indica, además, la fecha.
logname - Indica el
nombre del usuario conectado al sistema (el que ha hecho login). Sintaxis:
logname
info -
Proporciona ayuda resumida acerca de un comando en cuestión. Sintaxis:
info [comando]
clear - Este
comando se utiliza para limpiar la pantalla. Sintaxis:
clear
echo - Muestra
por pantalla los argumentos que le pasamos. Sintaxis:
echo [argumento1] [argumento2] ... [argumentoN]
alias - Asigna un
nombre o etiqueta a la ejecución de un comando con sus opciones. Sintaxis:
alias etiqueta=’orden’
La orden alias solamente, muestra todos los alias
que hay creados. La orden unalias elimina el alias especificado.
5. CARACTERES COMODÍN O WILDCARDS
Una característica importante de la mayoría de los intérpretes de comandos en Linux es la capacidad para referirse a más de un fichero.
Una forma de hacerlo es utilizando caracteres especiales llamados comodines.
Al igual que en MS-DOS, el comodín * hace referencia a cualquier carácter o cadena de caracteres en el nombre del fichero. El intérprete de comandos sustituirá el asterisco por todas las combinaciones posibles provenientes de los ficheros en el directorio al cual nos estamos refiriendo. Se dice que está realizando una expansión de comodines.
El carácter ? es también comodín, aunque solamente expande un carácter.
Con ambos caracteres existe una excepción. No afectarán a aquellos ficheros que comienzan por un punto, y que son ocultos para órdenes como ls.
Además, podemos utilizar los corchetes para referirnos a un conjunto de caracteres o
bien un rango de caracteres ASCII.
Ejemplos:
$ls *n* muestra todos los archivos y directorios, del directorio actual, que contienen el carácter n
$ls * muestra todos los archivos y directorios del directorio actual
$ls tm? muestra todos los archivos y directorios del directorio actual que comienzan por tm y contienen tres caracteres
$ls tabla[123]a muestra todos los archivos y directorios del directorio actual que comienzan por tabla, seguidos del carácter 1, 2 ó 3, y terminan en a
$ls ??base[A-Z][5-9]* muestra todos los archivos y directorios del directorio actual que comienzan con dos caracteres cualesquiera, seguidos de la cadena base, a continuación una letra mayúscula, seguida de un número del 5 al 9 y por último una cadena de caracteres (uno, varios o ninguno)
6. ÓRDENES RELACIONADAS CON DIRECTORIOS
Directorio Personal
Como se ha visto anteriormente el directorio personal es un directorio con un determinado nombre asignado a un usuario. Los directorios personales habitualmente son subdirectorios de /home (en algunos casos se utiliza mnt, u otro subdirectorio de orden inferior).
Generalmente el nombre coincide con el del nombre de usuario, aunque puede no ser así, y varios usuarios pueden estar trabajando en el mismo directorio. Cada usuario de Linux puede crear una estructura en árbol de subdirectorios y archivos tan compleja como desee bajo su directorio personal pero normalmente nunca fuera de él.
ls Permite mostrar el contenido de un directorio. ls Muestra los nombres de los ficheros y
subdirectorios contenidos en el directorio en el que se está. Sólo se obtienen los nombres de
los ficheros, sin ninguna otra información. Sintaxis:
ls [-opciones][fichero]
-a Muestra todos los ficheros incluyendo algunos que
ordinariamente están ocultos para el usuario (aquellos que comienzan por un
punto). Recordemos que el fichero punto . indica el directorio actual y el
doble punto .. el directorio padre, que contiene, al actual.
-l Esta es la opción de lista larga: muestra toda la información de cada fichero incluyendo: protecciones, tamaño y fecha de creación o del último ambio introducido,...
-c Muestra ordenando por día y hora de creación.
-t Muestra ordenando por día y hora de modificación.
-r Muestra el directorio y lo ordena en orden inverso.
-R Lista también subdirectorios.
ls subdir Muestra el contenido del subdirectorio subdir.
-l filename Muestra toda la información sobre el fichero filename.
--color Muestra el contenido del directorio coloreado.
Las opciones anteriores pueden combinarse. Por ejemplo:
ls -cr Muestra el directorio ordenando inversamente por fechas. El comando ls admite los caracteres de sustitución o * y ?. Por ejemplo:
ls *.gif Muestra todos los nombres de ficheros que acaben en .gif, por ejemplo, dib1.gif, a.gif, etc.
ls file? Muestra todos los ficheros cuyos nombres empiecen por file y tengan un nombre de cinco caracteres, por ejemplo: file1, file2, filea, etc.
mkdir El comando mkdir (make directory) permite a cada usuario crear un nuevo
subdirectorio. Sintaxis:
-l Esta es la opción de lista larga: muestra toda la información de cada fichero incluyendo: protecciones, tamaño y fecha de creación o del último ambio introducido,...
-c Muestra ordenando por día y hora de creación.
-t Muestra ordenando por día y hora de modificación.
-r Muestra el directorio y lo ordena en orden inverso.
-R Lista también subdirectorios.
ls subdir Muestra el contenido del subdirectorio subdir.
-l filename Muestra toda la información sobre el fichero filename.
--color Muestra el contenido del directorio coloreado.
Las opciones anteriores pueden combinarse. Por ejemplo:
ls -cr Muestra el directorio ordenando inversamente por fechas. El comando ls admite los caracteres de sustitución o * y ?. Por ejemplo:
ls *.gif Muestra todos los nombres de ficheros que acaben en .gif, por ejemplo, dib1.gif, a.gif, etc.
ls file? Muestra todos los ficheros cuyos nombres empiecen por file y tengan un nombre de cinco caracteres, por ejemplo: file1, file2, filea, etc.
mkdir El comando mkdir (make directory) permite a cada usuario crear un nuevo
subdirectorio. Sintaxis:
mkdir subdirectorio
donde subdirectorio es el nombre del directorio que
se va a crear.
rmdir Este comando borra uno o más directorios del sistema (remove directory), siempre que estos subdirectorios estén vacíos. Sintaxis:
rmdir Este comando borra uno o más directorios del sistema (remove directory), siempre que estos subdirectorios estén vacíos. Sintaxis:
rmdir subdirectorio
Por ejemplo, rmdir subdir1, donde subdir es el
nombre del directorio que se va a eliminar.
cd Este comando permite cambiar de directorio a partir del directorio actual de trabajo.
Sintaxis:
cd Este comando permite cambiar de directorio a partir del directorio actual de trabajo.
Sintaxis:
cd [directorio]
Veamos algunas opciones:
cd – cambia al último directorio en el que estuvimos antes del actual.
cd.. cambia al directorio padre.
cd. nos deja donde estamos.
cd Nos sitúa nuevamente en el directorio personal del usuario.
cd / cambia al directorio raíz
Nota: al contrario que en MS-DOS en Linux no existe la forma cd.. sin espacio entre cd y los dos puntos.
pwd El comando pwd (print working directory) visualiza o imprime la ruta del directorio en el que nos encontramos en este momento. Este comando es uno de los pocos que no tiene
opciones y se utiliza escribiendo simplemente pwd.
cd – cambia al último directorio en el que estuvimos antes del actual.
cd.. cambia al directorio padre.
cd. nos deja donde estamos.
cd Nos sitúa nuevamente en el directorio personal del usuario.
cd / cambia al directorio raíz
Nota: al contrario que en MS-DOS en Linux no existe la forma cd.. sin espacio entre cd y los dos puntos.
pwd El comando pwd (print working directory) visualiza o imprime la ruta del directorio en el que nos encontramos en este momento. Este comando es uno de los pocos que no tiene
opciones y se utiliza escribiendo simplemente pwd.
7. ACCESO A UNIDADES DE DISCO: MONTAJE Y DESMONTAJE
Linux a diferencia de Windows no utiliza letras ("a:", "c:", "d:", ...) para acceder a las distintas unidades de disco de un ordenador. En Linux para acceder al contenido de una unidad de disco o de un CD-ROM este tiene que haber sido previamente "montado". El montado se realiza mediante el comando mount, con lo que el contenido de la unidad se pone a disposición del usuario en el directorio de Linux que se elija. La sintaxis de este comando es la siguiente:
mount [-t tipo_de_sistema_ficheros] [dispositivo] directorio_de_montaje
Por ejemplo para acceder al CD-ROM se teclearía el siguiente comando:
mount -t iso9660 /dev/cdrom /mnt/cdrom
donde -t iso9660 indica el tipo de sistema que usa
la unidad de disco para guardar los ficheros (las más usuales son: iso9660 en
el caso de un CD-ROM, vfat en el caso de Windows, y ext2 (3 o 4) en el caso de
Linux), /dev/cdrom indica el dispositivo que se va a montar. Todos los
dispositivos están representados por un fichero del directorio /dev; por
ejemplo, en el caso de un disquete será seguramente /dev/fd0, por último
/mnt/cdrom es el directorio en el que se pondrá a disposición del usuario el
contenido del CD-ROM. Para montar disquetes se suele utilizar el directorio
/mnt/floppy (aunque esto depende de la versión de Linux que utilicemos).
En el caso de Ubuntu, el comando mount admite directamente los directorios /cdrom, /cdrom1, /floppy, ... para el montaje de nuestras unidades, por lo que lo único que habría que escribir, para montar por ejempo la disquetera, sería:
En el caso de Ubuntu, el comando mount admite directamente los directorios /cdrom, /cdrom1, /floppy, ... para el montaje de nuestras unidades, por lo que lo único que habría que escribir, para montar por ejempo la disquetera, sería:
mount /floppy
Si omitimos el tipo de sistema de ficheros y/o el
dispositivo, Ubuntu toma la información correspondiente del fichero /etc/fstab,
el cual contiene información de los distintos sistemas de ficheros del equipo.
De todas formas el usuario siempre puede crear un directorio vacío con el nombre que el elija para montar las unidades de disco que desee donde desee.
Cuando el usuario haya dejado de usar ese disco deberá "desmontarlo" mediante el comando umount antes de sacar el disquete o el CD-ROM. Siguiendo con el ejemplo de la disquetera en Ubuntu, debería escribir:
De todas formas el usuario siempre puede crear un directorio vacío con el nombre que el elija para montar las unidades de disco que desee donde desee.
Cuando el usuario haya dejado de usar ese disco deberá "desmontarlo" mediante el comando umount antes de sacar el disquete o el CD-ROM. Siguiendo con el ejemplo de la disquetera en Ubuntu, debería escribir:
umount /floppy
En principio, para utilizar el comando mount
especificando todos los parámetros hace falta ser administrador o root. Para
que un usuario común pueda utilizar disquetes, CD-ROM, etc. hay que editar el
fichero /etc/fstab. Por ejemplo para que cualquier usuario pueda acceder a un
disquete habrá que indicar la siguiente línea:
/dev/fd0 /mnt/floppy vfat user,noauto 0 0
También habrá que asegurarse de que el directorio
/mnt/floppy sea accesible por todos los usuarios.
Una vez seguidos los pasos anteriores cualquier usuario podrá "montar" un disquete escribiendo el siguiente comando:
Una vez seguidos los pasos anteriores cualquier usuario podrá "montar" un disquete escribiendo el siguiente comando:
mount /mnt/floppy
Al igual que antes, el usuario deberá ejecutar el
comando umount /mnt/floppy antes de sacar el disquete.
Nota: Existen en la actualidad distribuciones (por ejemplo, SuSE Linux) que realizan este proceso de forma automática, por lo que las unidades de disquete y CD-ROM quedan accesibles a todos los usuarios de una forma sencilla, empleando los comandos:
Nota: Existen en la actualidad distribuciones (por ejemplo, SuSE Linux) que realizan este proceso de forma automática, por lo que las unidades de disquete y CD-ROM quedan accesibles a todos los usuarios de una forma sencilla, empleando los comandos:
mount /mnt/floppy
umount /mnt/floppy
umount /mnt/floppy
siempre que /mnt/floppy sea la ruta adecuada.
Para desmontar una partición empleamos el comando "umount":
Para desmontar una partición empleamos el comando "umount":
sudo umount /dev/sdxX
Donde "xX" es la partición que queremos
desmontar. Por ej. "sda5" que es la partición "5" del disco
duro "a"
8. ÓRDENES RELACIONADAS CON FICHEROS
cp Copia un fichero o ficheros en otro fichero o directorio. Sintaxis:
cp fichero1 [fichero2] ... [ficheroN] destino
donde [ficheroX] es el fichero a copiar y [destino]
es el fichero o directorio de destino.
Podemos utilizar . y .. para referirnos al directorio actual y al directorio padre respectivamente.
Así pues, la orden cp file1 file2, hace una copia de file1 y le llama file2. Si file2 no existía, lo crea con los mismos atributos de file1. Si file2 existía antes, su contenido queda destruido y es sustituido por el de file1. El fichero file2 estará en el mismo directorio que file1. Tanto file1 como file2 indican el nombre de un archivo, que puede incluir el la ruta al mismo si alguno de ellos no se encuentra en el directorio actual. Otra posibilidad es:
Podemos utilizar . y .. para referirnos al directorio actual y al directorio padre respectivamente.
Así pues, la orden cp file1 file2, hace una copia de file1 y le llama file2. Si file2 no existía, lo crea con los mismos atributos de file1. Si file2 existía antes, su contenido queda destruido y es sustituido por el de file1. El fichero file2 estará en el mismo directorio que file1. Tanto file1 como file2 indican el nombre de un archivo, que puede incluir el la ruta al mismo si alguno de ellos no se encuentra en el directorio actual. Otra posibilidad es:
cp file1 file2 namedir
que hace copias de file1 y file2 en el directorio
namedir.
mv Se utiliza para el traslado y cambio de nombre de ficheros. Sintaxis:
mv Se utiliza para el traslado y cambio de nombre de ficheros. Sintaxis:
cp fichero1 [fichero2] ... [ficheroN] destino
Como vemos, este comando tiene una forma similar al
anterior. El comando mv realiza la misma función que el cp pero además destruye
el fichero original.
Así, si ejecutamos la orden
Así, si ejecutamos la orden
mv file1 file2
en definitiva se traslada el contenido de file1 a
file2; a efectos del usuario lo que ha hecho es cambiar el nombre a file1,
llamándole file2. De igual forma,
mv file1 file2 namedir
traslada uno o más ficheros (file1, file2,...) al
directorio namedir conservándoles el nombre.
El comando,
El comando,
mv namedir1 namedir2
cambia el nombre del subdirectorio namedir1 por
namedir2.
Hay que recalcar que el comando mv sirve así mismo para cambiar el nombre de los ficheros.
rm Borrado de ficheros. Este comando elimina uno o más ficheros de un directorio en el
cual tengamos permiso de escritura. Sintaxis:
Hay que recalcar que el comando mv sirve así mismo para cambiar el nombre de los ficheros.
rm Borrado de ficheros. Este comando elimina uno o más ficheros de un directorio en el
cual tengamos permiso de escritura. Sintaxis:
rm file1 [file2]
Con este comando resulta facilísimo borrar ficheros
inútiles, y desgraciadamente, también los útiles. Por eso es conveniente y casi
imprescindible emplear lo opción -i, de la forma siguiente:
rm -i file1 file2
Con esta opción, Linux pedirá confirmación para
borrar cada fichero de la lista, de si realmente se desea su destrucción o no.
Se recomienda usar siempre este comando con esta opción para evitar el borrado
de ficheros útiles. Por ejemplo, si se teclea, rm -i superfluo aparecerá en
pantalla el aviso siguiente: remove superfluo? y habrá que contestar y (yes) o
n (not). En este comando se pueden utilizar los caracteres comodines (* y ?),
como por ejemplo, rm fich* que borraría todos los ficheros del directorio
actual que comiencen por fich. El comando
rm * borrará todos los ficheros del directorio actual.
Otra opción es –r, que borra directorios recursivamente (borran el directorio y todo su contenido).
file Este comando realiza una serie de comprobaciones en un fichero para tratar de
clasificarlo, mostrando sus características. Sintaxis:
rm * borrará todos los ficheros del directorio actual.
Otra opción es –r, que borra directorios recursivamente (borran el directorio y todo su contenido).
file Este comando realiza una serie de comprobaciones en un fichero para tratar de
clasificarlo, mostrando sus características. Sintaxis:
file fichero
Tras su ejecución este comando muestra el tipo del
fichero e información al respecto del mismo. Este comando se puede aplicar
también a directorios.
cat Visualización sin formato de un fichero. Este comando permite visualizar el contenido
de uno o más ficheros de forma no formateada. También permite copiar uno o más ficheros
como apéndice de otro ya existente. Algunas formas de utilizar este comando son las
siguientes:
cat filename Saca por pantalla el contenido del fichero filename.
cat file1 file2 Saca por pantalla, secuencialmente y según el orden especificado, el contenido de los ficheros indicados.
cat >file1 Acepta lo que se introduce por el teclado y lo almacena en file1 (se crea file1). Para terminar se emplea d
pr Visualización de ficheros con formato. Este comando, a diferencia de cat, imprime por consola el contenido de los ficheros de una manera formateada, por columnas, controlando el tamaño de página y poniendo cabeceras al comienzo de las mismas. Está muy en relación con el comando lp de salida por impresora. Las formas más importantes que admite son las siguientes:
pr file Produce una salida estándar de 66 líneas por página, con un encabezamiento de 5 líneas (2 en blanco, una de identificación y otras 2 líneas en blanco).
pr -ln file Produce una salida de n líneas por página (cuando el tamaño de papel de impresora, por ejemplo, tiene un número de líneas distinto de 66)
pr -p file Hace una pausa para presentar la página, hasta que se pulsa para continuar
pr -t file Suprime las 5 líneas del encabezamiento y las del final de página.
pr -wn file Ajusta la anchura de la línea a n posiciones.
pr -d file Lista el fichero con espaciado doble.
pr -h `caracteres` file el argumento o cadena de caracteres `caracteres` se
convertirán en la cabecera del listado.
pr +n file Imprime el fichero a partir de la página n.
Además de los ejemplos anteriores, se pueden combinar varias opciones en un mismo comando, como por ejemplo en: pr -dt file.
La salida de este comando es por la consola, pero puede redireccionarse a otro fichero, por ejemplo, si ejecutamos el comando: pr file1 > file2 se crea un fichero nuevo llamado file2 que es idéntico a file1, pero con formato por páginas y columnas. Comandos more y less
Estos comandos permiten visualizar un fichero pantalla a pantalla. El número de líneas por pantalla es de 23 líneas de texto y una última línea de mensajes, donde aparecerá la palabra more. Cuando se pulsa la barra espaciadora (el espacio en blanco), se visualizará la siguiente pantalla. Para salir de este comando (terminar la visualización) se pulsa d o q.
El comando more muestra el contenido de los ficheros indicados, una pantalla cada vez. Sintaxis:
cat Visualización sin formato de un fichero. Este comando permite visualizar el contenido
de uno o más ficheros de forma no formateada. También permite copiar uno o más ficheros
como apéndice de otro ya existente. Algunas formas de utilizar este comando son las
siguientes:
cat filename Saca por pantalla el contenido del fichero filename.
cat file1 file2 Saca por pantalla, secuencialmente y según el orden especificado, el contenido de los ficheros indicados.
cat >file1 Acepta lo que se introduce por el teclado y lo almacena en file1 (se crea file1). Para terminar se emplea d
pr Visualización de ficheros con formato. Este comando, a diferencia de cat, imprime por consola el contenido de los ficheros de una manera formateada, por columnas, controlando el tamaño de página y poniendo cabeceras al comienzo de las mismas. Está muy en relación con el comando lp de salida por impresora. Las formas más importantes que admite son las siguientes:
pr file Produce una salida estándar de 66 líneas por página, con un encabezamiento de 5 líneas (2 en blanco, una de identificación y otras 2 líneas en blanco).
pr -ln file Produce una salida de n líneas por página (cuando el tamaño de papel de impresora, por ejemplo, tiene un número de líneas distinto de 66)
pr -p file Hace una pausa para presentar la página, hasta que se pulsa para continuar
pr -t file Suprime las 5 líneas del encabezamiento y las del final de página.
pr -wn file Ajusta la anchura de la línea a n posiciones.
pr -d file Lista el fichero con espaciado doble.
pr -h `caracteres` file el argumento o cadena de caracteres `caracteres` se
convertirán en la cabecera del listado.
pr +n file Imprime el fichero a partir de la página n.
Además de los ejemplos anteriores, se pueden combinar varias opciones en un mismo comando, como por ejemplo en: pr -dt file.
La salida de este comando es por la consola, pero puede redireccionarse a otro fichero, por ejemplo, si ejecutamos el comando: pr file1 > file2 se crea un fichero nuevo llamado file2 que es idéntico a file1, pero con formato por páginas y columnas. Comandos more y less
Estos comandos permiten visualizar un fichero pantalla a pantalla. El número de líneas por pantalla es de 23 líneas de texto y una última línea de mensajes, donde aparecerá la palabra more. Cuando se pulsa la barra espaciadora (el espacio en blanco), se visualizará la siguiente pantalla. Para salir de este comando (terminar la visualización) se pulsa d o q.
El comando more muestra el contenido de los ficheros indicados, una pantalla cada vez. Sintaxis:
more fichero1 [fichero2] ... [ficheroN]
La teclas que nos permiten movernos por el fichero
son: b va a la página anterior, barra espaciadora va a la página siguiente,
flechas de cursor arriba y abajo, q finaliza la ejecución de more.
El comando less es muy similar al anterior pero, además, permite el desplazamiento a lo largo del texto empleando las teclas de cursores pudiendo desplazarse, además, hacia la izquierda o la derecha. Sintaxis:
El comando less es muy similar al anterior pero, además, permite el desplazamiento a lo largo del texto empleando las teclas de cursores pudiendo desplazarse, además, hacia la izquierda o la derecha. Sintaxis:
less fichero1 [fichero2] ... [ficheroN]
grep El comando
grep localiza una palabra, clave o frase en un conjunto de directorios, indicando
en cuáles de ellos la ha encontrado. Este comando rastrea fichero por fichero,
por turno, imprimiendo aquellas líneas que contienen el conjunto de caracteres
buscado. Si el conjunto de caracteres a buscar está compuesto por dos o más
palabras separadas por un espacio, se colocará el conjunto de caracteres entre
apóstrofes ('). Su sintaxis es la siguiente:
grep [-opcion] 'conjuntocaracteres' file1 file2
file3
siendo 'conjuntocaracteres' la secuencia de
caracteres a buscar, y file1, file2, y file3 los ficheros donde se debe buscar.
Veamos un nuevo ejemplo:
grep 'TRIANGULARIZACION MATRIZ' matrix.f scaling.f
Este comando buscará TRIANGULARIZACION MATRIZ entre
las líneas de los ficheros matrix.f y scaling.f.
Las opciones principales del comando son:
c lo único que se hace es escribir el número de las líneas que satisfacen la condición.
i no se distinguen mayúsculas y minúsculas.
l se escriben los nombres de los ficheros que contienen líneas buscadas.
n cada línea es precedida por su número en el fichero.
s no se vuelcan los mensajes que indican que un fichero no se puede abrir.
v se muestran sólo las líneas que no satisfacen el criterio de selección.
A continuación se muestra una serie de ejemplos.
grep ‘ˆd’ text líneas que comienzan por d.
grep ‘ˆ[ˆd]’ text líneas que no comienzan por d.
grep -v ‘ˆC’ file1 > file2 quita las líneas de file1 que comienzan por C y lo copia en file2.
head Muestra las primeras líneas del contenido de los archivos especificados; por defecto
muestra las 10 primeras líneas. Sintaxis:
Las opciones principales del comando son:
c lo único que se hace es escribir el número de las líneas que satisfacen la condición.
i no se distinguen mayúsculas y minúsculas.
l se escriben los nombres de los ficheros que contienen líneas buscadas.
n cada línea es precedida por su número en el fichero.
s no se vuelcan los mensajes que indican que un fichero no se puede abrir.
v se muestran sólo las líneas que no satisfacen el criterio de selección.
A continuación se muestra una serie de ejemplos.
grep ‘ˆd’ text líneas que comienzan por d.
grep ‘ˆ[ˆd]’ text líneas que no comienzan por d.
grep -v ‘ˆC’ file1 > file2 quita las líneas de file1 que comienzan por C y lo copia en file2.
head Muestra las primeras líneas del contenido de los archivos especificados; por defecto
muestra las 10 primeras líneas. Sintaxis:
head [-número] ...
Por ejemplo, head -7 texto, escribe por pantalla
las 7 primeras líneas del fichero texto.
tail Muestra las primeras líneas del contenido de los archivos especificados; por defecto
muestra las 10 primeras líneas. Sintaxis:
tail Muestra las primeras líneas del contenido de los archivos especificados; por defecto
muestra las 10 primeras líneas. Sintaxis:
tail [-número] ...
9. OTROS COMANDOS BÁSICOS
9.1. Espacio ocupado en el disco: Comandos du
y df
El comando du permite conocer el espacio ocupado en el disco por un determinado directorio y todos los subdirectorios que cuelgan de él. Para usarlo basta simplemente colocarse en el directorio adecuado y teclear du.
Este comando da el espacio de disco utilizado en bloques. Para obtener la información en bytes se debe emplear el comando con la opción –h:
du -h
El comando df por el contrario informa del
espacio usado por las particiones del sistema que se encuentren montadas.
9.2. Impresión: Comando lpr
El comando lpr se emplea para imprimir una serie de ficheros. Si se emplea sin argumentos imprime el texto que se introduzca a continuación en la impresora por defecto. Por el contrario,
lpr nombre_fichero
imprime en la impresora por defecto el fichero
indicado.
9.3. Búsqueda de ficheros. Comando find
Con find podemos encontrar archivos (y, por tanto, directorios) basando su búsqueda en distintas características de los mismos. Sintaxis:
find [camino...] [expresión]
El número de opciones de find es muy elevado, por
lo que se aconseja acudir al manual para mayor información (man find).
9.4. Enlaces a ficheros. Comando ln
Los enlaces nos van a permitir realizar copias de
los ficheros con otro nombre, para poder acceder a ellos desde lugares
distintos a su ubicación original, con un ahorro de espacio muy importante con
respecto al comando cp.
Nuestro sistema identifica a los ficheros mediante un número denominado inodo, que les asigna en el momento de su creación.
Es decir, un directorio lo que contiene realmente es una lista de números de inodo con sus correspondientes nombres de fichero. De esta forma, cada nombre de fichero es un enlace a un inodo particular; por ello, cada inodo está asociado a un conjunto de información guardada en el disco, que puede tener asignados distintos nombres, y a la que podremos acceder desde distintos lugares del árbol de directorios si así lo deseamos.
En este sentido, podremos crear dos tipos distintos de enlaces a ficheros: enlaces duros y enlaces simbólicos.
El comando ln nos servirá para crear ambos tipos de enlaces.
ENLACES DUROS (HARD LINKS)
Si utilizamos el comando ln sin especificar ninguna opción, por defecto crearemos un enlace duro. La sintaxis es la siguiente:
Nuestro sistema identifica a los ficheros mediante un número denominado inodo, que les asigna en el momento de su creación.
Es decir, un directorio lo que contiene realmente es una lista de números de inodo con sus correspondientes nombres de fichero. De esta forma, cada nombre de fichero es un enlace a un inodo particular; por ello, cada inodo está asociado a un conjunto de información guardada en el disco, que puede tener asignados distintos nombres, y a la que podremos acceder desde distintos lugares del árbol de directorios si así lo deseamos.
En este sentido, podremos crear dos tipos distintos de enlaces a ficheros: enlaces duros y enlaces simbólicos.
El comando ln nos servirá para crear ambos tipos de enlaces.
ENLACES DUROS (HARD LINKS)
Si utilizamos el comando ln sin especificar ninguna opción, por defecto crearemos un enlace duro. La sintaxis es la siguiente:
ln [nombre del enlace]
ln ...
Obviamente, el fichero o ficheros para los que
deseamos crear un enlace duro deberán existir. Así mismo, si el último
argumento es el nombre de un directorio que existe, crearemos un enlace duro a
cada fichero, dentro del directorio, y con el mismo nombre de fichero.
Si solamente especificamos el fichero que queremos enlazar, y no indicamos ningún nombre para el enlace, éste se creará con el mismo nombre que el fichero a enlazar.
Los cambios que realicemos en el fichero enlazado o en el enlace, se reflejarán en el resto, ya que todos tendrán el mismo número de inodo, y por lo tanto hacen referencia al mismo conjunto de información.
La ventaja de utilizar enlaces duros radica en que el comando rm únicamente borrará aquel fichero que le indiquemos. La información solamente se borrará por completo cuando borremos todos los enlaces a un inodo.
La desventaja con respecto a los enlaces simbólicos es que sólo permite crear enlaces dentro del mismo sistema de ficheros.
Los directorios . y .. son enlaces duros al directorio actual y a su directorio padre respectivamente.
Ejemplo:
1 – Creamos el fichero pruebaln con la orden cat.
$cat > pruebaln
hola
CTRL+ D
2 – Creamos un enlace a pruebaln que se llame penlace.
$ln pruebaln penlace
3 – Veamos las características de estos ficheros con la orden ls. Utilizamos la opción –i
para ver el número de inodo. Ambos tendrán el mismo número de inodo con dos
enlaces.
$ls –i pruebaln penlace
4 – Modificamos pruebaln y comprobamos si también se modifica penlace.
$cat >>pruebaln
adios
CTRL+ D
$cat pruebaln
$cat penlace
5 – Modificamos penlace y comprobamos si también se modifica pruebaln.
$cat >>penlace
otra vez hola
CTRL+ D
$cat penlace
$cat pruebaln
6 – Eliminamos pruebaln y comprobamos si penlace permanece y contiene la información correspondiente.
$rm pruebaln
$cat penlace
7 – Si utilizamos la orden ls –i, vemos que penlace sigue con el mismo número de inodo, que ahora solamente tendrá un enlace.
ENLACES SIMBÓLICOS
Si utilizamos la opción –s con el comando ln, es decir ln –s, crearemos un enlace simbólico. La sintaxis en este caso es la misma que utilizamos para crear enlaces duros.
Podemos encontrar una similitud entre este tipo de enlaces y los accesos directos que estamos acostumbrados a crear con los sistemas Windows.
En el caso de los enlaces simbólicos, cada fichero tendrá un número de inodo distinto. Sin embargo, al igual que con los enlaces duros, todos los cambios que se realicen en uno de los ficheros se verán reflejados en el resto.
Si borramos el fichero enlazado, el enlace simbólico perderá toda la información, puesto que su inodo apunta a un número de inodo que ya no existe. Sin embargo, podremos crear enlaces simbólicos a ficheros de otros sistemas de archivos.
Ejemplo:
1 – Aún tenemos el fichero penlace. Creamos un enlace duro a penlace que se llame pruebaln.
$ln penlace pruebaln
2 – Con la orden ls –li vemos que ambos tienen el mismo inodo, y que este inodo tiene dos enlaces.
$ls -li pruebaln penlace
3 – Creamos un enlace simbólico a penlace que se llame penlacesim.
$ln –s penlace penlacesim
4 – Con la orden ls –li vemos que tienen distinto número de inodo. Además, el inodo de penlacesim sólo tiene un enlace, y el inodo de penlace sigue teniendo dos. En la línea correspondiente a penlacesim vemos que aparece el fichero al que apunta, y la letra l (“ele”) al inicio.
$ls -li pruebaln penlace penlacesim
5 – Cambiamos penlace y comprobamos si cambia penalcesim.
$cat >>penlace
otra vez adios
CTRL+ D
$cat penlacesim
6 – Por último borramos penlace. Comprobamos que pruebaln permanece y que no podemos ver el contenido de penlacesim, el sistema nos dirá que no existe. Para que desaparezca totalmente tenemos que borrarlo.
$rm penlace
$cat pruebaln
$cat penlacesim
$rm penlacesim
$rm pruebaln
Si solamente especificamos el fichero que queremos enlazar, y no indicamos ningún nombre para el enlace, éste se creará con el mismo nombre que el fichero a enlazar.
Los cambios que realicemos en el fichero enlazado o en el enlace, se reflejarán en el resto, ya que todos tendrán el mismo número de inodo, y por lo tanto hacen referencia al mismo conjunto de información.
La ventaja de utilizar enlaces duros radica en que el comando rm únicamente borrará aquel fichero que le indiquemos. La información solamente se borrará por completo cuando borremos todos los enlaces a un inodo.
La desventaja con respecto a los enlaces simbólicos es que sólo permite crear enlaces dentro del mismo sistema de ficheros.
Los directorios . y .. son enlaces duros al directorio actual y a su directorio padre respectivamente.
Ejemplo:
1 – Creamos el fichero pruebaln con la orden cat.
$cat > pruebaln
hola
CTRL+ D
2 – Creamos un enlace a pruebaln que se llame penlace.
$ln pruebaln penlace
3 – Veamos las características de estos ficheros con la orden ls. Utilizamos la opción –i
para ver el número de inodo. Ambos tendrán el mismo número de inodo con dos
enlaces.
$ls –i pruebaln penlace
4 – Modificamos pruebaln y comprobamos si también se modifica penlace.
$cat >>pruebaln
adios
CTRL+ D
$cat pruebaln
$cat penlace
5 – Modificamos penlace y comprobamos si también se modifica pruebaln.
$cat >>penlace
otra vez hola
CTRL+ D
$cat penlace
$cat pruebaln
6 – Eliminamos pruebaln y comprobamos si penlace permanece y contiene la información correspondiente.
$rm pruebaln
$cat penlace
7 – Si utilizamos la orden ls –i, vemos que penlace sigue con el mismo número de inodo, que ahora solamente tendrá un enlace.
ENLACES SIMBÓLICOS
Si utilizamos la opción –s con el comando ln, es decir ln –s, crearemos un enlace simbólico. La sintaxis en este caso es la misma que utilizamos para crear enlaces duros.
Podemos encontrar una similitud entre este tipo de enlaces y los accesos directos que estamos acostumbrados a crear con los sistemas Windows.
En el caso de los enlaces simbólicos, cada fichero tendrá un número de inodo distinto. Sin embargo, al igual que con los enlaces duros, todos los cambios que se realicen en uno de los ficheros se verán reflejados en el resto.
Si borramos el fichero enlazado, el enlace simbólico perderá toda la información, puesto que su inodo apunta a un número de inodo que ya no existe. Sin embargo, podremos crear enlaces simbólicos a ficheros de otros sistemas de archivos.
Ejemplo:
1 – Aún tenemos el fichero penlace. Creamos un enlace duro a penlace que se llame pruebaln.
$ln penlace pruebaln
2 – Con la orden ls –li vemos que ambos tienen el mismo inodo, y que este inodo tiene dos enlaces.
$ls -li pruebaln penlace
3 – Creamos un enlace simbólico a penlace que se llame penlacesim.
$ln –s penlace penlacesim
4 – Con la orden ls –li vemos que tienen distinto número de inodo. Además, el inodo de penlacesim sólo tiene un enlace, y el inodo de penlace sigue teniendo dos. En la línea correspondiente a penlacesim vemos que aparece el fichero al que apunta, y la letra l (“ele”) al inicio.
$ls -li pruebaln penlace penlacesim
5 – Cambiamos penlace y comprobamos si cambia penalcesim.
$cat >>penlace
otra vez adios
CTRL+ D
$cat penlacesim
6 – Por último borramos penlace. Comprobamos que pruebaln permanece y que no podemos ver el contenido de penlacesim, el sistema nos dirá que no existe. Para que desaparezca totalmente tenemos que borrarlo.
$rm penlace
$cat pruebaln
$cat penlacesim
$rm penlacesim
$rm pruebaln
9.5. Agrupación y compresión de ficheros: Comandos tar
y gzip/gunzip
Tanto el comando tar como gzip son ampliamente
empleados para la difusión de programas y ficheros en Linux.
tar Este comando agrupa varios ficheros en uno solo o “archivo”, mientras que el segundo
os comprime. En conjunto estos dos programas actúan de forma muy similar a programas como Winzip. Su sintaxis es:
tar Este comando agrupa varios ficheros en uno solo o “archivo”, mientras que el segundo
os comprime. En conjunto estos dos programas actúan de forma muy similar a programas como Winzip. Su sintaxis es:
tar [opciones][ficheros]
El modo en el que se escriben las opciones de tar
es un poco especial. El guión inicial, por ejemplo, no es necesario.
Las opciones más comunes para tar son:
-c creación de archivadores nuevos.
-x extracción de archivos de un archivador existente.
-v muestra los archivos mientras se agregan o se extraen.
-t muestra el contenido de un archivo tar.
-f el siguiente argumento es el archivador a crear, del que queremos extraer archivos o mostrar un listado.
Para crear un nuevo archivo se emplea:
Las opciones más comunes para tar son:
-c creación de archivadores nuevos.
-x extracción de archivos de un archivador existente.
-v muestra los archivos mientras se agregan o se extraen.
-t muestra el contenido de un archivo tar.
-f el siguiente argumento es el archivador a crear, del que queremos extraer archivos o mostrar un listado.
Para crear un nuevo archivo se emplea:
tar –cvf nombre_archivo.tar fichero1 fichero2 ...
donde fichero1, fichero2 etc. son los ficheros que
se van a añadir al archivo tar. Si se desea extraer los ficheros se emplea:
tar –xpvf nombre_archivo.tar fichero1 ...
Veamos algunos ejemplos:
# tar cvf escritorio.tar Desktop
empaqueta el contenido de Desktop en un archivador nuevo escritorio.tar
# tar cvf escritorio.tar Desktop
empaqueta el contenido de Desktop en un archivador nuevo escritorio.tar
#tar xvf escritorio.tar Desktop/Floppy.desktop
extrae del archivo escritorio.tar el fichero
indicado
#tar xvf escritorio.tar
extrae todo el contenido del archivo escritorio.tar
#tar tvf escritorio.tar
muestra un listado largo del contenido del archivo
escritorio.tar
Hay que tener en cuenta, a la hora de extraer el contenido de un archivador (al fichero tar resultante se le suele llamar así), si el archivador se creó conservando el nombre del directorio de origen. Es posible que se sobrescriba el contenido de los ficheros originales.
Ejemplo: Nos situamos en el directorio raíz como root. Si archivamos los ficheros / etc/group y /etc/passwd:
Hay que tener en cuenta, a la hora de extraer el contenido de un archivador (al fichero tar resultante se le suele llamar así), si el archivador se creó conservando el nombre del directorio de origen. Es posible que se sobrescriba el contenido de los ficheros originales.
Ejemplo: Nos situamos en el directorio raíz como root. Si archivamos los ficheros / etc/group y /etc/passwd:
#tar cvf backup.tar /etc/group /etc/passwd
estamos conservando los nombres del directorio al
que pertenecen. Por lo tanto, para extraer estos ficheros nos tendremos que
situar en el directorio raíz:
#cd /
#tar xvf backup.tar /etc/group /etc/passwd
#tar xvf backup.tar /etc/group /etc/passwd
Sin embargo, si archivamos los ficheros group y
passwd estando en /etc:
#tar cvf /backup.tar group passwd
no guardamos la ruta, por lo que para extraer los
ficheros tendremos que situarnos en ella:
#cd /
#cd /etc
#tar xvf /backup.tar group passwd
#tar xvf /backup.tar group passwd
gzip/gunzip Al
contrario que tar que agrupa varios ficheros en uno, gzip comprime un único
fichero con lo que la información se mantiene pero se reduce el tamaño del
mismo. El uso de gzip es muy sencillo:
gzip [opciones] fichero
con lo que se comprime fichero (que es borrado) y
se crea un fichero con nombre fichero.gz.
La opción más común es:
-1 a –9 grado de compresión, mínimo y máximo respectivamente.
-d descomprimir el fichero .gz
Si lo que se desea es descomprimir un fichero se emplea entonces:
gzip –d fichero.gz
recuperando el fichero inicial.
Otra posibilidad sería utilizar el comando gunzip para la descompresión, de la siguiente forma:
gunzip fichero.gz
Como se ha comentado al principio es típico emplear tar y gzip de forma consecutiva, para obtener ficheros con extensión tar.gz o tgz que contienen varios ficheros de forma comprimida (similar a un fichero zip). El comando tar incluye la opción z para estos ficheros de forma que para extraer los ficheros que contiene:
La opción más común es:
-1 a –9 grado de compresión, mínimo y máximo respectivamente.
-d descomprimir el fichero .gz
Si lo que se desea es descomprimir un fichero se emplea entonces:
gzip –d fichero.gz
recuperando el fichero inicial.
Otra posibilidad sería utilizar el comando gunzip para la descompresión, de la siguiente forma:
gunzip fichero.gz
Como se ha comentado al principio es típico emplear tar y gzip de forma consecutiva, para obtener ficheros con extensión tar.gz o tgz que contienen varios ficheros de forma comprimida (similar a un fichero zip). El comando tar incluye la opción z para estos ficheros de forma que para extraer los ficheros que contiene:
tar –zxf fichero.tar.gz
9.6. Cambio de modo de los ficheros: comandos chmod,
chown y chgrp
Cada usuario es dueño de su directorio personal y
será dueño también de los archivos que incluya en él.
Un usuario en Linux podrá configurar permisos en sus archivos. Por ello, distinguiremos por un lado tres categorías de usuarios, y por otro los tipos de permisos que cada uno de ellos puede tener sobre un archivo y/o directorio.
Categorías de usuarios
Un usuario en Linux podrá configurar permisos en sus archivos. Por ello, distinguiremos por un lado tres categorías de usuarios, y por otro los tipos de permisos que cada uno de ellos puede tener sobre un archivo y/o directorio.
Categorías de usuarios
Dueño del archivo (u).
Grupo dueño (g), formado por todos los usuarios que
son miembros de un grupo asociado al archivo.
Resto de usuarios (o), todos los usuarios que no
son ni el dueño ni miembros del grupo dueño.
Tipos de permisos
Lectura (r de Read, leer): para un archivo permite
leer su contenido, para un directorio permite que se muestren los archivos que
contiene.
Escritura (w de Write, escribir): para un archivo
permite que se modifique su contenido, para un directorio permite agregar y
quitar archivos.
Ejecución (x de eXecute, ejecutar): para un archivo
permite su ejecución, para un directorio permite que el usuario lo recorra (que
entre y pase por él) – si no tiene permiso de lectura, aunque pueda entrar no
podrá ver el contenido.
Cuando ejecutamos el comando ls –l nombre_archivo,
podemos ver la configuración de permisos del archivo nombre_archivo:
El primer carácter indica el tipo de archivo: “d”
si es directorio, “-“ si es un archivo regular, “l” si es un enlace
simbólico.
Los siguientes nueve caracteres indican los
permisos para el dueño, el grupo dueño y otros (rwxrwxrwx); si aparece un guión,
indica que el permiso correspondiente no está habilitado.
El siguiente número indica el número de vínculos.
Nombre del dueño y nombre del grupo dueño.
Tamaño en bytes.
Fecha de la última modificación.
Nombre del archivo.
1. Comando chmod
-> Para cambiar los permisos de un fichero se emplea el comando chmod, que
tiene el formato siguiente:
chmod [quien] oper permiso files
donde:
quien -> Indica a quien afecta el permiso que se
desea cambiar. Es una combinación cualquiera de las letras "u"
para el usuario, "g" para el grupo del usuario, "o"
para los otros usuarios, y "a" para todos los anteriores. Si
no se da el quien, el sistema supone "a".
oper -> Indica la operación que se desea hacer
con el permiso. Para dar un permiso se pondrá un +, y para quitarlo se pondrá
un -. Si quiero dar exactamente unos permisos, pondremos =.
permiso -> Indica el permiso que se quiere dar o
quitar. Será una combinación cualquiera de las letras anteriores : r,w,x,s.
files -> Nombres de los ficheros cuyos modos de
acceso se quieren cambiar.
Por ejemplo, para quitar el permiso de lectura a
los usuarios de un fichero llamado fichero.txt el comando a utilizar es:
chmod a -r fichero.txt
Los permisos de lectura, escritura y ejecución
tienen un significado diferente cuando se aplican a directorios y no a ficheros
normales. En el caso de los directorios el permiso r significa la posibilidad
de ver el contenido del directorio con el comando ls; el permiso w da la
posibilidad de crear y borrar ficheros en ese directorio, y el permiso x
autoriza a buscar y utilizar un fichero concreto.
2. Comando chown-> Por otra parte, el comando chown se emplea para cambiar de propietario (“change owner”) a un determinado conjunto de ficheros. Este comando sólo lo puede emplear el actual propietario de los mismos. Los nombres de propietario que admite Linux son los nombres de usuario, que están almacenados en el fichero /etc/passwd.
La forma general de utilización del comando chown es:
2. Comando chown-> Por otra parte, el comando chown se emplea para cambiar de propietario (“change owner”) a un determinado conjunto de ficheros. Este comando sólo lo puede emplear el actual propietario de los mismos. Los nombres de propietario que admite Linux son los nombres de usuario, que están almacenados en el fichero /etc/passwd.
La forma general de utilización del comando chown es:
chown newowner file1 file2 ...
3. Comando chgrp->
Análogamente, el grupo al que pertenece un fichero puede ser cambiado con el
comando chgrp, que tiene una forma general similar a la de chown,
chgrp newgroup file1 file2...
Los grupos de usuarios están almacenados en el
fichero /etc/group.
10. GESTIÓN DE USUARIOS Y GRUPOS
10.1. Introducción
Ya sabemos que Linux es un sistema multiusuario y
por lo tanto distingue diferentes usuarios. Cada usuario recibe una cuenta que
incluirá toda la información necesaria (nombre de usuario, directorio inicial,
etc.).
Además de las cuentas dadas a personas, existen cuentas especiales definidas por el sistema que tienen privilegios especiales. La más importante es la cuenta raíz (administrador), con el nombre de usuario root.
Normalmente, los usuarios normales están restringidos, de forma que los permisos de los ficheros en el sistema están preparados para que no puedan borrar o modificar ficheros en directorios compartidos por todos los usuarios.
Estas restricciones desaparecen para root. El usuario root puede leer, modificar o borrar cualquier fichero en el sistema, cambiar permisos y pertenencias, etc. Por lo tanto, podemos deducir que la gestión de los usuarios solamente puede realizarla el usuario root.
Además de las cuentas dadas a personas, existen cuentas especiales definidas por el sistema que tienen privilegios especiales. La más importante es la cuenta raíz (administrador), con el nombre de usuario root.
Normalmente, los usuarios normales están restringidos, de forma que los permisos de los ficheros en el sistema están preparados para que no puedan borrar o modificar ficheros en directorios compartidos por todos los usuarios.
Estas restricciones desaparecen para root. El usuario root puede leer, modificar o borrar cualquier fichero en el sistema, cambiar permisos y pertenencias, etc. Por lo tanto, podemos deducir que la gestión de los usuarios solamente puede realizarla el usuario root.
10.2. Conceptos de gestión de usuarios
La información que el sistema mantiene acerca de
cada usuario es la siguiente:
• Nombre de usuario: es un identificador único dado a cada usuario del sistema. Es la cadena de caracteres con la que el usuario se identifica al entrar en el sistema. Se pueden utilizar letras, dígitos y los caracteres _ (guión bajo) y . (punto). Ejemplo: simmd.
• User ID o UID: es un número único dado a cada usuario del sistema. Su número debe ser mayor que el del último usuario creado en el sistema.
• Group ID o GID: número identifica el grupo al que pertenece el usuario. El número ha de ser el mismo para todos los usuarios que formen el grupo. Cada usuario puede pertenecer a uno o más grupos definidos por el administrador del sistema. Aunque la importancia real de las relaciones de grupo es la relativa a los permisos de ficheros.
• Clave: el sistema almacena la contraseña del usuario encriptada. El comando passwd nos permitirá asignar y cambiar las claves de los usuarios.
• Nombre completo: puede ser el nombre real del usuario, su número de teléfono, su dirección, etc. Es decir, guarda información real sobre el sistema.
• Directorio inicial: es el directorio al que accede el usuario al entrar en el sistema. Cada usuario debe tener su propio directorio inicial, normalmente situado bajo /home. En principio será el único directorio en el que el usuario podrá guardar su información personal, programas, etc. Ejemplo: /home/simmd.
• Intérprete de inicio: es el intérprete de comandos que arranca para el usuario cuando se conecta al sistema. Ejemplos: /bin/bash, /bin/tcsh.
El fichero que contiene toda esta información relativa a los usuarios es el fichero / etc/passwd. Este fichero contiene una línea por cada usuario del sistema, y su estructura es la siguiente:
nombre:clave encriptada:UID:GID:nombre completo:directorio de inicio:intérprete
Ejemplo:
• Nombre de usuario: es un identificador único dado a cada usuario del sistema. Es la cadena de caracteres con la que el usuario se identifica al entrar en el sistema. Se pueden utilizar letras, dígitos y los caracteres _ (guión bajo) y . (punto). Ejemplo: simmd.
• User ID o UID: es un número único dado a cada usuario del sistema. Su número debe ser mayor que el del último usuario creado en el sistema.
• Group ID o GID: número identifica el grupo al que pertenece el usuario. El número ha de ser el mismo para todos los usuarios que formen el grupo. Cada usuario puede pertenecer a uno o más grupos definidos por el administrador del sistema. Aunque la importancia real de las relaciones de grupo es la relativa a los permisos de ficheros.
• Clave: el sistema almacena la contraseña del usuario encriptada. El comando passwd nos permitirá asignar y cambiar las claves de los usuarios.
• Nombre completo: puede ser el nombre real del usuario, su número de teléfono, su dirección, etc. Es decir, guarda información real sobre el sistema.
• Directorio inicial: es el directorio al que accede el usuario al entrar en el sistema. Cada usuario debe tener su propio directorio inicial, normalmente situado bajo /home. En principio será el único directorio en el que el usuario podrá guardar su información personal, programas, etc. Ejemplo: /home/simmd.
• Intérprete de inicio: es el intérprete de comandos que arranca para el usuario cuando se conecta al sistema. Ejemplos: /bin/bash, /bin/tcsh.
El fichero que contiene toda esta información relativa a los usuarios es el fichero / etc/passwd. Este fichero contiene una línea por cada usuario del sistema, y su estructura es la siguiente:
nombre:clave encriptada:UID:GID:nombre completo:directorio de inicio:intérprete
Ejemplo:
simmd:x:501:501:simmd:/home/simmd:/bin/bash
En el caso de los grupos, la información sobre
ellos se encuentra en el fichero /etc/group. Hay varios grupos definidos en el
sistema (root, bin, sys, mail, etc) que se utilizan para permisos de ficheros
del sistema. Los usuarios no deben pertenecer a ninguno de estos grupos.
El formato de cada línea del fichero /etc/group es el siguiente:
nombre del grupo:clave:GID:otros miembros
La clave del grupo no suele utilizarse.
En /etc/passwd cada usuario tiene un GID. Sin embargo, como los usuarios pueden pertenecer a otros grupos, podemos añadir su nombre de usuario en el campo otros miembros (separados unos usuarios de otros por comas) de todos aquellos grupos no definidos por el sistema a los que queremos que pertenezca.
Podemos conocer a qué grupos pertenece un usuario utilizando la orden groups. (El grupo con GID 100 suele ser el grupo users).
El formato de cada línea del fichero /etc/group es el siguiente:
nombre del grupo:clave:GID:otros miembros
La clave del grupo no suele utilizarse.
En /etc/passwd cada usuario tiene un GID. Sin embargo, como los usuarios pueden pertenecer a otros grupos, podemos añadir su nombre de usuario en el campo otros miembros (separados unos usuarios de otros por comas) de todos aquellos grupos no definidos por el sistema a los que queremos que pertenezca.
Podemos conocer a qué grupos pertenece un usuario utilizando la orden groups. (El grupo con GID 100 suele ser el grupo users).
10.3.Añadir nuevos usuarios y borrar usuarios
Podemos añadir usuarios al sistema de varias
formas. La más engorrosa de todas es hacerlo a mano. Es decir, añadimos al
fichero /etc/passwd la línea correspondiente al usuario. Seguidamente le
asignamos una clave con la orden passwd y finalmente establecemos el dueño,
grupo dueño y permisos para el directorio /home/usuario que deberemos crear.
Además, debemos actualizar /etc/shadow con pwconv.
Sin embargo, existen varias utilidades que nos permiten crear usuarios de una forma mucho más cómoda e intuitiva:
a) Servidor Xwindow. Entorno KDE
Iniciamos una sesión como root en el entorno gráfico. Seleccionamos:
Menú K Configuración Usuarios Crear usuarios (variará según la distribución)
Aparecerá un cuadro de diálogo con los usuarios normales que hay creados en el sistema y toda la información correspondiente a cada uno de ellos. Desde aquí podremos añadir, borrar y modificar usuarios y grupos. Una vez realizados los cambios oportunos debemos guardarlos, como si de un documento se tratase.
b) Entorno linuxconf:
Desde una sesión en modo consola podemos escribir la orden linuxconf para acceder a un entorno que nos permite gestionar todo Linux, y por lo tanto la gestión de usuarios.
Entramos en Users, User accounts (cuentas de usuario), y podremos ver todas las cuentas de usuario que están definidas en el sistema.
Para añadir una nueva cuenta, con el tabulador seleccionamos el botón Add.
Escribiremos el Login, Full name, group, Home directory, User ID, por ejemplo un cero en Must deep # days y siete en Warm # days before expiration. Con el tabulador nos posicionamos en el botón Accept.
Para salir de linuxconf pulsamos el botón Dismiss y Quit.
c) Useradd/Adduser
Las órdenes useradd y adduser también nos permiten añadir nuevas cuentas de usuario desde el modo consola. Podemos crear un usuario con las características por defecto:
Sin embargo, existen varias utilidades que nos permiten crear usuarios de una forma mucho más cómoda e intuitiva:
a) Servidor Xwindow. Entorno KDE
Iniciamos una sesión como root en el entorno gráfico. Seleccionamos:
Menú K Configuración Usuarios Crear usuarios (variará según la distribución)
Aparecerá un cuadro de diálogo con los usuarios normales que hay creados en el sistema y toda la información correspondiente a cada uno de ellos. Desde aquí podremos añadir, borrar y modificar usuarios y grupos. Una vez realizados los cambios oportunos debemos guardarlos, como si de un documento se tratase.
b) Entorno linuxconf:
Desde una sesión en modo consola podemos escribir la orden linuxconf para acceder a un entorno que nos permite gestionar todo Linux, y por lo tanto la gestión de usuarios.
Entramos en Users, User accounts (cuentas de usuario), y podremos ver todas las cuentas de usuario que están definidas en el sistema.
Para añadir una nueva cuenta, con el tabulador seleccionamos el botón Add.
Escribiremos el Login, Full name, group, Home directory, User ID, por ejemplo un cero en Must deep # days y siete en Warm # days before expiration. Con el tabulador nos posicionamos en el botón Accept.
Para salir de linuxconf pulsamos el botón Dismiss y Quit.
c) Useradd/Adduser
Las órdenes useradd y adduser también nos permiten añadir nuevas cuentas de usuario desde el modo consola. Podemos crear un usuario con las características por defecto:
#useradd usuario
#adduser usuario
#adduser usuario
Habremos creado un usuario sin contraseña. Para
habilitar su cuenta comprobamos si en el campo clave de los ficheros
/etc/passwd y /etc/shadow existen signos de admiración cerrada ( ! ), en ese
caso debemos borrarlos. Posteriormente establecemos una contraseña si lo
deseamos.
Si queremos crear un usuario a nuestra medida utilizaremos la siguiente sintaxis:
Si queremos crear un usuario a nuestra medida utilizaremos la siguiente sintaxis:
#useradd/adduser –r -p -u -g -c -d -s
Lo único que nos quedará por hacer será crear el
directorio /home del usuario y establecer los permisos pertinentes.
Para borrar un usuario desde el modo consola:
Para borrar un usuario desde el modo consola:
#userdel [-r] usuario
Si utilizamos la opción –r también eliminaremos el
directorio home del usuario o directorio inicial.
Una forma de deshabilitar una cuenta de usuario sin tener que borrarla es escribir ! en el campo clave del usuario en el fichero /etc/shadow o /etc/passwd.
Una forma de deshabilitar una cuenta de usuario sin tener que borrarla es escribir ! en el campo clave del usuario en el fichero /etc/shadow o /etc/passwd.
10.4. Otras órdenes para la gestión de usuarios y
grupos
chfn: permite cambiar el nombre completo del
usuario:
#chfn –f
groups: muestra todos los grupos a los que pertenece
el usuario.
groupadd: permite añadir un nuevo grupo. Sintaxis:
groupadd: permite añadir un nuevo grupo. Sintaxis:
#groupadd [-g GID] [-f]
-f obliga al sistema a informar si se producen
errores (por ejemplo cuando el grupo que queremos crear ya existe).
Si no especificamos un GID, el sistema asigna el menor GID que corresponde a este
grupo.
groupdel: borra el grupo cuyo nombre indiquemos junto a la orden.
groupmod: permite modificar el GID y el nombre del grupo. Sintaxis:
Si no especificamos un GID, el sistema asigna el menor GID que corresponde a este
grupo.
groupdel: borra el grupo cuyo nombre indiquemos junto a la orden.
groupmod: permite modificar el GID y el nombre del grupo. Sintaxis:
#groupmod [-g ] [-n ]
id: muestra UID y GID del usuario y los grupos a
los que pertenece el usuario conectado al sistema. Sintaxis:
#id
#id usuario
11. REDIRECCIONAMIENTO Y TUBERÍAS
11.1. Introducción
Muchos comandos de Unix toman su entrada de la
ENTRADA ESTÁNDAR (stdin) y envían su salida a la SALIDA ESTÁNDAR (stdout). El
intérprete de comandos configura el sistema de forma que la stdin es el teclado
y la stdout la pantalla.
Veamos al gunos ejemplos que ilustren esta cuestión:
Ejemplo 1: Si al comando cat no le pasamos argumentos, actuará mostrando en pantalla todo lo que hayamos tecleado antes de un Intro. Para indicarle al sistema que queremos finalizar la ejecución de cat, pulsamos la combinación de teclas CTRL+ D.
$cat
hola lo que recibe de la stdin
hola lo que devuelve a la stdout
CTRL+ D fin de cat
$
Ejemplo 2: El comando sort actúa de forma parecida. Si lo ejecutamos e introducimos un conjunto de líneas desde la stdin, cuando pulsemos la combinación CTRL+ D devolverá a la stdout las mismas líneas pero de forma ordenada.
$sort
méndez
luque
rodríguez
CTRL+ D fin de entradas
luque
méndez
rodríguez
$
Veamos al gunos ejemplos que ilustren esta cuestión:
Ejemplo 1: Si al comando cat no le pasamos argumentos, actuará mostrando en pantalla todo lo que hayamos tecleado antes de un Intro. Para indicarle al sistema que queremos finalizar la ejecución de cat, pulsamos la combinación de teclas CTRL+ D.
$cat
hola lo que recibe de la stdin
hola lo que devuelve a la stdout
CTRL+ D fin de cat
$
Ejemplo 2: El comando sort actúa de forma parecida. Si lo ejecutamos e introducimos un conjunto de líneas desde la stdin, cuando pulsemos la combinación CTRL+ D devolverá a la stdout las mismas líneas pero de forma ordenada.
$sort
méndez
luque
rodríguez
CTRL+ D fin de entradas
luque
méndez
rodríguez
$
11.2. Redireccionamiento de la entrada y la salida
Al igual que en MS-DOS, podemos utilizar los
caracteres > y <>fichero
b. Redirección no destructiva: crea un nuevo fichero o añade al final del contenido de uno que ya existe la información que el comando recibe de la stdin.
$comando >>fichero
$sort <. Con cat no tiene mucho sentido, ya que el resultado que se obtiene es igual al que produce sin utilizar este redireccionamiento. Con sort, mostrará en pantalla el contenido del fichero que le indiquemos de forma ordenada. (Ver el ejemplo 4 anterior). 10.3. Tuberías (pipes)
Hemos visto que el comando sort, aunque simple, actúa como filtro, devolviendo a la salida lo que recibe desde la entrada de forma ordenada.
Las tuberías pueden ser utilizadas para combinar comandos, de forma que la salida del primero es enviada a la entrada del segundo y así sucesivamente.
De esta forma, podemos aplicar un filtro a la stdout del comando ls enviándola a la stdin de sort. Lo que conseguimos es conectar una cadena de comandos en una tubería.
Para crear las tuberías utilizamos el carácter | (barra vertical, carácter de canalización).
Ejemplos:
$ls /usr/bin |more muestra el contenido de /usr/bin por pantallas.
$ls |sort -r muestra un listado del directorio actual ordenado alfabéticamente de mayor a menor.
$ls |sort -r |head -1 veremos el primer fichero de un listado del directorio actual
ordenado alfabéticamente de mayor a menor.
b. Redirección no destructiva: crea un nuevo fichero o añade al final del contenido de uno que ya existe la información que el comando recibe de la stdin.
$comando >>fichero
$sort <. Con cat no tiene mucho sentido, ya que el resultado que se obtiene es igual al que produce sin utilizar este redireccionamiento. Con sort, mostrará en pantalla el contenido del fichero que le indiquemos de forma ordenada. (Ver el ejemplo 4 anterior). 10.3. Tuberías (pipes)
Hemos visto que el comando sort, aunque simple, actúa como filtro, devolviendo a la salida lo que recibe desde la entrada de forma ordenada.
Las tuberías pueden ser utilizadas para combinar comandos, de forma que la salida del primero es enviada a la entrada del segundo y así sucesivamente.
De esta forma, podemos aplicar un filtro a la stdout del comando ls enviándola a la stdin de sort. Lo que conseguimos es conectar una cadena de comandos en una tubería.
Para crear las tuberías utilizamos el carácter | (barra vertical, carácter de canalización).
Ejemplos:
$ls /usr/bin |more muestra el contenido de /usr/bin por pantallas.
$ls |sort -r muestra un listado del directorio actual ordenado alfabéticamente de mayor a menor.
$ls |sort -r |head -1 veremos el primer fichero de un listado del directorio actual
ordenado alfabéticamente de mayor a menor.
12. LA EDICIÓN DE TEXTO. EL EDITOR vi
12.1. Introducción
En Linux existen muchos editores de texto disponibles (vi, Emacs, joe), sin embargo será el visual editor (vi) el único que encontraremos en cualquier sistema Unix.
vi fue el primer editor de pantalla completa que existió y, aunque no es fácil de usar, es una herramienta extremadamente potente. La versión proporcionada con Mandrake es una versión mejorada de vi (vim – VI iMproved).
Para comenzar con vi y editar un fichero de texto emplearemos la sintaxis:
$vi
En la pantalla, de 24 líneas, aparecerá una columna
de “~” que indican el final del fichero. En la parte inferior veremos el nombre
del nuevo fichero.
En un principio no podremos insertar texto, ya que vi arranca en el modo órdenes, uno de los tres posibles modos de operación: modo órdenes, modo inserción, modo última línea.
• En modo órdenes o modo comandos no podremos insertar texto. Nos permitirá usar ciertas órdenes de edición de ficheros o cambiar a otros modos.
• Al modo de inserción, que nos permitirá escribir y desplazarnos por el archivo, se accede desde el modo comando por ejemplo con la orden i. Para volver al modo comando pulsamos la tecla Esc.
• El modo última línea, o modo ex, proporciona ciertas órdenes extendidas a vi, como por ejemplo salir de vi guardando o sin guardar los cambios realizados en el archivo (:wq :q!). Para acceder a este modo, tecleamos : desde el modo comando. Para salir de él ejecutamos una orden o borramos todo, incluidos los dos puntos.
En un principio no podremos insertar texto, ya que vi arranca en el modo órdenes, uno de los tres posibles modos de operación: modo órdenes, modo inserción, modo última línea.
• En modo órdenes o modo comandos no podremos insertar texto. Nos permitirá usar ciertas órdenes de edición de ficheros o cambiar a otros modos.
• Al modo de inserción, que nos permitirá escribir y desplazarnos por el archivo, se accede desde el modo comando por ejemplo con la orden i. Para volver al modo comando pulsamos la tecla Esc.
• El modo última línea, o modo ex, proporciona ciertas órdenes extendidas a vi, como por ejemplo salir de vi guardando o sin guardar los cambios realizados en el archivo (:wq :q!). Para acceder a este modo, tecleamos : desde el modo comando. Para salir de él ejecutamos una orden o borramos todo, incluidos los dos puntos.
12.2. Insertar texto
Si estamos en modo órdenes podemos pasar al modo de
inserción de varias formas:
• Tecla i: para insertar texto desde la posición en la que se encuentra el cursor.
• Tecla a: para insertar texto comenzando detrás de la posición actual del cursor.
• Tecla A: para insertar texto comenzando al final de la línea actual.
• Tecla I (i mayúscula): para insertar texto comenzando al inicio de la línea actual.
• Tecla o: para insertar texto debajo de la línea actual.
• Tecla O: para insertar texto por encima de la línea actual.
En la parte inferior de la pantalla aparecerá la cadena –INSERT—indicándonos que estamos en el modo de inserción. Podremos borrar y suprimir texto, además de movernos por el archivo con las flechas del cursor.
• Tecla i: para insertar texto desde la posición en la que se encuentra el cursor.
• Tecla a: para insertar texto comenzando detrás de la posición actual del cursor.
• Tecla A: para insertar texto comenzando al final de la línea actual.
• Tecla I (i mayúscula): para insertar texto comenzando al inicio de la línea actual.
• Tecla o: para insertar texto debajo de la línea actual.
• Tecla O: para insertar texto por encima de la línea actual.
En la parte inferior de la pantalla aparecerá la cadena –INSERT—indicándonos que estamos en el modo de inserción. Podremos borrar y suprimir texto, además de movernos por el archivo con las flechas del cursor.
12.3. Borrar texto
Además de las teclas de retroceso y suprimir,
podemos utilizar otras órdenes para
borrar desde el modo comando:
• Tecla x: borra el carácter en el que se encuentra situado el cursor.
• Tecla X: borra el carácter que está a la izquierda del cursor.
• Teclas dd: borra la línea en la que se encuentra el cursor.
• Tecla dw: borra la palabra en la que se encuentra el cursor.
• Tecla o: para insertar texto debajo de la línea actual.
• Tecla O: para insertar texto por encima de la línea actual.
borrar desde el modo comando:
• Tecla x: borra el carácter en el que se encuentra situado el cursor.
• Tecla X: borra el carácter que está a la izquierda del cursor.
• Teclas dd: borra la línea en la que se encuentra el cursor.
• Tecla dw: borra la palabra en la que se encuentra el cursor.
• Tecla o: para insertar texto debajo de la línea actual.
• Tecla O: para insertar texto por encima de la línea actual.
12.4. Modificar texto
Desde el modo comando podemos reemplazar o
sustituir parte del texto:
• Tecla r: permite sustituir el carácter en el que se encuentra el cursor.
• Tecla R: en la parte inferior de la pantalla aparecerá la cadena –REPLACE--, que nos indica que podemos reemplazar el texto hasta que pulsemos la tecla Esc. Es decir, R es similar al modo de inserción, con la diferencia de que en lugar de insertar texto lo sobrescribe.
• Teclas :r : inserta en el fichero que estamos editando el contenido del fichero que indicamos.
• Tecla ~: cambia de mayúsculas a minúsculas, o viceversa, el carácter en el que se encuentra el cursor (F10 cambia uno, F11 cambia tres, F12 cambia cuatro).
• Tecla r: permite sustituir el carácter en el que se encuentra el cursor.
• Tecla R: en la parte inferior de la pantalla aparecerá la cadena –REPLACE--, que nos indica que podemos reemplazar el texto hasta que pulsemos la tecla Esc. Es decir, R es similar al modo de inserción, con la diferencia de que en lugar de insertar texto lo sobrescribe.
• Teclas :r : inserta en el fichero que estamos editando el contenido del fichero que indicamos.
• Tecla ~: cambia de mayúsculas a minúsculas, o viceversa, el carácter en el que se encuentra el cursor (F10 cambia uno, F11 cambia tres, F12 cambia cuatro).
12.5. Órdenes de desplazamiento
Además de las flechas del cursor, podemos movernos
por el documento desde el modo comando utilizando una serie de órdenes:
• Tecla h: un carácter a la izquierda.
• Tecla j: un carácter abajo.
• Tecla k: un carácter arriba.
• Tecla l (ele minúscula): un carácter a la derecha.
• Tecla e: al final de la palabra actual.
• Tecla b: al inicio de la palabra actual.
• Tecla w: al inicio de la palabra siguiente.
• Tecla 0 (cero): al inicio de la línea actual.
• Tecla $: al final de la línea actual.
• /: desplaza el cursor hacia delante hasta que encuentra el texto cadena.
• ?: desplaza el cursor hacia atrás hasta que encuentra el texto cadena.
• Tecla H: va al comienzo del archivo.
• Tecla G: va al final del archivo.
• CTRL+ f: avanza una pantalla.
• CTRL+ b: va una pantalla hacia atrás.
Cada uno de los comandos de movimiento puede estar precedido por un número, de forma que tenemos la posibilidad de movernos a una palabra, línea o carácter arbitrarios.
Además, podemos asociar órdenes de desplazamiento con otras órdenes como por ejemplo borrar.
Ejemplos:
10G: va a la línea 10 del fichero.
dG: borrará todo, desde la posición del cursor hasta el final del fichero.
d$: borrará todo desde la posición del cursor hasta el final de la línea.
3e: moverá el cursor tres palabras hacia delante.
d3b: borrará tres palabras hacia atrás.
d/: borra todo desde la posición del cursor hasta que encuentra el texto cadena.
d0: borra todo hasta el inicio de la línea actual.
• Tecla h: un carácter a la izquierda.
• Tecla j: un carácter abajo.
• Tecla k: un carácter arriba.
• Tecla l (ele minúscula): un carácter a la derecha.
• Tecla e: al final de la palabra actual.
• Tecla b: al inicio de la palabra actual.
• Tecla w: al inicio de la palabra siguiente.
• Tecla 0 (cero): al inicio de la línea actual.
• Tecla $: al final de la línea actual.
• /: desplaza el cursor hacia delante hasta que encuentra el texto cadena.
• ?: desplaza el cursor hacia atrás hasta que encuentra el texto cadena.
• Tecla H: va al comienzo del archivo.
• Tecla G: va al final del archivo.
• CTRL+ f: avanza una pantalla.
• CTRL+ b: va una pantalla hacia atrás.
Cada uno de los comandos de movimiento puede estar precedido por un número, de forma que tenemos la posibilidad de movernos a una palabra, línea o carácter arbitrarios.
Además, podemos asociar órdenes de desplazamiento con otras órdenes como por ejemplo borrar.
Ejemplos:
10G: va a la línea 10 del fichero.
dG: borrará todo, desde la posición del cursor hasta el final del fichero.
d$: borrará todo desde la posición del cursor hasta el final de la línea.
3e: moverá el cursor tres palabras hacia delante.
d3b: borrará tres palabras hacia atrás.
d/: borra todo desde la posición del cursor hasta que encuentra el texto cadena.
d0: borra todo hasta el inicio de la línea actual.
12.6. Cortar, copiar y pegar
Utilizaremos las órdenes y (Yank) y d (Delete) para
copiar y cortar texto respectivamente.
Combinaremos estas dos órdenes con las de desplazamiento para copiar o cortar conjuntos de caracteres, líneas, palabras.
Para pegar el texto que hemos copiado o cortado utilizaremos las órdenes p (para insertar el texto después del cursor) y P (para insertar el texto antes del cursor).
Ejemplos:
y?: copiará todo desde la posición del cursor hacia atrás, hasta que encuentre el texto cadena.
d15l: cortará 15 caracteres desde la posición del cursor hacia la derecha.
y$: copiará todo desde la posición del cursor hasta el final del párrafo actual.
Combinaremos estas dos órdenes con las de desplazamiento para copiar o cortar conjuntos de caracteres, líneas, palabras.
Para pegar el texto que hemos copiado o cortado utilizaremos las órdenes p (para insertar el texto después del cursor) y P (para insertar el texto antes del cursor).
Ejemplos:
y?: copiará todo desde la posición del cursor hacia atrás, hasta que encuentre el texto cadena.
d15l: cortará 15 caracteres desde la posición del cursor hacia la derecha.
y$: copiará todo desde la posición del cursor hasta el final del párrafo actual.
12.7. Guardar y salir
Para salir sin guardar los cambios escribimos :q!.
Para salir guardando los cambios escribimos :wq o ZZ o :x.
Para guardar los cambios sin salir escribimos :w.
12.8. Editar otros ficheros
Si estamos editando un fichero con vi, podemos
editar otro escribiendo :e desde el modo comando. Para poder utilizar esta
orden tendremos que indicarle a vi si queremos guardar o no los cambios del
primer fichero; es decir, utilizaremos :w y luego :e, o bien :e! Directamente
si no queremos guardar los cambios. Dejaremos de editar el primero y pasaremos
al segundo.
12.9. Ejecutar comandos del intérprete
Podemos insertar, en el fichero que estamos
editando, la salida de un comando. Para ello utilizamos la orden :r! y a
continuación el comando que queremos ejecutar. Por ejemplo,
:r! ls –i
inserta un listado del directorio actual con
números de inodo al final del párrafo actual.
También podemos ejecutar una orden desde vi y volver al editor una vez que ésta finalice. Utilizaremos la orden :!. Por ejemplo,
También podemos ejecutar una orden desde vi y volver al editor una vez que ésta finalice. Utilizaremos la orden :!. Por ejemplo,
:! ls –i
mostrará en
pantalla el mismo listado que en el ejemplo anterior, aunque en este caso los
resultados no se insertarán en el fichero.
Incluso podemos dejar temporalmente vi e iniciar el intérprete de comandos para ejecutar otras órdenes. Para salir del intérprete y regresar a vi utilizamos la orden exit. Para iniciar el intérprete usamos la orden :shell. Por ejemplo, es posible que queramos consultar la página de manual de vi y guardarla en un fichero.
Incluso podemos dejar temporalmente vi e iniciar el intérprete de comandos para ejecutar otras órdenes. Para salir del intérprete y regresar a vi utilizamos la orden exit. Para iniciar el intérprete usamos la orden :shell. Por ejemplo, es posible que queramos consultar la página de manual de vi y guardarla en un fichero.
Suscribirse a:
Entradas (Atom)