Inicio
Foro
Scenespain
Ingresar
Registrarse
Ayuda
Mis datos
Modificar mis datos
Perfil del foro
Mensajes privados
Enviar mensaje
Mensajes privados
Enviar mensaje
Ver lista de usuarios
Buscar por usuario
Tienda
Foro tienda
Galeria imagenes
Normas
Foro General
Ps2
Ps3
Psp
PS Vita
Wii
NDS, Lite, XL, 3DS
Xbox
Xbox 360
Pc
Mobiles
Linux
Msx
Videotutoriales
Off Topic
Compra-Venta
Noticias
1 Hora
1 Día
1 Semana
1 Mes
Siempre
Registrate y evitaras que te salgan los Popup de publicidad
scenespain.net
>
FOROS GENERALES
>
Linux
(Moderador:
yako
) > Tema:
[CURSO DESDE CERO] GNU/LINUX
Páginas: [
1
]
2
3
Ir Abajo
« anterior
próximo »
Imprimir
Autor
Tema: [CURSO DESDE CERO] GNU/LINUX (Leído 6448 veces)
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
[CURSO DESDE CERO] GNU/LINUX
«
:
Septiembre 30, 2007, 02:32:18 »
Curso originalmente publicado en noticias3d
CURSO DESDE 0 DE GNU/LINUX.
Entrega 0. Uno, dos... probando, sí, hola... uno, dos.
$ make fire
Make: Don't know how to make fire. Stop.
Presentación
A la tercera va la vencida, después de varios intentos de revisión y continuos abandonos del curso, tomo aire y cojo lo que un día comencé, espero esta vez sí darle más continuidad salvo que el trabajo no me lo permita, que fue uno de los motivos de mi abandono anterior.
Para los nuevos: soy Matados'2k el desaparecido, muchos ya me conocen de los foros de noticias3d.com, otros me conocen por
www.sinuh.org
por donde no aparezco desde hace muuuucho tiempo y creo que me matarán XD por no cumplir lo que les prometí y otros tantos me conocerán por la extinta Linux Free Magazine que publicaba este curso.
A los nuevos, presentarme y a los no tan nuevos, mandarles un saludo y en general agradecer todos esos comentarios de apoyo recibidos allí donde se publicaba el curso, comentarios que me llenan de satisfacción al leerlos y me daban muchos ánimos para seguir. Por supuesto, gracias por todas la críticas buenas y malas y correcciones al curso, mi punto de vista no tiene por qué ser exacto ni yo perfecto, gracias siempre por vuestra comprensión y ganas de ayudarme a corregirlo. En esta edición serán corregidas todas las erratas.
Sólo me queda dar gracias en especial a mi novia, amiga y futura esposa Karuchi, correctora y sufridora de la publicación de este curso, dar la gracias a sinuh por su apoyo, a la comunidad de foro.noticias3d.com donde he aprendido mucho más de lo que yo aquí puedo enseñar y donde he conseguido un buen puñado de amigos.
Mi época de estudiante ya pasó, mi época de becario terminó y ahora me encuentro en el mundo laboral, soy Ingeniero en Informática actualmente metido en el mundo de los sistemas de información geográfica donde en buena parte me muevo por software libre, aunque no siempre es así.
Soy un convencido de la filosofía del software libre y usuario habitual de GNU/Linux. Y bueno, esta es una aportación que quiero hacer a la comunidad que tanto me ha dado, sí es pequeña ya lo sé, pero espero que sea útil, algún día espero poder aportar una gran contribución, ideas no me faltan pero de tiempo no dispongo mucho.
¿Por qué escribir un curso de GNU/Linux? Pues sencillamente por satisfacción propia.
¿Cuál será la duración? Pues de momento será indefinida ya que no creo que los temas a tratar se nos acaben, así que paciencia que hay mucho camino.
¿Cada cuánto escribiré una entrega? Pues he pensado que en esta edición cada quince días pondré una, todo depende de mi tiempo disponible y de lo que me animéis vosotros (ya sabéis que es muy aburrido predicar en el desierto).
¿Dónde encontrarme? En los foros de noticias3d.com, en los foros de
www.sinuh.org
y por fin en mi propia web
http://matados2k.es
. Rogaría que todas las preguntas que salgan sobre el curso me las hicierais en los foros (evidentemente no hace falta decir la sección) y evitéis añadirme al messenger porque no me gusta que me añadan para freírme a preguntas (las preguntas a los foros) y puede que si abusáis os bloquee. Si queréis podéis mandarme e-mails, pero si alguno ya me conoce bien sabe que soy muy perro y puede que tarde en contestar (sin embargo postear no me da nada de pereza) pero contestar, contesto (sugerencias, criticas, comentarios ... nada de preguntas).
Por dónde empezar
Bueno, a algunos puede que no les guste por dónde voy a empezar pero es que yo pienso que es la parte más importante y la que más chicha tiene y es la consola de texto. Algunos de vosotros la veréis como algo anticuado y complicado (nada más lejos de la realidad), pero sinceramente ya os daréis cuenta de que la consola de comandos da una libertad muy grande y es muy potente, además de necesaria, que después nos pasa lo que nos pasa. Sí, tocaremos lo que son los entornos gráficos, pero cuando tengamos visto lo importante, que en modo gráfico también hay muchas cosas interesantes de ver además de ser lo que más vais a usar.
Dónde se publicará oficialmente el curso
La web oficial del curso es
http://matados2k.es
, y concretamente serán publicados en
http://drupal.matados2k.es/
, este será el primer sitio donde será publicado, con posterioridad se publicará una réplica entre 2 y 3 días más tarde en la web de
http://www.sinuh.org
y si es posible en la web de
http://www.noticias3d.com
, estos y sólo estos serán los sitios donde yo oficialmente lo publicaré, del resto de sitios donde se replique manteniendo la licencia me desentenderé ya que para eso es un curso de libre distribución, no comercial, con reconocimiento y sin obra derivada, lo único que pido es que se respeten las condiciones.
Finalizando
Bueno, pues después de esta entrega tostón deciros que empezaremos la 1ª entrega con los conocimientos básicos necesarios para instalar una distribución y viendo cómo es nuestro sistema operativo y cómo está estructurado para entenderlo mejor.
Agradecimientos:
· Revisión del documento: karuchi (Carolina García).
Página oficial y dominio de mi propiedad
http://matados2k.es
Matados'2k Usuario y moderador de foro.noticias3d.com
Matados'2k Usuario y moderador de
www.sinuh.org
matados2k (arroba) gmail (punto) com
Este documento está sometido a la licencia de creative commons en su variante "Reconocimiento-NoComercial-SinObraDerivada 2.1 España". Es de agradecer que se comunique al autor el uso de este documento en otro medio y se debe incluir de forma obligatoria este recuadro y los agradecimientos.
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #1 :
Septiembre 30, 2007, 02:34:18 »
Entrega 1. Manos a la obra (1ª parte).
Si Atila y su caballo hubieran usado Linux...
$ for i in spqr/*; do rm -rf $i; cut grass; done
Para empezar
Lo aquí expuesto ha sido corregido y ampliado con los comentarios que en su día se hicieron. No voy a extenderme más de lo que en su día me extendí, ya que el texto está pensado para dar una mínima pero útil visión de que es en concreto GNU/Linux y el software libre, sin entrar en detalles ni las discusiones técnicas tan habituales en los ya avanzados usuarios del software libre, por dos motivos: se escapa del objetivo de este curso y, segundo, no veo útil abrumar con información y discusiones al lector con menos conocimientos al que va dirigido este curso.
Mitos y leyendas
Bueno, para empezar y antes de todo, lo primero que quiero es desmitificar afirmaciones que mucha gente tiene como ciertas.
El software libre es gratuito. Esta es la creencia más arraigada entre la gente y por supuesto totalmente falsa. El software libre no tiene por qué ser gratuito, aún cuando puedas conseguirlo gratuitamente. Es perfectamente normal cobrar por ello (si no mirad la cantidad de distribuciones que son comerciales), generalmente no hay un pago por licencia, siendo lo normal el pago por el soporte y mantenimiento, que un usuario normal no suele usar pero sí generalmente empresas. Ni que decir tiene que hay muchas más formas, pero no es el objetivo de este curso, al menos de momento.
Linux sólo es para hackers y programadores. Otra cosa que es totalmente falsa y que aún sigue en la mente de muchos. Linux es cada vez más un sistema operativo de lo más versátil al que le queda muy pocos campos en los que se queda cojo.
Linux es difícil. Realmente esto con los nuevos escritorios y las instalaciones tan sencillas que se nos ofrecen es ya algo del pasado. Lo único que requiere Linux es tener unos conocimientos mínimos que tampoco son nada del otro mundo para poder empezar a usarlo. Otra cosa es que no tengamos paciencia ya que el cambio siempre es costoso, tanto por la comodidad de lo conocido como por querer aprender algo nuevo en poco tiempo.
Linux es seguro. Esto es según nosotros queramos que lo sea, por defecto sí es más seguro, pero esto no da más que una falsa seguridad. Hay que recordar que no hay configuraciones por defecto buenas y un sistema mal mantenido y configurado es algo bastante vulnerable. Linux es tan seguro como nosotros de paranoicos para que lo sea.
En Linux no existen virus. Otra cosa totalmente falsa y que muchísima gente cree o piensa que hay 10 ó 12 a lo sumo. Hay varios factores por los que los virus en Linux no tienen mucho alcance. Lo primero es que el usuario medio de Linux no es ni mucho menos el usuario medio de Windows, y muchas técnicas de ingeniería social usadas por los virus no surten mucho efecto, amén de que se acostumbra a conocer el origen de los programas. Otro factor a tener en cuenta es que Linux no es la plataforma mayoritaria, y bien es sabido que todo creador quiere que su creación llegue lo más lejos posible. Y totalmente obvio es que la seguridad es mejor y los errores se corrigen mucho más rápidamente al ser un sistema abierto. Para los incrédulos, decir que hay más de 300 virus para Linux, pero lo bueno es que muchos de ellos son pruebas y virus de “laboratorio”. Lo que sí podemos es llegar a la conclusión de que el riesgo de virus en un sistema Linux es tan pequeño que no es nada preocupante no tener un antivirus, que generalmente sirven para limpiar virus de Windows ya que hay muchos servidores Linux en Internet.
Qué puedo y no puedo hacer con software libre.
Los derechos que tenemos con el software libre (la licencia GPL de la GNU es la más representativa aunque existen muchísimas más como por ejemplo la BSD, ver este enlace) es que podemos copiarlo, modificarlo e incluso redistribuirlo y cobrar por ello si quisiéramos (otra cosa es que nos paguen por ello), pero bajo unos deberes. En el caso concreto de nuestro representativo ejemplo, la licencia GPL, tienes que distribuir el código, respetar la licencia y las notas de autor, siendo ilegal apropiarse de ese código. Si tú modificas algo con licencia GPL el nuevo código será forzosamente GPL (otra cosa es que tú uses código propietario apoyado en GPL), y evidentemente tú serás el autor de ese código que añades. Para una mejor información lee la propia GPL, es un poco pesada pero bueno.
Nota: Software abierto no es lo mismo que software libre, con un software abierto puedes ver su código pero no tienen que cumplirse los otros derechos.
Características de GNU/Linux.
Multitarea. Puede hacer varias cosas a la vez y además hay que destacar que es el multitarea más eficiente que he visto nunca.
Multiusuario. Cualquier Linux puede tener muchos usuarios concurrentemente usándolo en Tiempo real y sin ningún programa añadido, ya sea por consolas virtuales, sesiones remotas o terminales.
Multiprocesador. Maneja dos o más procesadores a la vez, sin por ello tener que pagar nada de más.
Soportado por múltiples arquitecturas. ¿Conoces alguna arquitectura de computador? Seguro que ya hay una versión de Linux para ella a menos que sea demasiado nueva (y ya tiene que serlo) para que no la haya. Hay que destacar que no existen versiones de Linux para arquitecturas Intel más bajas que el 386. ¿Sale una nueva arquitectura? Seguro que si no está ya soportada pronto lo estará, mirad si no qué rápido fue soportado el AMD 64.
Dónde conseguir GNU/Linux.
Pues es bien sencillo, si no conoces a nadie que tenga una distribución que pueda pasarte, puedes conseguirlas en páginas como
www.linuxiso.org
donde encontrarás casi todas las distribuciones disponibles o en ftps como el de ftp.rediris.es/pub. Si no tienes una buena conexión a Internet u oportunidad de que alguien baje una por ti, sólo tienes que acercarte a una librería o kiosco y buscar una revista especializada, seguro que alguna trae una distribución incluida.
Para empezar yo os recomendaría usar distribuciones como Red hat, Suse o Mandrake. Personalmente yo me decanto por Mandrake para los más novatos, pero está claro que es cuestión de gustos. Una vez dominado un poco el tema es entonces cuando aconsejaría el uso de una Debian o Gentoo.
También si somos algo perros o no nos interesa tenerla en nuestro disco duro o simplemente por miedo, existen versiones Live (que arrancan de CD y funcionan en memoria sin tener que instalar nada), en este caso me decanto indiscutiblemente por knoppix (basada en Debian), existiendo muchas otras como Suse Live, Linex, Guadalinex (Estas dos últimas tienen su correspondiente versión instalable y pertenecen a la Junta de Extremadura y a la Junta de Andalucía respectivamente, ambas basadas en Debian), Linuxin… amén de muchas más.
Otras distribuciones recomendables pueden ser Lyrcoris, Yoper, Slackware (esta es otra de las grandes que con el tiempo ha ido perdiendo adeptos, pero sin duda Slackware es muy buena), LambdaUX y desaconsejaría distribuciones con Lindows OS.
Pero como siempre todo es cuestión de gustos, y lo aquí expuesto esta basado en la experiencia y mi opinión personal. Seguro que encuentras el sabor Linux (Linux like) que más te gusta.
Instalar GNU/Linux
Evidentemente me es imposible hacer una guía de instalación para cada una de las distribuciones aquí expuestas y tampoco voy a explicar una o dos. Simplemente voy a dar unos conocimientos previos necesarios para poder desenvolverse bien en casi todas las distribuciones (explicar para una Debian o un Gentoo, por ejemplo, es más complicado) ya que muchas de ellas tienen instaladores casi tan simples o más aún que cualquier Windows.
¡Ojo, no enseño las herramientas, sino que os inicio en los conocimientos necesarios para que utilices las herramientas que creáis oportunas!
Lo primero que debemos saber es cómo van las particiones en los discos duros. Un disco duro puede tener hasta 4 particiones de tipo primario y extendido. Sólo puede haber una partición extendida, con lo que podemos tener de 1 a 4 primarias o de 1 a 3 primarias y por último una extendida. Al menos tiene que existir una primaria, y si hay varias primarias una de ellas tiene que ser la “activa”, que es la que arrancará el ordenador (mbr, que sólo las primarias tienen). Hay que decir que las extendidas no se usan físicamente y sólo sirven para definir dentro de ellas lo que denominamos particiones lógicas. Dentro de una partición extendida podemos definir todas las lógicas que queramos. Esto puede parecer un trabalenguas, si así te parece, lee este párrafo varias veces y haz un diagrama.
Lo más normal y lógico, desde mi punto de vista y experiencia, es tener una primaria y una extendida, y dentro de ésta las lógicas que vayamos a necesitar. Tanto Linux como otros sistemas operativos pueden funcionar perfectamente en particiones lógicas sin problemas gracias a los gestores de arranque (cuando no existían éstos, evidentemente el limite de s.o. por ordenador era de 4 y había que andar activando y desactivando las particiones, por supuesto primarias, con lo que las lógicas quedaban para datos).
Bien, ahora Linux para instalarse necesita como mínimo 2 particiones: una swap y otra ‘/’ (llamada raíz). Linux utiliza por defecto (por rapidez y eficiencia) una partición en vez de un fichero de intercambio (aunque realmente sí puede manejarlos), para los que no sepan qué es un fichero de intercambio sólo comentar que cuando el ordenador necesita más RAM que la que físicamente tiene simula tener más usando espacio del disco duro. El tamaño de ésta, por regla general, suele ser el doble de la RAM que tiene nuestro ordenador, yo no aconsejo nunca pasar de 512 (por lo menos actualmente) ya que si seguimos la regla y tenemos 512Mb por ejemplo, tener un fichero de intercambio de 1G es desde mi punto de vista desperdiciar espacio. Cabe destacar que esta regla esta desfasada pero nos puede servir de guía.
Ahora bien, si sólo queremos instalar Linux necesitaremos como mínimo una primaria y una swap (mejor que sea lógica). Pero como éste no es el caso de mucho de nosotros, que queremos tener otros sistemas operativos, típicamente Windows, lo que debemos hacer es instalar los s.o. desde el más antiguo al más moderno y por último instalar Linux.
Ejemplo 1: Queremos Windows 98 y Linux, o mejor aún, cualquier Windows y Linux.
Primaria: Windows
Extendida:
Lógica 1: ‘/’
Lógica 2: swap
Ejemplo 2: Queremos Windows 98, Windows XP y Linux.
Primaria: Windows 98
Extendida:
Lógica 1: Windows XP
Lógica 2: ‘/’
Lógica 3: swap
Espero que con estos 2 ejemplos quede claro.
Ahora, como muchos sabéis cada partición tiene un formato. El formato típico de los Windows es FAT (FAT 16 para MS-DOS y Win95, FAT 32 para Win9x/ME/XP home, NTFS para Win NT/200X/XP y FAT 15 para disquetes), pues bien el estándar de Linux es EXT3 (Actualmente se usa EXT3 y EXT2 en su defecto, EXT como tal está en desuso), pero puede usar casi cualquier tipo de formato (creo que más de 80). Otro formato muy usado en Linux y muy común es RaiserFS. Así que, como se supone que si estás leyendo esto eres aún principiante, pon la partición ‘/’ como ext3 o en su defecto ext2 (Nota: La swap es un formato en sí misma). Ni que decir tiene que la swap sólo la ve y la usa el sistema operativo.
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #2 :
Septiembre 30, 2007, 02:39:03 »
Entrega 2. Manos a la obra (2ª parte).
% ping elvis.rice.edu | awk '{print substr($1,1,5), $2, $3}'
elvis is alive
Instalar GNU/Linux (continuación)
En un principio no debemos tener mucho miedo a la hora de quedarnos cortos con la swap, ya que Linux puede manejar hasta 8 ficheros de intercambio y/o swaps (a menos que haya aumentado el número con la versión 2.6 del Kernel o sea Linux, hay que recordar que Linux es solamente un Kernel o núcleo de sistema) y siempre pueden definirse más a posteriori.
Con lo que el segundo ejemplo nos quedaría:
Primaria:
* Windows 98 Formato: FAT 32 (también funciona sobre FAT 16)
Extendida:
* Lógica 1: Windows XP Formato: NTFS (también funciona con FAT 32)
* Lógica 2: ‘/’ Formato: EXT3 o EXT2 (Opcionalmente RaiserFS y más...)
* Lógica 3: swap Formato: SWAP
Bueno ahora sólo queda ¿con qué hacerlo? Pues con lo que más rabia te dé, tanto con un Partition Magic como con los distintos programas libres para ello, incluso con un CD de instalación de Linux puede hacerse (cosa que yo he hecho muchas veces). De todas formas, si vas a instalarlo todo desde 0 puedes hacer lo siguiente (y esto sólo es una forma de las muchas que se puede hacer): haz todas las particiones con el fdisk de Windows (esto está claro para la gente que quiere empezar a migrar y no quiere complicarse, no os tiréis encima mía, linuxeros, que os conozco) con particiones FAT32 y luego según vas instalando sistemas operativos vas cambiando los formatos, ya que todos dan esa opción.
También existe la posibilidad de reparticionar el disco duro quitando espacio a particiones para crear otras nuevas. Para ello hay que desfragmentar y mandarlo todo al comienzo de la partición, para lo que desaconsejo el de Windows en cualquiera de sus versiones, ya que suelen dejar muchas veces cosas por medio (¿casualidad?, no lo creo), para después con los citados programas anteriores redimensionar unidades (incluso los de las instalaciones de Linux) y crear nuevas. Ni que decir tiene que hagáis copias de seguridad “por si acaso”.
Otra cosa que seguramente necesitarás es saber cómo llama Linux a los discos duros. Bueno, como ya explicaré mejor más tarde en linux todo cuelga de ‘/’, nada de unidades C:, D:, E:, y el lugar donde Linux tiene los dispositivos es en /dev (device).
El formato de los dispositivos IDE es el siguiente: hdXY donde X puede ser ‘a’, ‘b’, ‘c’ o ‘d’, y donde ‘a’ es maestro del primer bus ide, ‘b’ el esclavo, ‘c’ el maestro del segundo bus ide y ‘d’ el esclavo. Y es un número, del 1 al 4 son las particiones primarias y del 5 en adelante las lógicas.
Por lo tanto, si por ejemplo tenemos dos discos duros en el primer ide y en el segundo ide una grabadora y un dvd, estando el primer disco duro particionado como en el ejemplo 2, la forma de nombrarlos sería:
[CURSO DESDE CERO] GNU/LINUX
(Nótese que lo que no son discos duros no necesitan número)
Espero que con esto ya quede claro.
Sin embargo, para los dispositivos SCSI y actualmente los discos SATA y otros dispositivos como los PENDRIVES se cambia la ‘hd’ por ‘sd’. Las disqueteras son fdX, donde X es el número de la disquetera empezando por 0.
Aquí dejo una tabla aclaratoria:
[CURSO DESDE CERO] GNU/LINUX
Bueno, y como último dato que quizás podáis necesitar son los dispositivos del ratón:
/dev/psaux Si el ratón esta en el puerto PS/2
/dev/ttyS0 Si el ratón esta en el primer puerto serie
/dev/ttyS1 Si el ratón esta en el segundo puerto serie
/dev/sdbX Si el ratón esta en el puerto usb X
Otra cosa que os van a pedir es una clave de root, el root es el usuario con más privilegios de Linux o sea el administrador, usa una buena clave y no la uses nada más que para cosas que no puedas hacer con un usuario normal. Seguramente, acto seguido te pedirán que introduzcas los usuarios, así que hazte una cuenta normal para ti y otra para cada usuario que vaya a usar el sistema.
Bueno, espero que con estos pequeños conocimientos no tengáis muchas dificultades para instalar la distribución de Linux que más os guste, y si no te gusta ninguna quién sabe si algún día tendrás la tuya propia.
¡¡¡Trata de arrancarlo, Carlos!!!!....
Por fin tenemos ya instalada nuestra distribución ya sea la favorita, la recomendada o por casualidad. Arrancamos nuestro ordenador, bip, chequeo, lilo o grub (o nada para los que tengan sólo Linux), elegimos que arranque Linux y según hayamos instalado se nos presenta una bonita pantalla gráfica pidiéndonos el nombre de usuario y clave, o bien nos arranca directamente en la consola. Los que ya estén en la consola bien, porque es aquí donde empieza nuestro curso, y para los que no pueden hacer dos cosas: entrar y arrancar una consola virtual (enredad y poquito que seguro la encontráis, buscad por consola o terminal) o bien vais a un terminal de la siguiente forma *: Ctrl+Alt+Tecla de función.
Donde Tecla de función es la tecla de función (para los que no se enteran F1, F2, F3…) que coincide con el número del terminal virtual al cual queremos acceder.
* Antes de nada indicaros que en Linux pueden existir más de un terminal, en los que funciona una consola (de hecho la interfaz gráfica se muestra en un terminal en el que está corriendo xfree86 o XOrg, que son los motores gráficos de Linux). Como físicamente sólo puede haber un terminal en una pantalla, se usan los llamados terminales virtuales, normalmente vienen por defecto de 4 a 6 terminales y una última en la que se está ejecutando el modo gráfico si elegiste arrancar en este modo (normalmente el 7).
Pues nada, entramos en nuestro sistema con el usuario que ya dimos de alta (mejor que no uséis root a menos que sea necesario, por tonto que esto os parezca).
Para empezar hay que decir que todo en Linux son ficheros, los directorios incluidos, que no son más que ficheros con enlaces o información a más ficheros (no asustarse que no hay que ir mirándolos, el uso es como en cualquier otro sistema), incluso los dispositivos son ficheros un tanto especiales, pero que al fin y al cabo están representados en el sistema como ficheros (acordaros de cómo se llaman las particiones).
Como ya comenté antes aquí no existe A:, B:, C:, D: … ni nada parecido, en cualquier sistema Unix/Linux todo está a partir de lo que denominamos raíz y se representa mediante el símbolo ‘/’, a partir de aquí cuelga todo lo demás formando un árbol (se le denomina árbol a toda la estructura de directorios y ficheros). A los datos de una partición no se accede a través de /dev/hdXY como algunos hayan podido deducir, ya que esto representa el dispositivo en sí, no a su contenido. Pues bien, las particiones en Linux hay que montarlas y se pueden montar en la parte que queramos, la que más rabia nos dé, y simplemente hay que acceder al directorio donde esté montada la partición o disco duro para ver el contenido de éste. Esto pasa absolutamente con todo, incluso si tenemos que usar carpetas compartidas en la red, primero se montan y luego se acceden como si de tu propio disco duro de se tratara.
Una vez visto esto, vamos a ver cómo están distribuidas las cosas dentro de nuestro sistema, cabe destacar que puede haber variaciones de unos sistemas a otros pero en general todos siguen las mismas reglas y suelen seguir el estándar "FSH" (Filesystem Hierarchy Standard) :
/ Directorio raíz, de aquí cuelga todo y es el principio de nuestro sistema de ficheros.
/bin De binarios, en este directorio se encuentran los programas esenciales para el sistema.
/dev De device, en este directorio nos encontramos todos nuestros disposivos, tales como discos duros, terminales, consolas o terminales virtuales, buses…
/etc Contiene los ficheros de configuración del sistema y sus subdirectorios los ficheros de configuración de lo que representen.
/sbin Como /bin pero sólo los esenciales para el sistema que usa el súper usuario, o sea root. Así que normalmente no tendremos acceso a esta carpeta y sus ejecutables.
/home Contiene los ‘home’ de cada usuario, o sea las carpetas con los ficheros de cada usuario. Por hacer analogías es como la carpeta “Documents and Settings” de cualquier Windows 2000/XP.
/lib Contiene las imágenes de las librerías compartidas del sistema. Estos ficheros contienen código que es usado por multitud de programas.
/proc Es un sistema de archivos virtual, y los archivos que contiene residen en memoria. Aquí nos encontramos representados los procesos que corren en nuestro sistema y algunos “especiales”. Intenta encontrar algo parecido en Windows
.
/tmp Pues donde va a parar la basura que genera el sistema, o sea, los malditos temporales que generan nuestros programas.
/usr Es un directorio realmente importante, aquí se encuentran las cosas que no son esenciales en el sistema y dentro de él tenemos otro bin, sbin, etc, lib,…
/usr/include Incluye los ficheros de cabecera para el compilador de C y varios más.
/usr/local Igual que /usr, pero los específicos de tu sistema y que probablemente no estén en otro Unix o Linux.
/usr/src Es un directorio donde se encuentran los códigos fuente del sistema. Por ejemplo /usr/src/linux contiene el fuente del Kernel
/var Contiene directorios que a menudo tienden a crecer y cambiar su tamaño, aquí solemos encontrar cosas como las paginas que aloja un servidor en /var/www.
/var/spool /var/spool contiene ficheros que van a ser pasados a otro programa. Por ejemplo, si su máquina está conectada a una red, el correo de llegada será almacenado en /var/spool/mail hasta que lo lea o lo borre. Artículos nuevos de las “news" tanto salientes como entrantes pueden encontrarse en /var/spool/news, etc.
/opt De optional. Como curiosidad, si instaláis el Messenger de Yahoo y no lo tenéis se os creará y se instalará allí.
/mnt Aquí es donde normalmente montamos discos duros, carpetas en red, cd´s, disquetes…
Bueno, y como el espacio de esta entrega se acaba, comenzaremos con los primeros comandos en la próxima entrega donde aprenderemos, entre otras cosas, cómo movernos por este árbol de directorios.
«
Última modificación: Septiembre 30, 2007, 02:42:32 por yako
»
En línea
scenespain.net
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #2 :
Septiembre 30, 2007, 02:39:03 »
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #3 :
Septiembre 30, 2007, 02:45:12 »
Entrega 3. Moviéndonos por el sistema.
% man: why did you get a divorce?
man:: Too many arguments.
El intérprete de comandos
Bueno, pues lo primero que tenemos a la vista es el intérprete de comandos esperándonos para recibir órdenes. El intérprete de comandos es para Unix/Linux como el COMMAND.COM del MS-DOS sólo que mucho más potente y además no hay un solo intérprete sino que hay varios. El más usado y que probablemente estés usando es el bash, el nombre bash proviene de BourneAgain SHell, pero existen otros como el sh (el segundo más usado) o tsh. Para cambiar de uno a otro sólo tienes que teclear su nombre y para volver al anterior teclear exit.
Las diferencias que hay entre los distintos intérpretes no nos preocupan ahora, se diferencian fundamentalmente a la hora de hacer shell scripts pero eso lo veremos más adelante.
Y qué es lo primero que nos encontramos: el prompt, en mi caso es algo tal que así:
[matados2k@fortaleza matados2k]$
Como su nombre nos sugiere (promtpt significa solicitud), el intérprete de comando nos está solicitando que le demos una orden. Como podemos observar el prompt nos da una información, ésta depende de cómo lo tengamos configurado, pero de esto hablaremos más adelante en el curso. En mi caso lo primero es el nombre del usuario seguido del nombre de mi máquina, lo siguiente es el directorio donde me encuentro, en este caso estoy en /home/matados2k . Y por último el símbolo '$' indica que soy un usuario normal, si tuviera un '#'' indicaría que soy superusuario (root), como en el siguiente ejemplo:
[root@fortaleza home]#
Una cosa hay que quedar clara, los sistemas Unix/Linux son case sensitive, o sea, que diferencian entre minúsculas y mayúsculas, para el ordenador no será lo mismo Ls, lS, ls, LS, ya que para el sistema operativo son todas diferentes.
Moviéndonos por los directorios
La orden para movernos por la estructura de la red es 'cd' y su formato es el siguiente:
cd [directorio]
Donde 'cd' es el comando y lo que está en corchetes es el argumento, al estar en corchetes es opcional.
Para movernos de un directorio a otro usamos este comando, tenemos 2 formas de nombrar un directorio: la primera es por su ruta absoluta y la segunda es por su ruta relativa. La absoluta se refiere al nombre completo empezando desde '/', un ejemplo seria ir a /etc (yo estoy en /home/matados2k).
[matados2k@fortaleza matados2k]$ cd /etc
[matados2k@fortaleza etc]$
Esto tiene un problema ya, que siempre tenemos que escribir la ruta completa a donde queramos ir. Para no tener que hacerlo usamos las rutas relativas: ponemos el nombre del directorio que queremos entrar pero a partir desde el que estamos. Para ver esto volveremos a /home/matados2k (en vuestro caso el directorio de trabajo vuestro) y de allí iremos a /home/matados2k/Documents.
[matados2k@fortaleza etc]$ cd /home/matados2k
[matados2k@fortaleza matados2k]$ cd Documents
[matados2k@fortaleza Documents]$
En el primer caso hemos usado de nuevo una ruta absoluta y en el segundo como ya estábamos en /home/matados2k hemos puesto solo Documents para entrar en /home/matados2k/Documents, que seria su ruta absoluta.
Dentro de todo directorio existen dos directorios especiales que son '.' y '..'. El primero hace referencia al directorio actual, es decir, si haces 'cd .' te quedas donde estás (el directorio especial '.' ya veréis más adelante lo útil que es), y el segundo hace referencia al directorio padre, o sea, si estamos en /home/matados2k y hacemos 'cd ..' terminaremos en /home.
[matados2k@fortaleza matados2k]$ cd .
[matados2k@fortaleza matados2k]$ cd ..
[matados2k@fortaleza home]$
Estos dos directorios especiales los usaremos en la rutas relativas, es lo mismo hacer 'cd ./Documents' que 'cd Documents' que para este comando en concreto nos da lo mismo pero en otros puede que necesitéis usar './'.Imaginaros que desde /home/matados2k queréis entrar (si tuvierais otro usuario llamado así) en /home/kronem, para no escribir la ruta absoluta recurriremos a 'cd ../kronem' y conseguimos mediante una ruta relativa dar un salto atrás en el árbol y entrar en 'kronem'
[matados2k@fortaleza matados2k]$ cd Documents
[matados2k@fortaleza Documents]$ cd ..
[matados2k@fortaleza matados2k]$ cd ./Documents
[matados2k@fortaleza Documents]$ cd ..
[matados2k@fortaleza matados2k]$ cd ../kronem
[matados2k@fortaleza kronem]$
Bueno pues no se vayan todavía, aun hay más. Hay una referencia especial, estemos donde estemos si hacemos 'cd ~' volvemos a nuestro directorio de trabajo ya que ~ (bajo consola lo conseguimos pulsando la tecla Alt Gr +4) es una referencia a nuestro directorio de trabajo.
[matados2k@fortaleza matados2k]$ cd /usr/bin
[matados2k@fortaleza bin]$ cd ~
[matados2k@fortaleza matados2k]$
Pero... es que aún lo podemos hacer mas fácil esta funcionadiad ya que 'cd ~' es lo mismo que escribir simplemente 'cd', haced la prueba. Y para el remate de los tomates una utilidad mas 'cd -' que nos devuelve al directorio anterior, no me refiero al padre sino al anterior donde nos encontrábamos.
[matados2k@fortaleza]$ cd /etc
[matados2k@fortaleza etc]$ cd -
/home/matados2k
[matados2k@fortaleza matados2k]$
Con esto ya hemos visto este comando tan simple pero útil.
Me he perdido ¿Dónde estoy?
Si nos perdemos, bien por que hemos enredado mucho moviéndonos por el árbol de directorios o bien porque nuestro prompt no nos indica en cada momento dónde estamos, tenemos un comando bien sencillo:
pwd
[matados2k@fortaleza matados2k]$ pwd
/home/matados2k
[matados2k@fortaleza matados2k]$
Antes de continuar...
Antes de continuar hay que comentar una cosa, para evitar confusiones explicaré un poco los 'alias'. El intérprete de comandos nos la opción de definirnos lo que denominaremos 'alias', por ejemplo, puedes hacer que la palabra 'casa' ejecute 'cd~', parece una bonita forma de crear comandos a nuestro gusto. Algunos de los comandos que aquí explicaré tienen definidos alias en muchas distribuciones por lo que el resultado puede que no sea el mismo. Si esto os ocurre teclead 'alias COMANDO_QUE_FALLA=COMANDO_QUE_FALLA' (ojo, sin espacios en el igual), por ejemplo, si cuando hicierais 'cd' os mandara a /usr/bin (es un ejemplo raro pero bueno) bastaría con ejecutar 'alias cd=cd'.
Para ver qué alias tenéis definidos ejecutad 'alias -p'
[matados2k@fortaleza matados2k]$ alias -p
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mc='. /usr/share/mc/bin/mc-wrapper.sh'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[matados2k@fortaleza matados2k]$
Lo que veremos a continuación es muy probable que tengas que hacerlo para que salga lo mismo que te estoy explicando. El uso de alias sobre todo se utiliza para ejecutar por defecto opciones muy útiles sin tener que escribirlas siempre, incluso si vienes del mundo de MS-DOS puedes definir todos tus comandos de siempre con los análogos en Linux, útil, ¿verdad?
(aunque esto último no lo recomiendo, no es bueno coger malos vicios XD ).
Nota: los alias que definamos se esfumarán cuando cerremos nuestra sesión o reiniciemos la máquina, pero no tengáis miedo. Ya explicaremos más adelante cómo definir las cosas permanentemente.
Pues a mí me pica la curiosidad
Bueno, ya sabemos movernos, pero esto no nos sirve de mucho si no sabemos qué hay en nuestros directorios. Para eso tenemos un buen comando:
ls [opciones] [directorio]
Ahora ejecutaremos 'ls' tal cual y nos encontraremos con la siguiente salida:
[matados2k@fortaleza Documents]$ alias ls=ls
[matados2k@fortaleza Documents]$ ls
10350-1.jpg Epsn0030.jpg woman
9476-sparkle7.png kdetutorial-1.1.2.tar.bz2 womanserv
[matados2k@fortaleza Documents]$
Nos encontramos con una salida algo pobre, porque en algunos casos no sabremos ni diferenciar qué es cada cosa: ¿un fichero? ¿un directorio? ¿en woman hay titis picantonas? (por cierto, la respuesta es no… ohhhhhhhh… es el nombre de mi proyecto de fin de carrera). Con la opción '-F' obtendremos más información:
[matados2k@fortaleza Documents]$ ls -F
10350-1.jpg Epsn0030.jpg woman/
9476-sparkle7.png kdetutorial-1.1.2.tar.bz2 womanserv/
[matados2k@fortaleza Documents]$
Ahora podemos apreciar que a los directorios al final le añaden '/'. A ls también le podemos indicar el directorio que queremos mirar:
[matados2k@fortaleza Documents]$ ls -F /usr/local/bin
fbgnuboy* romfixer* sdlgnuboy* supertux* tuxnes* xgnuboy* zsnes*
[matados2k@fortaleza Documents]$
En este caso además vemos un * al final de estos ficheros, lo que nos indica que son ejecutables. También podemos encontrarnos con una @ indicando que es un enlace. Otra opción interesante y que nos será útil es '-a' que nos muestra los ficheros (acuérdate de que en Linux todo son ficheros) ocultos.
[matados2k@fortaleza Documents]$ ls -F -a
./ 10350-1.jpg Epsn0030.jpg kdetutorial-1.1.2.tar.bz2 womanserv/
../ 9476-sparkle7.png .hola.txt woman/
[matados2k@fortaleza Documents]$
Podemos observar que aparecen más ficheros que estaba ocultos en Linux, cualquier fichero que empiece por '.' es un fichero oculto contando los directorios especiales '.' y '..' que ya os comenté antes. Una opción realmente útil y que realmente os interesará es 'l' :
[matados2k@fortaleza Documents]$ ls -Fa -l
total 2144
drwxrwxr-x 4 matados2k matados2k 4096 may 13 02:07 ./
drwxr-xr-x 79 matados2k matados2k 4096 may 13 02:04 ../
-rw-rw-r-- 1 matados2k matados2k 342064 abr 15 00:25 10350-1.jpg
-rw-rw-r-- 1 matados2k matados2k 223535 abr 15 00:27 9476-sparkle7.png
-rw-rw-r-- 1 matados2k matados2k 1298657 abr 22 23:10 Epsn0030.jpg
-rw-rw-r-- 1 matados2k matados2k 5 may 13 02:07 .hola.txt
-rw-rw-r-- 1 matados2k matados2k 284654 abr 14 15:24 kdetutorial-1.1.2.tar.bz2
drwxrwxr-x 4 matados2k matados2k 4096 abr 15 22:04 woman/
drwxrwxr-x 5 matados2k matados2k 4096 abr 19 11:32 womanserv/
[matados2k@fortaleza Documents]$
Para empezar veréis que se pueden mezclar opciones y que '-l' nos da una gran cantidad de información. La primera indica el tipo de fichero y los permisos (por ejemplo, drwxrwxr-x), los permisos no los explicaré ahora por que no toca, pero sí comentar que la primera letra indica qué tipo de fichero es ('d' nos indica que es directorio, '-' que es un fichero normal, 'c' que es un dispositivo orientado a carácter, 'b' dispositivo orientado a bloque y 'l' indica que es un enlace). Lo siguiente nos indica: el número de enlaces que existen a él, el propietario, el grupo propietario, el tamaño en bytes, la fecha y el nombre.
Por último ya sólo enseñaros otra opción que os gustará muchísimo '--color':
[matados2k@fortaleza Documents]$ ls –color
10350-1.jpg Epsn0030.jpg woman
9476-sparkle7.png kdetutorial-1.1.2.tar.bz2 womanserv
[matados2k@fortaleza Documents]$
La verdad se explica por ella sola, ¿no? No seguiremos con más opciones de 'ls' porque hay casi tantas como letras del abecedario, tanto en mayúsculas como en minúsculas, así que puedes incluso probar 'ls' con tu nombre y demostrar lo triste que es tu vida perdiendo el tiempo en semejantes tonterías.
Despedida y cierre
Ya para finalizar sólo indicaros que, si estáis en modo consola, para cerrar la sesión hay que teclear 'exit' o 'logout', para parar la máquina 'halt' y para reiniciarla pulsar 'ctrl+alt+sup'.
Esto es todo lo que ha dado de sí el moverse por el sistema, así que en la próxima entrega trataremos el tema del manejo de ficheros (copia, creación, renombre... ).
Por cierto, ya sabía que probarías 'ls' con tu nombre
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #4 :
Septiembre 30, 2007, 02:47:25 »
Entrega 4. Manejando ficheros.
% make ' ' bang ' ' with gun
make: Fatal error: Don't know how to make target ` '
Creando directorios
Para empezar, después de haber aprendido a movernos por el sistema, lo primero que veremos es cómo crear un directorio, para ello tenemos la siguiente instrucción:
mkdir [opciones] directorio [directorio2 ... directorio 3]
Donde, como podéis apreciar, podemos crear de uno a varios directorios a la vez, así que ahora toca probarlo.
[matados2k@fortaleza matados2k]$ mkdir curso
[matados2k@fortaleza matados2k]$ cd curso
[matados2k@fortaleza curso]$ mkdir dir1 dir2
[matados2k@fortaleza curso]$ ls --color -l
total 8
drwxrwxr-x 2 matados2k matados2k 4096 may 18 16:15 dir1
drwxrwxr-x 2 matados2k matados2k 4096 may 18 16:15 dir2
Como podéis ver el uso es bien sencillo, como opciones vamos a destacar '-p' que crea los directorios padres que no existan, como vemos en el siguiente ejemplo.
[matados2k@fortaleza curso]$ mkdir -p ./dir1/NOEXISTO/ops
[matados2k@fortaleza curso]$ cd dir1
[matados2k@fortaleza dir1]$ ls
NOEXISTO
[matados2k@fortaleza dir1]$ cd NOEXISTO/
[matados2k@fortaleza NOEXISTO]$ ls
ops
[matados2k@fortaleza NOEXISTO]$
Y por último la opción '-m', que nos da la posibilidad de indicarle los permisos que tendrán nuestros directorios, pero... como aún no lo hemos visto en el curso queda pendiente de que lo probéis vosotros mismos cuando veamos el tema de los permisos. La opción -m va seguido del modo antes de poner los directorios.
No me gustan los directorios
Ya que hemos aprendido a crearlos hay que aprender también la opción contraria, y ya que mkdir venía de make directory ahora necesitamos un remove directory:
rmdir [opciones] directorio [directorio2 ... directorio 3]
Así que lo que nos queda es comenzar a probarlo:
[matados2k@fortaleza NOEXISTO]$ rmdir ops
[matados2k@fortaleza NOEXISTO]$ cd ..
[matados2k@fortaleza dir1]$ cd ..
[matados2k@fortaleza curso]$ rmdir ./dir1/NOEXISTO/
[matados2k@fortaleza curso]$ ls
dir1 dir2
[matados2k@fortaleza curso]$ rmdir dir1 dir2
[matados2k@fortaleza curso]$ ls
[matados2k@fortaleza curso]$
Como podéis ver se pueden borrar varios a la vez, igual que con mkdir creábamos varios a la vez. En este caso, para rmdir solo comentaré una opción interesante y es '-p'. Esta opción lo que hace es borrar recursivamente la ruta completa que le indiquemos, por ejemplo, si tenemos /a/b/c un 'rmdir -p /a/b/c' es equivalente a 'rmdir /a/b/c' + 'rmdir /a/b' + rmdir 'a'. Vayamos al ejemplo:
[matados2k@fortaleza curso]$ mkdir -p ./dir1/uno/dos
[matados2k@fortaleza curso]$ ls
dir1
[matados2k@fortaleza curso]$ ls dir1
uno
[matados2k@fortaleza curso]$ ls ./dir1/uno
dos
[matados2k@fortaleza curso]$ rmdir -p dir1/uno/dos
[matados2k@fortaleza curso]$
Tampoco me gusta teclear tanto
Esto es algo que quizás debí contar en la entrega anterior. El intérprete de comandos, para facilitarnos nuestro trabajo, rellena por nosotros con la opción más lógica para los comandos y los archivos, simplemente empezando a escribirlos y pulsando tabulador. Por ejemplo, no nos acordamos de cómo se escribía el comando 'mkdir' y solo nos acordamos de 'mkd' pulsamos el tabulador y nos lo rellenara automáticamente o nos indicará qué comandos empiezan por 'mdk'. En mi caso tabulo y me pita, no me sale nada, vuelvo a tabular y ahora sí me da los comandos que empiezan por mdk:
[matados2k@fortaleza matados2k]$ mkd (Una tabulación y nada, dos y tachan ...)
mkdep mkdir mkdirhier
[matados2k@fortaleza matados2k]$ mkd
Ahora si añado una 'i' me completa con 'mkdir', ya que 'mkdir' está contenido dentro del nombre de 'mkdirhier'. Ahora tenemos lo que buscábamos, pero si volvemos a tabular nos escribirá 'mkdirhier'. Con lo que llegamos a la conclusión de que rellenará cuando: a) No hay otro comando que coincida con la cadena que hayamos escrito, y b) Cuando el nombre de un comando esté contenido en otro pudiendo seguir tabulando para llegar al otro.
Cuando existen muchas posibilidades, tantas que no caben en pantalla, antes nos preguntará si mostrarlo o no. Por ejemplo, ejecutar:
[matados2k@fortaleza matados2k]$ m
Display all 190 possibilities? (y or n)
[matados2k@fortaleza matados2k]$ m
En mi caso he contestado con 'n' ya que no quiero ver la lista completa. Por ejemplo, si quisiéramos ver todos los ejecutables accesibles no tendríamos más que tabular dos veces sin escribir nada.
[matados2k@fortaleza matados2k]$Display all 2809 possibilities? (y or n)
[matados2k@fortaleza matados2k]$
Todo esto es completamente aplicable a los ficheros que indicamos a nuestros comandos, probad a escribir 'cd /e' y tabular.
Copiando voy y copiando vengo
Y una vez visto esto llegamos al momento en el que vamos a crear copias de los archivos, para ello tenemos el siguiente comando:
cp [Opciones] Origen Destino
El uso es bien sencillo, sólo hay que indicar el origen y el destino de lo que queremos copiar:
[matados2k@fortaleza curso]$ cp /etc/termcap .
[matados2k@fortaleza curso]$
Como vemos no se nos pide confirmación para copiar, y pudiera ocurrir que nos hubiésemos equivocado y sobreescribiéramos un archivo que ya tuviera sin que nos pregunte, ya que 'cp' también renombra incluyendo el nombre en el destino. Veamos un ejemplo:
[matados2k@fortaleza curso]$ cp /etc/shells ./termcap
[matados2k@fortaleza curso]$ ls
dir1 termcap
[matados2k@fortaleza curso]$
Como vemos hemos copiado el archivo 'shells' que está en '/etc' a nuestro directorio actual y con el nombre 'termcap', con lo cual hemos sobreescrito nuestro fichero original y eso puede ser algo que no deseemos. Para hacer que nos pregunte antes de copiar usamos la opción '-i' como vemos en el ejemplo:
[matados2k@fortaleza curso]$ cp -i /etc/termcap .
cp: ¿sobreescribir `./termcap'? (s/n) s
[matados2k@fortaleza curso]$
Bueno, ya hemos recuperado nuestro fichero original, menos mal
, pero 'cp' es aún más versátil, ya que con la opción '-r' podemos copiar directorios enteros aunque es preferible usar la opción '-R' porque '-r' no tiene un comportamiento definido (o sea que puede pasar cualquier cosa) si se copian ficheros que no son normales como pueden ser un dispositivo. Veamos un ejemplo:
[matados2k@fortaleza curso]$ mkdir copia_de_bin
[matados2k@fortaleza curso]$ cp -r /bin ./copia_de_bin
[matados2k@fortaleza curso]$ cd copia_de_bin/
[matados2k@fortaleza copia_de_bin]$ ls
bin
[matados2k@fortaleza copia_de_bin]$ cd bin
[matados2k@fortaleza bin]$ ls
arch dmesg ipcalc ping tcsh
.......... (omito archivos para que no ocupe tanto)...........
df igawk pgawk tar
[matados2k@fortaleza bin]$
Y para rematar sólo queda comentar que 'cp' también tiene la opción '-p', que es igual que en 'mkdir' y 'rmdir' así que sobran las explicaciones. Por cierto, 'cp' admite más de un origen, así que puedes copiar varios archivos en una sola línea a un mismo destino.
Y borrando por el camino yo me entretengo
Si 'cp' viene de copy entonces algunos ya habréis adivinado qué orden es la de borrar:
rm [opciones] lista_de_ficheros_a_borrar
Veamos el uso más simple de rm:
[matados2k@fortaleza curso]$ cp termcap teborrare
[matados2k@fortaleza curso]$ ls
copia_de_bin dir1 teborrare termcap
[matados2k@fortaleza curso]$ rm teborrare
[matados2k@fortaleza curso]$ ls
copia_de_bin dir1 termcap
[matados2k@fortaleza curso]$
Igual que 'cp' , 'rm' también tiene la opción '-i' y también puede borrar directorios enteros con '-r' y '-R' (en este caso ambos son iguales), aunque también se borran con '-d', pero '-d' no tiene un carácter recursivo y deja desenlazados los ficheros que contiene (o sea que es una cagada, así que mejor no usarla) lo que quiere decir que se quedan como diríamos sin ningún directorio que los contenga, por lo que hay que tener mucho cuidado con esta opción.
[matados2k@fortaleza curso]$ rm -ri copia_de_bin dir1
rm: ¿descender al directorio `copia_de_bin'? (s/n) s
rm: ¿descender al directorio `copia_de_bin/bin'? (s/n) s
..........
rm: ¿borrar el enlace simbólico `copia_de_bin/bin/csh'? (s/n) s
rm: ¿borrar el fichero regular `copia_de_bin/bin/tcsh'? (s/n) s
rm: ¿borrar el directorio `copia_de_bin/bin'? (s/n) s
rm: ¿borrar el directorio `copia_de_bin'? (s/n) s
rm: ¿descender al directorio `dir1'? (s/n) s
rm: ¿descender al directorio `dir1/uno'? (s/n) s
rm: ¿borrar el directorio `dir1/uno/dos'? (s/n) s
rm: ¿borrar el directorio `dir1/uno'? (s/n) s
rm: ¿borrar el directorio `dir1'? (s/n) s
[matados2k@fortaleza curso]$
Sólo queda apuntar que, tanto 'cp' como 'rm', si '-i' hace que pregunte la opción contraria es '-f' que no preguntará nada de nada.
Estamos en movimiento
Venga, que seguro que algunos ya se han imaginado que para mover es:
mv [Opciones] origen destino
Bueno, 'mv' equivale a copiar y borrar, y al igual que 'cp' admite varios orígenes y un directorio destino. Así que con los ejemplos vistos antes con 'cp' sobran los ejemplos, salvo para el caso en que el origen y el destino son el mismo, pero en el destino se indica un nombre de fichero con lo cual lo que hacemos es renombrar:
[matados2k@fortaleza curso]$ ls
termcap
[matados2k@fortaleza curso]$ mv termcap perro
[matados2k@fortaleza curso]$ ls
perro
[matados2k@fortaleza curso]$
Como veis el directorio origen y destino es el mismo, por lo cual en el destino hemos indicado un cambio de nombre.
Como 'mv' no tiene opción que digamos interesantes salvo quizás '-i' y '-f' (que es igual que en 'cp' y 'rm') pues damos por finalizada esta entrega, que por cierto se ha hecho muy larga. En la próxima entrega aprenderemos a usar los caracteres comodín, cómo consultar la ayuda de Linux y el historial de órdenes.
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #5 :
Septiembre 30, 2007, 02:48:59 »
Entrega 5. Usando comodines, manuales e históricos.
$ \(-bash: (-: command not found
Un asterisco para dominarlos a todos.
Comenzamos de nuevo otra entrega más. Vamos a ver el uso de los comodines, que no es ni más ni menos que una característica del intérprete de comandos que nos permite referirnos a un conjunto de ficheros a la vez.
Empezaremos viendo primero el comodín '*': el comodín '*' hace referencia a cualquier carácter o cadena de caracteres (es decir, sustituye a uno, ninguno o muchos caracteres). Para entenderlo bien, ya que la explicación puede ser un poco confusa, veamos como siempre un ejemplo sencillo:
[matados2k@fortaleza matados2k]$ cd /dev
[matados2k@fortaleza dev]$ ls l*
lirc logimouse loop10 loop13 loop2 loop5 loop8 lp1
log loop0 loop11 loop14 loop3 loop6 loop9 lp2
logibm loop1 loop12 loop15 loop4 loop7 lp0 lp3
logicalco:
bci dci1300
[matados2k@fortaleza dev]$
Lo que acabamos de indicarle a ls con el uso de '*' es que nos liste todos los ficheros que empiecen por 'l' seguido de cualquier cosa, incluso nos lista el contenido de un directorio que empieza por 'l'. Otro ejemplo, para que nos quede definitivamente claro, puede ser este:
[matados2k@fortaleza dev]$ ls *rr*
stderr
[matados2k@fortaleza dev]$
En este caso lo que hemos hecho es decirle que nos liste todos los ficheros que contengan la cadena 'rr' (incluso los que empiecen o terminen por 'rr' ya que '*' incluso puede ser ningún carácter).
Si sois observadores y/o curiosos veréis que no funciona con los ficheros ocultos (acordaos de que empiezan por '.' ), porque afectaría entre otras cosas a los directorios especiales '.' y '..' que ya expliqué en entregas anteriores, y según con qué comandos lo utilicemos puede provocar verdaderos problemas (como por ejemplo rm).
Otra cosa importante es que en los ejemplos anteriores no es el comando 'ls' el que recibe por ejemplo el argumento 'l*', sino que es el intérprete de comandos (en mi caso bash) el que se encarga de buscar las coincidencias y lo que haría es ejecutar algo como 'ls lirc logimouse loop10 loop13 loop2 ....' . Lo que quiero decir es que no es el comando el que procesa los comodines, sino el propio intérprete de comandos, que se encarga luego de llamar al comando con los comodines ya procesados.
Y una interrogación para cada señor de la tierra GNU.
El siguiente y último comodín es '?' que hace referencia a cualquier carácter, pero en este caso sólo a uno (no puede ser ninguno como el caso de '*'). Para verlo claro veamos un ejemplo (para variar):
[matados2k@fortaleza dev]$ ls ?l??
tlk0 tlk1 tlk2 tlk3
[matados2k@fortaleza dev]$
En este caso le preguntamos a ls por todos aquellos comandos que tienen longitud 4 y el segundo carácter es una 'l', ¿sencillo, verdad?
Puedes combinar tanto '*' como '?' para conseguir el resultado deseado:
[matados2k@fortaleza dev]$ ls ?l*1
aloadC1 tlk1
[matados2k@fortaleza dev]$
Lo que hemos hecho es decirle a 'ls que nos muestre todos aquellos que de segundo carácter tienen una 'l' seguido de cualquier número de caracteres y acabe en 1. Quizás con 'ls' no le veáis mucha utilidad a estos comodines, pero imaginaos con cp, rm y mv por ejemplo. Podéis hacer tantas combinaciones como se os ocurran, así que a probad vosotros mismos.
Consultando información.
Muchas veces necesitamos conocer más acerca de un comando determinado o del uso del propio intérprete y nos gustaría tener un manual, en el caso de GNU/linux disponemos de un manual en línea muy útil denominado 'man'. Su sintaxis básica es la siguiente:
man [sección] comando
Por ejemplo, para saber todo de 'cp' no hay mas que consultar 'man cp' nos moveremos con los cursores arriba o abajo y para salir pulsamos la letra 'q'. La barra espaciadora pasa página a página y podemos usar Re Pag y Av Pag de nuestro teclado para movernos.
El manual en línea está dividido en secciones, concretamente de la 1 a la 9, cada una referidas a una cosa distinta. Por ejemplo, la sección 2 es la de programación de C. Por defecto no pondremos sección y encontraremos lo que buscamos ya que busca en todas, pero en ocasiones (como por ejemplo cuando se programa) hay funciones que se llaman igual que algún comando de Linux y por defecto nos dará el comando en vez de la función. En ese caso, por ejemplo, le especificamos que queremos la sección 2. Para ver por vosotros mismos cómo se usa más a fondo 'man' probad con 'man man'.
Otra fuente útil de ayuda en línea es sin duda el comando 'info', que tiene un manejo para visualizar la información igual que 'man'.
Siguiendo tus propios pasos.
Para no tener que escribir una y otra vez los mismos comandos, el intérprete de comando mantiene un histórico de las órdenes que introducimos. Para mostrarlas usad las teclas de cursor arriba y abajo.
Para ver todo el historial de golpe tenemos el comando 'history', que nos mostrará numeradas todas y cada una de las órdenes que le hemos dado al intérprete de comandos. Esto es especialmente útil para ejecutar directamente un comando del historial usando '!' seguido del número de orden visto con 'history'. Por ejemplo, para la orden 5 del historial ejecutad '!5'.
En el caso de bash el historial es guardado en nuestro propio directorio de trabajo, en el fichero '.bash_history', en el cual podremos visualizar y manipular su contenido a nuestro gusto. (Recordad que es un fichero oculto).
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #6 :
Septiembre 30, 2007, 02:50:33 »
Entrega 6. Viva la fontanería.
% !bluemoon
bluemoon: Event not found.
Entrada y salida estándar.
Normalmente los comandos usan lo que es conocido como entrada y salida estándar (stdin y stdout respectivamente, lo puedes encontrar en /dev/stdin y /dev/stdout) que no son ni más ni menos que el teclado y la pantalla.
Para ver esto usaremos el siguiente comando:
cat [opciones] [lista_de_ficheros]
'Cat' en sí es un concatenador de ficheros que imprime la salida por la salida estándar, las opciones no las veremos puesto que no son muy interesantes. Nos va a servir para visualizar los ficheros y si escribimos 'cat' sin parámetros leerá de la entrada estándar y escribirá en la salida estándar.
[matados2k@fortaleza curso]$ cat
hola
hola
a
a
todos
todos
[matados2k@fortaleza curso]$
Vemos que sale repetido todo como si 'cat' nos vacilara, simplemente repetirá todo lo que escribamos por que es lo que realmente sabe hacer. Para salir de 'cat' debemos mandarle la señal EOT (End-of-text, fin de texto) y para eso tenemos que usar CTRL+D.
Algunos pensaréis “qué estupidez de comando”, pero sólo hasta que sepáis que con 'cat' se hacen cosas tan curiosas como una imagen ISO de CD sin usar ninguna opción, pero eso será mucho más adelante.
El intérprete de comandos nos permite redireccionar la salida estándar a un fichero usando el símbolo '>'. Para ver cómo funciona qué mejor que un ejemplo:
[matados2k@fortaleza curso]$ cat > hola_holita
hola
holita
vecinitos
soy ned
[matados2k@fortaleza curso]$ cat hola_holita
hola
holita
vecinitos
soy ned
[matados2k@fortaleza curso]$
Podemos ver que usamos 'cat' con una redirección a un fichero llamado 'hola_holita', podemos ver que no nos ha repetido lo que escribimos puesto que la salida está redireccionada y después visualizamos su contenido con el mismo 'cat'.
La redirección de entrada es similar, sólo que se usa el carácter '<'. Veamos un ejemplo:
[matados2k@fortaleza curso]$ cat < hola_holita
hola
holita
vecinitos
soy ned
[matados2k@fortaleza curso]$
En este ejemplo vemos que el resultado es el mismo y es obvio, ya que esta vez hemos cambiado la entrada estándar por un fichero y la ha sacado por la salida estándar, con lo que ha repetido lo que había en el fichero como si lo tecleásemos y ha terminado ya que los ficheros contienen el carácter EOT o EOF (End of File).
Hay que destacar que la redirección de salida es una redirección destructiva, con esto quiero decir que si no existe el fichero lo crea y si existe lo sobrescribe, y esto puede ser algo que no deseemos.
Redirección de salida no destructiva.
Imaginemos que vamos a hacer una lista de la compra para un piso que tenemos de estudiantes, entonces escribiríamos algo así:
[matados2k@fortaleza curso]$ cat > lista_compra
Champu
Gominolas
Cerveza
Panchitos
jb
[matados2k@fortaleza curso]$
Y se nos olvidan las aspirinas:
[matados2k@fortaleza curso]$ cat > lista_compra
aspirinas
[matados2k@fortaleza curso]$ ls
hola_holita lista_compra perro
[matados2k@fortaleza curso]$ cat lista_compra
aspirinas
[matados2k@fortaleza curso]$
Pues nada ya estropeamos la fiesta, ya que la lista se la dimos a Manolito y sólo nos trajo aspirinas. Para evitar algo tan absurdo y surrealista como esto tenemos la redirección de salida no destructiva, para ello usamos '>>', veamos el ejemplo:
[matados2k@fortaleza curso]$ cat >> lista_compra
Manolito no te olvides de:
Champu
Gominolas
Cerveza
Panchitos
jb
[matados2k@fortaleza curso]$ cat lista_compra
aspirinas
Manolito no te olvides de:
Champu
Gominolas
Cerveza
Panchitos
jb
[matados2k@fortaleza curso]$
Con esto ya nos ahorramos el problema. Supongo que ya habréis deducido ventajas de la redirección aparte de hacer la lista de la compra, ¿no? (tan simples como guardar el listado de 'ls' en un fichero y tan complicado como ahorrarnos teclear en comandos que nos piden muchos datos).
Usando tuberías. Las pipes.
Para lo siguiente vamos a ver otro comando que lo que hace es ordenar lo que le entra y devolverlo ordenado.
sort [opciones] [lista_de_ficheros]
No vamos a ver las opciones por el momento (siempre puedes hacer 'man sort' si te interesa). Veamos antes de todas formas cómo se comporta sort sin opciones:
[matados2k@fortaleza curso]$ sort
peras
limones
piñas
melocotones
(aquí pulsé CTRL+D)
limones
melocotones
peras
piñas
[matados2k@fortaleza curso]$
Observamos que espera a que pulsemos EOT y nos devuelve todo ordenado.
Seria muy interesante poder unir la salida de un programa con la entrada de otro y construir una cadena de órdenes. Imaginaos que en el caso anterior si a Manolito no le ordenamos la lista se pierde (no se molesten los Manolos, pero algún nombre tendría que tener la víctima), lo mejor sería hacer la lista con 'cat', unir la salida con 'sort' y redireccionar al fichero donde queremos guardarlo, y para eso usamos el carácter '|' (la del AltGr +1). Lo que hacemos con ese símbolo es crear una pipe, que es como ya expliqué unir la salida de un comando con la entrada de otro. Mejor un ejemplo:
[matados2k@fortaleza curso]$ cat < lista_compra | sort > nueva_lista
[matados2k@fortaleza curso]$ cat nueva_lista
aspirinas
Cerveza
Champu
Gominolas
jb
Manolito no te olvides de:
Panchitos
[matados2k@fortaleza curso]$
Observamos que redireccionamos la entrada de 'cat' con la lista ya creada y construimos una pipe para unir la salida de 'cat' con la entrada de 'sort' y terminamos redireccionando la salida a un nuevo fichero. Con lo que conseguimos la lista ordenada, que si bien podíamos haber hecho lo mismo con 'sort < lista_compra > nueva_lista' tenía que hacerlo de la otra forma para explicarlo.
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #7 :
Septiembre 30, 2007, 02:51:42 »
Entrega 7. ¡Permiso!
% cd ~god
Unknown user: god.
Los permisos de ficheros.
Como Linux es un sistema multiusuario, debemos proteger los ficheros de la manipulación por parte de otros. Linux nos proporciona para esto los conocidos permisos de ficheros. Sin más acordaos de 'ls -l':
[matados2k@fortaleza curso]$ ls -l
total 740
-rw-rw-r-- 1 matados2k matados2k 30 jun 4 16:07 hola_holita
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 16:27 lista_compra
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 18:10 nueva_lista
-rw-r--r-- 1 matados2k matados2k 740199 may 19 17:47 perro
[matados2k@fortaleza curso]$
En la entrega 3 ya quedamos claro que la primera parte (-rw-rw-r--) no la explicaría hasta que no llegara a esta entrega.
Los permisos de ficheros los podemos establecer en 3 niveles, permisos del propietario (usuario o user), permisos para el grupo (group) y permiso para el resto (others).
Cada fichero es del usuario que lo crea o bien los obtiene porque alguien le ha cambiado la propiedad (por ejemplo, root puede hacer esto). Sólo el propietario del fichero y el superusuario (root) pueden cambiar los permisos de los ficheros.
Cada usuario puede pertenecer a uno o a varios grupos de usuarios, y es a los usuarios que están dentro del mismo grupo que el propietario del fichero a quienes afectan los permisos de grupo. Y evidentemente los permisos para el resto afectan a todos los demás.
Y a la vez de todo esto hay 3 tipos de permisos: permisos de lectura, permisos de escritura y permiso de ejecución.
Interpretando los permisos.
Bien, como ya hemos visto con la opción '-l' de 'ls' podemos observar los permisos que tiene cada fichero asignado, siendo una cadena de 10 caracteres (por ejemplo -rw-rw-r--). El primer carácter no lo explicaremos puesto que ya lo hicimos en la entrega 3.
Con esto ya nos quedan 9, que lo dividiremos en partes de 3: el primero para la lectura, el segundo para la escritura y el tercero para la ejecución (si sois avispados ya os habréis dado cuenta de que en Linux no se ejecutan los ficheros por tener un tipo de extensión, si no por tener o no este permiso). Y el orden es el mismo: primero los 3 de usuario, los 3 de grupo y los 3 de los otros (buena película
). Un '-' indica que ese permiso no está dado.
Para que quede claro veamos unos ejemplos:
-rw-rw-r-- El usuario puede leer y escribir, el grupo puede leer y escribir y el resto sólo leer.
---------- Nadie puede hacer nada.
-rwxrwxrwx Todos pueden hacer todo.
-rwx------ El usuario puede hacer todo.
---x--x--x El fichero solo puede ejecutarse por todos.
-rwxr----- El usuario puede hacerlo todo y el grupo solo leer
Depende... ¿de qué depende?
Hay que indicar que los permisos de los ficheros dependen de los permisos en sí del directorio que los contiene, y que de nada sirve tener '-rwxrwxrwx' en un fichero si el directorio sólo tiene permisos '-r--------', con lo cual sólo podríamos leerlo y nada más. Incluso si el directorio no tuviera permiso de lectura para nadie, no podríamos ni siquiera listar el contenido del directorio, para ver esto con un usuario normal intentad haced lo siguiente:
[matados2k@fortaleza curso]$ ls /root
ls: /root: Permiso denegado
[matados2k@fortaleza curso]$
Según la configuración de vuestro sistema puede que os deje, si es así seguramente no tendréis una buena seguridad en vuestro sistema.
Como curiosidad a esto, por ejemplo, podéis crear un buzón donde todos pueden entrar los ficheros que quieran pero sólo tu puedes verlo y manipularlo, sería algo así como '-rwx-w--w-'.
Cambiando permisos.
De momento sólo veremos cómo cambiar los permisos a los ficheros, este comando es:
chmod [opciones] modo fichero
Como opción únicamente comentaremos '-R' que hace que el cambio de permisos sea recursivo, por ejemplo, para dar los permisos a todos los ficheros de un directorio y sus descendientes.
Para el modo de momento sólo vamos a ver la forma amigable de hacerlo, ya que se puede hacer con un número en octal. Para esto describiremos el modo como {a,u,g,o}{+,-}{rwx} donde:
a Indica que se aplicará a todos.(all)
u Indica que se aplicará al usuario.(user)
g Indica que se aplicará al grupo.(group)
o Indica que se aplicará a otros.(other)
+ Indica que se añade el permiso.
- Indica que se quita el permiso.
r Indica permiso de lectura.
w Indica permiso de escritura.
x Indica permiso de ejecución.
Así que primero indicamos a quien vamos aplicar el permiso, y después qué permiso pondremos o quitaremos. Vemos ejemplos del modo:
a+r Permisos de lectura para todos.
+r Igual que antes, si no se indica nada se supone 'a'.
og-x Quita permiso de ejecución a todos menos al usuario.
u+rwx Da todos los permisos al usuario.
o-rwx Quita los permisos a los otros.
Con todo esto sólo queda hacer un ejemplo de la ejecución de 'chmod':
[matados2k@fortaleza curso]$ ls -l
total 740
-rw-rw-r-- 1 matados2k matados2k 30 jun 4 16:07 hola_holita
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 16:27 lista_compra
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 18:10 nueva_lista
-rw-r--r-- 1 matados2k matados2k 740199 may 19 17:47 perro
[matados2k@fortaleza curso]$ chmod a+rwx hola_holita
[matados2k@fortaleza curso]$ ls -l
total 740
-rwxrwxrwx 1 matados2k matados2k 30 jun 4 16:07 hola_holita
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 16:27 lista_compra
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 18:10 nueva_lista
-rw-r--r-- 1 matados2k matados2k 740199 may 19 17:47 perro
[matados2k@fortaleza curso]$
Sólo comentar que con 'chmod' podemos hacer aún más, pero eso lo veremos cuando veamos la gestión de usuarios.
En línea
scenespain.net
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #7 :
Septiembre 30, 2007, 02:51:42 »
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #8 :
Septiembre 30, 2007, 02:52:37 »
Entrega 8. Enlaces y tareas
%touch me
touch: cannot touch me: permission denied
¿Para qué sirven los enlaces?
Los enlaces sirven para dar a un fichero múltiples nombres (no confundáis los que venís del mundo de Windows con accesos directos). Internamente para el sistema los ficheros son identificados por un número que se llama inodo, lo que quiere decir que el nombre de un fichero está asociado a un inodo que es lo que usa realmente el sistema operativo, el cual es el único identificador para el sistema. Con esto podríamos decir que simplemente los nombres esos que vemos al hacer un 'ls' son enlaces a inodos. Y como podréis deducir un directorio no es más que una lista de inodos con sus respectivos nombres de ficheros.
Enlaces duros.
Un enlace duro consiste en asignar un nombre de fichero a un inodo, con lo cual podemos referenciar a un mismo fichero con varios nombres y un cambio en uno de ellos implica un cambio en el resto ya que se trata del mismo fichero realmente. Para esto usamos el comando:
ln [Opciones] Origen Destino
Donde el origen es el nombre del fichero del cual queremos hacer un enlace duro, y para ver el número de inodo usaremos la opción '-i' de 'ls'. Para que todo quede claro un ejemplo:
[matados2k@fortaleza curso]$ ls -i
1264303 hola_holita 1264304 lista_compra 1264305 nueva_lista 1264193 perro
[matados2k@fortaleza curso]$ ln lista_compra lista2
[matados2k@fortaleza curso]$ ls -i lista_compra lista2
1264304 lista2 1264304 lista_compra
[matados2k@fortaleza curso]$
Lo primero que hacemos es mirar todos los inodos de los ficheros contenidos en nuestro directorio, creamos un enlace a lista_compra llamado lista2 y comprobamos que efectivamente tienen el mismo inodo.
Lo mismo ya os lo estáis preguntando: ¿qué pasa si borro uno de ellos? Si os acordáis de la entrega 3 hablábamos que una de las cosas que nos mostraba 'ls -l' es el número de enlaces de un fichero, pues si borras uno de ellos simplemente el contador disminuye en 1, y cuando no hay más enlaces es borrado realmente. Veámoslo mejor con un ejemplo:
[matados2k@fortaleza curso]$ ls -l
total 744
-rwxrwxrwx 1 matados2k matados2k 30 jun 4 16:07 hola_holita
-rw-rw-r-- 2 matados2k matados2k 75 jun 4 16:27 lista2
-rw-rw-r-- 2 matados2k matados2k 75 jun 4 16:27 lista_compra
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 18:10 nueva_lista
-rw-r--r-- 1 matados2k matados2k 740199 may 19 17:47 perro
[matados2k@fortaleza curso]$
[matados2k@fortaleza curso]$ rm lista2
[matados2k@fortaleza curso]$ ls -l
total 740
-rwxrwxrwx 1 matados2k matados2k 30 jun 4 16:07 hola_holita
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 16:27 lista_compra
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 18:10 nueva_lista
-rw-r--r-- 1 matados2k matados2k 740199 may 19 17:47 perro
[matados2k@fortaleza curso]$
Podemos observar con el primer 'ls -l' que lista2 y lista_compra tienen ambos un 2 ya que al inodo al que apuntan tiene 2 enlaces, y como ambos apuntan al mismo pues ambos muestran que tienen 2. Y al borrar uno de ellos simplemente se elimina el enlace y disminuye el contador. Fácil, ¿verdad?
Hay que resaltar que los enlaces duros tienen una limitación y es que sólo se pueden hacer enlaces de este tipo en un mismo sistema de ficheros. Con esto quiero decir que si tienes por ejemplo dos particiones no puedes hacer enlaces duros entre particiones. Por ejemplo, yo tengo varias particiones para distintas partes del árbol de ficheros como son '/', '/home' y '/usr' todas ellas de tipo Ext3. Pues bien aquí un ejemplo de un enlace duro entre particiones:
[matados2k@fortaleza curso]$ ln lista_compra /etc/lista_chula
ln: creando el enlace duro `/etc/lista_chula' a `lista_compra': Enlace cruzado entre dispositivos no permitido
[matados2k@fortaleza curso]$
Otros inconvenientes son que no se puede hacer un enlace a un fichero que no existe, y es difícil saber a qué fichero apunta un enlace. Pero para esto no se vayan todavía porque aún hay más ...
Enlaces simbólicos.
Éstos son otros tipo de enlaces bastante diferentes y sin las limitaciones anteriormente dichas. Este tipo de enlaces permite dar a un fichero el nombre de otro, pero no enlaza el fichero con un inodo. Lo que hace en este caso es realmente apuntar al nombre del fichero con quien enlaza, por lo cual tendrán inodos diferentes y si uno se elimina no se elimina el otro (esto es ya más parecido a lo que es un acceso directo de Windows, aunque no lo es para nada).
Para realizar este tipo de enlaces usamos la opción '-s' de 'ln' y para entenderlo mejor como siempre un ejemplo:
[matados2k@fortaleza curso]$ ls -li
total 740
1264303 -rwxrwxrwx 1 matados2k matados2k 30 jun 4 16:07 hola_holita
1264304 -rw-rw-r-- 1 matados2k matados2k 75 jun 4 16:27 lista_compra
1264305 -rw-rw-r-- 1 matados2k matados2k 75 jun 4 18:10 nueva_lista
1264193 -rw-r--r-- 1 matados2k matados2k 740199 may 19 17:47 perro
[matados2k@fortaleza curso]$ ln -s lista_compra lista2
[matados2k@fortaleza curso]$ ls -li
total 740
1264303 -rwxrwxrwx 1 matados2k matados2k 30 jun 4 16:07 hola_holita
1264331 lrwxrwxrwx 1 matados2k matados2k 12 jun 22 16:56 lista2 -> lista_compra
1264304 -rw-rw-r-- 1 matados2k matados2k 75 jun 4 16:27 lista_compra
1264305 -rw-rw-r-- 1 matados2k matados2k 75 jun 4 18:10 nueva_lista
1264193 -rw-r--r-- 1 matados2k matados2k 740199 may 19 17:47 perro
[matados2k@fortaleza curso]$
Podemos ver en este ejemplo cómo los inodos son totalmente distintos, y cómo lista2 es un enlace a lista_compra de una manera muy sencilla. Y para ver que lo anteriormente dicho es cierto eliminaremos lista_compra y quedará lista2.
[matados2k@fortaleza curso]$ rm lista_compra
[matados2k@fortaleza curso]$ ls -l
total 736
-rwxrwxrwx 1 matados2k matados2k 30 jun 4 16:07 hola_holita
lrwxrwxrwx 1 matados2k matados2k 12 jun 22 16:56 lista2 -> lista_compra
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 18:10 nueva_lista
-rw-r--r-- 1 matados2k matados2k 740199 may 19 17:47 perro
[matados2k@fortaleza curso]$
¿Y adivinan ya qué pasa si hacemos 'cat' a lista2, o hace falta un ejemplo?
Control de tareas.
El control de tareas es una utilidad incluida en la mayoría de los intérpretes de comandos, y permiten el control del multitud de tareas o comandos a la vez en un solo terminal.
Los procesos pueden estar en Primer Plano o en Segundo Plano. En primer plano solamente puede haber un proceso a la vez y ese es precisamente el que vemos, en otras palabras el que interactúa con nosotros dándonos una salida o pidiendo datos, el que recibe las órdenes del teclado. En cambio el proceso en segundo plano no recibe señal (normalmente) desde el teclado y se ejecuta en silencio.
Si un programa tarda mucho en terminar y no muestra nada interesante por pantalla lo más lógico sería ejecutarlo en segundo plano, como pudiera ser la compresión de un archivo enorme. Si lo hacemos así podremos seguir usando el ordenador para hacer cualquier otra cosa.
Un proceso puede ser suspendido (dormido), lo que indica que temporalmente estará parado y más tarde podríamos reanudarlo para cuando lo necesitemos.
O bien cuando ya no nos interese un proceso podremos interrumpirlo y acabar con él.
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #9 :
Septiembre 30, 2007, 02:53:38 »
Entrega 9. Continuamos con el control de tareas.
%touch me
touch: cannot touch me: permission denied
Mata que te mata.
Después de la introducción en la anterior entrega vamos a ponernos manos a la obra. Para ello vamos a ver un comando que para mi es casi totalmente inútil pero que nos servirá muy bien para las explicaciones, es el comando:
yes [string]
Este comando simplemente va a repetir lo que le indiquemos en string indefinidamente y en su defecto nos dará una ristra de 'y' si no le indicamos nada. En los manuales de los que yo aprendí ponía que era utilísimo para no tener que estar diciendo siempre que si a un comando (recordar el uso de redirección y pipes), pero, ¿realmente alguien le ve la utilidad a decir todo que si sin leer antes?.
Paro probarlo tecleemos yes y haber que pasa:
[matados2k@fortaleza curso]$ yes
y
y
y
....
Ya aburridos de ver 'y' sin parar lo que vamos hacer el matarlo por cansino y aburrido
para ello pulsamos 'Ctrl + c' y se acabó.
Como al hacer la pruebas no nos interesa estar mirando un montón de 'y' lo que haremos es redirigir la salida del comando 'yes' hacia '/dev/null' que es algo así como un agujero negro, es decir todo lo que allí mandamos desaparece (mas de uno querría un '/dev/null' en la vida real).
Enviando al segundo plano.
Ahora lo que queremos hacer es arrancar el comando yes con la redirección a '/dev/null' y arrancarlo en segundo plano consiguiendo un bonito gasto de cpu
. Para ello debemos añadir el simbolo '&' al final de la línea, como vemos en el ejemplo.
[matados2k@fortaleza curso]$ yes > /dev/null &
[1] 5064
[matados2k@fortaleza curso]$
Este es el resultado, volvemos a tener el prompt para nosotros y dos curiosos números. Esos dos números son las referencias a la tarea, el '[1]' representa el número de tarea y el 5064 es el identificador de proceso o PID que es ni mas ni menos el número que le asigna el sistema al proceso.
Pero ¿donde se ha metido?.
¿Y ahora que hacemos para ver que a pasado con nuestro querido comando? Pues simple, usamos unos de los comandos internos del interprete de comando, este es 'jobs' que da un listado de las tareas que tenemos en ejecución y su estado:
[matados2k@fortaleza curso]$ jobs
[1]+ Running yes >/dev/null &
[matados2k@fortaleza curso]$
Como veis nos indica el número de tarea, el estado (en esta caso corriendo o mejor dicho ejecutándose) y la forma en que lo llamamos.
Más formas de matar.
Siguiendo con nuestras ganas de eliminar a 'yes' de nuestro sistema (ahora no nos vale 'Ctrl + c' ) tenemos 2 formas de hacerlo con un mismo comando, este es 'kill' que así sin mas envía una señal de fin de proceso al proceso que le indiquemos.
Para hacerlo tenemos dos formas de referenciarlo, la más cómoda sería con el número de tarea y para ello usamos el símbolo '%' de la siguiente manera:
[matados2k@fortaleza curso]$ kill %1
[matados2k@fortaleza curso]$
Así que recordad, para usar el número de tarea hay que usar un '%' delante y para usar el PID simplemente pondremos el PID. Así que 'kill %1' y 'kill 5064' serian equivalentes.
Y para cerciorarnos de su defunción consultamos a nuestro querido 'jobs':
[matados2k@fortaleza curso]$ jobs
[1]+ Terminado yes >/dev/null
[matados2k@fortaleza curso]$
Hay que destacar que 'jobs' guarda la información del proceso muerto para mostrarla 1 vez ya que si ejecutamos de nuevo 'jobs' ya nada se sabrá de la tarea muerta:
[matados2k@fortaleza curso]$ jobs
[matados2k@fortaleza curso]$
Parar y seguir.
Hay otra forma de mandar una tarea a segundo plano y es ejecutarla normalmente y hacerla suspenderse o dormirse, para ello usaremos la combinación de teclas ' Ctrl+z ':
[matados2k@fortaleza curso]$ yes > /dev/null
[1]+ Stopped yes >/dev/null
[matados2k@fortaleza curso]$ jobs
[1]+ Stopped yes >/dev/null
[matados2k@fortaleza curso]$
Para volverla a reanudar en primer plano usaremos el comando interno 'fg' (foreground) continuando la tarea justo donde se dejo (hay que recalcar que cuando una tarea esta parada no usa tiempo de cpu).
[matados2k@fortaleza curso]$ fg
yes >/dev/null
[1]+ Stopped yes >/dev/null
[matados2k@fortaleza curso]$
Vemos como la hemos reanudado y la hemos vuelto a parar, pero en este caso ya si que la vamos a mandar al segundo plano con el comando interno 'bg' (background) que continuara con la ejecución del comando en segundo plano.
[matados2k@fortaleza curso]$ bg
[1]+ yes >/dev/null &
[matados2k@fortaleza curso]$
Recapitulando.
Las tareas pueden estar en primer y segundo plano y estas pueden estar a bien ejecutándose, paradas o terminadas (muertas). Las tareas en segundo plano no pueden pararse ni eliminarlas mediante 'Ctrl + c' si no que antes hay que pasarlas a primer plano para poder realizar esto.
Una tarea parada no consume tiempo de cpu, pero sigo manteniendo la memoria que estuviese usando, simplemente espera a que se le de la oportunidad de continuar con su tarea.
Aunque una tarea en segundo plano no puede recibir nada desde el teclado si que puede enviar datos a la pantalla y puede resultar muy muy molesto.
Por ejemplo si se te hubiera ocurrido ejecutar 'yes &' no podridas detenerlo con 'Ctrl +c' o con 'Ctrl + z' ya que esta en segundo plano, pero nos esta abrumando con una ristra interminables de 'y' que no nos deja ver nuestro prompt, con lo que para remediar esto debemos teclear a ciegas 'fg' para traernos la tarea al primer plano y esta vez si la podremos parar por ese método (también podríamos haberla eliminado con un 'kill' a ciegas con su número de tarea).
Más sobre 'fg' y 'bg'.
Estos dos comandos actúan sobre el último proceso parado o creado, indicado por un '+' cuando ejecutamos 'jobs' (mirad los ejemplos anteriores). Si tuviéramos varias tareas para indicarle a 'fg' y 'bg' sobre cual actuar utilizaríamos como con 'kill' el símbolo '%' mas su número de tarea.
[matados2k@fortaleza curso]$ yes > /dev/null &
[2] 5592
[matados2k@fortaleza curso]$ yes > /dev/null &
[3] 5593
[matados2k@fortaleza curso]$ yes > /dev/null &
[4] 5594
[matados2k@fortaleza curso]$ jobs
[1] Running yes >/dev/null &
[2] Running yes >/dev/null &
[3]- Running yes >/dev/null &
[4]+ Running yes >/dev/null &
[matados2k@fortaleza curso]$ fg %2
yes >/dev/null
[2]+ Stopped yes >/dev/null
[matados2k@fortaleza curso]$ jobs
[1] Running yes >/dev/null &
[2]+ Stopped yes >/dev/null
[3] Running yes >/dev/null &
[4]- Running yes >/dev/null &
[matados2k@fortaleza curso]$ kill %1
[matados2k@fortaleza curso]$ kill %4
[1] Terminado yes >/dev/null
[matados2k@fortaleza curso]$
Despedida.
Y ya visto este ejemplo mas complejo terminamos con el control de tareas. En la próxima entrega veremos una colección de comandos que nos serán de gran utilidad, Hasta la semana que viene
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #10 :
Septiembre 30, 2007, 02:54:37 »
Entrega 10. Colección de comandos.
% cat "door: paws too slippery"
cat: cannot open door: paws too slippery
Toqueteando el tiempo 'touch'.
touch [-acm][-r archivo_referencia |-t fecha] archivos...
El comando touch en su forma más simple (sin opciones) actualiza los registros fecha y hora a la hora y fecha actual de la lista de ficheros que le indiquemos. Hay que tener en cuenta que si el fichero no existe nos lo creará. Hoy dos tipos de fechas de un archivo el de modificación (el que normalmente vemos) y el de último acceso, se cambian ambas. Aquí un ejemplo:
[matados2k@fortaleza curso]$ ls -l
total 736
-rwxrwxrwx 1 matados2k matados2k 30 jun 4 16:07 hola_holita
lrwxrwxrwx 1 matados2k matados2k 12 jun 22 16:56 lista2 -> lista_compra
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 18:10 nueva_lista
-rw-r--r-- 1 matados2k matados2k 740199 may 19 17:47 perro
[matados2k@fortaleza curso]$ touch hola_holita perro soy_nuevo
[matados2k@fortaleza curso]$ ls -l
total 736
-rwxrwxrwx 1 matados2k matados2k 30 jul 6 17:20 hola_holita
lrwxrwxrwx 1 matados2k matados2k 12 jun 22 16:56 lista2 -> lista_compra
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 18:10 nueva_lista
-rw-r--r-- 1 matados2k matados2k 740199 jul 6 17:20 perro
-rw-rw-r-- 1 matados2k matados2k 0 jul 6 17:20 soy_nuevo
[matados2k@fortaleza curso]$
Como veis se han cambiado las fechas de los 2 primeros y se ha creado un tercero por no existir antes. Pata evitar que se creen nuevos ficheros se usa la opción '-c'.
Si queremos que sólo nos modifique la fecha de modificación usamos la opción '-m' y si queremos que sólo cambie la fecha de último acceso usamos la opción '-a', por lo tanto ya deducís que usar 'a' y 'c' a la vez es absurdo
. Y os estaréis preguntando como ver el tiempo del último acceso verdad, pues ni más ni menos que usando la opción '-u' junto con la de '-l' con el comando 'ls':
[matados2k@fortaleza curso]$ ls -lu
total 736
-rwxrwxrwx 1 matados2k matados2k 30 jul 6 17:20 hola_holita
lrwxrwxrwx 1 matados2k matados2k 12 jul 6 17:38 lista2 -> lista_compra
-rw-rw-r-- 1 matados2k matados2k 75 jun 4 18:11 nueva_lista
-rw-r--r-- 1 matados2k matados2k 740199 jul 6 17:20 perro
-rw-rw-r-- 1 matados2k matados2k 0 jul 6 17:20 soy_nuevo
[matados2k@fortaleza curso]$
Con la opción '-r' tomamos un archivo de referencia y con la '-t' una fecha que le indiquemos y no se pueden usar las dos a la vez por eso en la sintaxis del comando aparece el símbolo '|' que indica que es una cosa o la otra.
El comando y casi todos los que vemos tienen más opciones, como siempre explicare las más básicas y/o útiles y si queréis saber más ya sabéis recurrir al 'man'.
Cuanto ocupa todo 'du'.
du [opciones] [ficheros...]
Este comando contabiliza el espacio que ocupa en disco un fichero o un directorio con todos sus subdirectorios. Como opciones solo comentaremos 3 de ellas, la primera '-a' muestra además el espacio que ocupa cada uno de los ficheros que hay en los directorios que le indiquemos. La siguiente opción es '-b' que en vez de mostrarnos el tamaño en kB lo mostrará en bytes (1kB=1024bytes). Y por último la opción '-s' que informa solamente del directorio que le hayamos indicados sin contar sus subdirectorios.
[matados2k@fortaleza curso]$ cd ..
[matados2k@fortaleza matados2k]$ du curso
740 curso
[matados2k@fortaleza matados2k]$ du -a curso
4 curso/hola_holita
728 curso/perro
0 curso/soy_nuevo
4 curso/nueva_lista
0 curso/lista2
740 curso
[matados2k@fortaleza matados2k]$ du -b curso
744412 curso
[matados2k@fortaleza matados2k]$ du -s curso
740 curso
[matados2k@fortaleza matados2k]$ cd curso
Como observáis en el ejemplo tanto 'du' a secas como 'du -s' da el mismo resultado y no es ni más ni menos por que el directorio 'curso' con contiene subdirectorios.
Seguimos interesados en saber cuanto ocupa 'df'.
df [opciones] [fichero...]
El comando 'df' resume la cantidad de espacio que se usa y la que se dispone en el sistema de ficheros. Ejemplo:
[matados2k@fortaleza curso]$ df
S.ficheros Bloques de 1K Usado Dispon Uso% Montado en
/dev/hda11 3099260 574984 2366844 20% /
/dev/hda10 101054 8327 87510 9% /boot
/dev/hda6 20641788 6806000 13835788 33% /home
/dev/hda8 10480160 9622168 857992 92% /home/mnt/auxi1
/dev/hda9 14669032 10906040 3762992 75% /home/mnt/auxi2
/dev/hda7 15720264 15385624 334640 98% /home/mnt/juegos
none 257332 0 257332 0% /dev/shm
/dev/hda12 7123608 3845140 2916608 57% /usr
/dev/cdrom1 668832 668832 0 100% /mnt/cdrom1
[matados2k@fortaleza curso]$
Como podéis observar tengo bastante cargado mi disco duro y soy un poco raro a la hora de elegir donde montar mis particiones
.
Si le indicamos a 'df' un fichero sólo nos indicará el espacio usado y disponible de la partición donde se encuentre ese fichero:
[matados2k@fortaleza curso]$ df .
S.ficheros Bloques de 1K Usado Dispon Uso% Montado en
/dev/hda6 20641788 6809032 13832756 33% /home
[matados2k@fortaleza curso]$
Como opción muy interesante esta '-i' que nos muestra el uso de inodos en vez del espacio:
[matados2k@fortaleza curso]$ df -i
S.ficheros Nodos-i NUsados NLibres NUso% Montado en
/dev/hda11 393600 37556 356044 10% /
/dev/hda10 26104 40 26064 1% /boot
/dev/hda6 2626560 47749 2578811 2% /home
/dev/hda8 0 0 0 - /home/mnt/auxi1
/dev/hda9 0 0 0 - /home/mnt/auxi2
/dev/hda7 0 0 0 - /home/mnt/juegos
none 64333 1 64332 1% /dev/shm
/dev/hda12 904960 188632 716328 21% /usr
/dev/cdrom1 0 0 0 - /mnt/cdrom1
[matados2k@fortaleza curso]$
Donde se muestra un '-' es por que ese tipo de sistema de ficheros no usan inodos (como pueden ser los FAT y los NTFS). Pero ¿por que es importante saber cuantos inodos nos quedan? Pues sencillo, si como ya comentamos que un inodo se relaciona con un fichero, si no tenemos inodos libres no pueden crearse más ficheros por mucho espacio libre que exista.
Y por último una forma más “humana” de usar 'df' y es usando la opción '-h', veamos el ejemplo:
matados2k@imperio:~$ df -h
S.ficheros Tamaño Usado Disp Uso% Montado en
/dev/hda6 30G 13G 16G 45% /
udev 10M 96K 10M 1% /dev
devshm 506M 0 506M 0% /dev/shm
/dev/hda1 16G 14G 1,1G 94% /mnt/winxp
/dev/hda7 20G 18G 2,7G 87% /mnt/juegos
/dev/hda8 29G 28G 595M 98% /mnt/auxiliar
matados2k@imperio:~$
Si observáis bien esta todo medido en Gigas, megas y demás que es como normalmente nosotros lo entendemos.
Cuanto tiempo llevamos 'uptime'.
uptime
Este comando simplemente informa sobre el tiempo que ha pasado desde que arrancamos nuestro Linux y la hora actual acompañada del número de usuarios y el promedio de carga que soporta el sistema. El promedio de carga significa el número medio de procesos esperando a usar el procesador. Del promedio se dan tres números, el promedio en el último minuto, en los cinco últimos minutos y en los 15 últimos minutos.
[matados2k@fortaleza curso]$ uptime
18:25:21 up 8:19, 4 users, load average: 0.12, 0.18, 0.18
[matados2k@fortaleza curso]$
El que quiera saber más del promedio que se dirija al siguiente enlace:
http://bulma.net/body.phtml?nIdNoticia=550
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #11 :
Septiembre 30, 2007, 02:56:01 »
Entrega 11. Colección de comandos (y II).
% ar m God
ar: God does not exist
¿Quien esta aquí?, 'who'.
who [OPTION]... [ FILE | ARG1 ARG2 ]
El comando 'who' simplemente nos muestra qué usuarios están logueados en el sistema, y desde dónde y a qué hora. Veamos su uso simple:
[matados2k@fortaleza matados2k]$ who
root tty1 Jul 14 16:41
matados2 :0 Jul 14 14:46
matados2 pts/1 Jul 14 14:46
matados2 pts/2 Jul 14 16:35
matados2 pts/3 Jul 14 16:39
[matados2k@fortaleza matados2k]$
Sólo hay que decir que si pone 'ttyx': 'x' es un número que nos indica que se ha conectado desde un terminal virtual, y el número nos indica cuál de ellos (Ctrl+Alt+F1 por ejemplo).Los 'pts/x' son los terminales virtuales que abrimos en las X-windows (entorno gráfico). La verdad es que hay más, pero de momento no los veremos.
Como ARG1 y ARG 2 pondremos normalmente 'am I' o 'mom likes', aunque realmente puedes poner las 2 cosas estúpidas que se te ocurran, que la salida será la misma.
[matados2k@fortaleza matados2k]$ who am i
matados2 pts/3 Jul 14 16:39
[matados2k@fortaleza matados2k]$ who mom likes
matados2 pts/3 Jul 14 16:39
[matados2k@fortaleza matados2k]$ who yo mismo
matados2 pts/3 Jul 14 16:39
[matados2k@fortaleza matados2k]$
Y lo que hace es respondernos a 'who am i' o sea ¿quien soy yo? Y nos pone bajo qué usuarios estamos conectados y desde dónde hemos hecho la consulta. El parámetro FILE lo dejaremos para que uséis la ayuda y ahora veremos alguna que otra opción:
-a De all da información extendida o sea todo lo que 'who' nos puede dar.
-b Nos indica cuando arranco el sistema.
-d Nos da los procesos muertos o sea un historial de quien se conecto (sólo el último por un mismo sitio).
-q Que simplemente nos da el número de usuarios.
Tiene bastantes más pero nos quedaremos sólo con estos. Ejemplos:
[matados2k@fortaleza matados2k]$ who –b
system boot Jul 14 14:44
[matados2k@fortaleza matados2k]$ who -d
Jul 14 14:44 13 id=si term=0 salida=0
Jul 14 14:44 2989 id=l5 term=0 salida=0
pts/4 Jul 14 17:02 4890 id=/4 term=0 salida=0
[matados2k@fortaleza matados2k]$ who -q
matados2k matados2k matados2k matados2k
Nº de usuarios=4
[matados2k@fortaleza matados2k]$
Yo quiero saber más que con 'who', 'w'.
w - [-husfV] [user]
Este comando además de hacer lo mismo que 'who' nos dice qué está haciendo cada usuario, en definitiva una mezcla de 'uptime' con 'who':
[matados2k@fortaleza matados2k]$ w
17:07:05 up 2:23, 4 users, load average: 0,22, 0,12, 0,10
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
matados2 :0 - 2:46pm ? 0.00s 0.02s /bin/sh /usr/bi
matados2 pts/1 - 2:46pm 2:20m 0.00s 0.22s kdeinit: kwrite
matados2 pts/2 - 4:35pm 30:59 0.07s 0.01s man who
matados2 pts/3 - 4:39pm 0.00s 0.21s 0.01s w
[matados2k@fortaleza matados2k]$
Como veis indica la hora en la que se hace la consulta, el tiempo que lleva en funcionamiento, los usuarios y la carga (acordaros de uptime) y luego nos da los usuarios con el terminal al que están conectados (TTY), desde dónde (por si es una conexión remota, FROM ), cuánto hace desde que hicieron login, el tiempo ocioso (IDLE) , cantidad total de cpu usada por el usuario (JCPU), la cantidad de tiempo total usada por sus tareas (PCPU) y con que tarea está.
También podéis preguntarle por un determinado usuario pasándoselo por parámetros, y por último veremos sus opciones:
-h No imprime la cabecera (FROM,IDLE ...)
-s Da la información en el formato corto (Sin LOGIN@, JCPU y PCPU).
-f No muestra FROM.
Y como no veo necesario poner un ejemplo pasamos al siguiente.
Pues ahora quiero saber qué es ese fichero, 'file'.
file [Lista de ficheros]
Puede que tengamos archivos que son textos, otros que son binarios (ejecutables) y demás, como no es necesaria un extensión, puede que necesitemos algo para saber qué es. Esto es lo que hace 'file' concretamente, identificar el formato de un determinado fichero. Veamos unos ejemplos:
[matados2k@fortaleza curso]$ ls
hola_holita lista2 nueva_lista perro soy_nuevo
[matados2k@fortaleza curso]$ file hola_holita
hola_holita: ASCII text
[matados2k@fortaleza curso]$ cd ..
[matados2k@fortaleza matados2k]$ file curso
curso: directory
[matados2k@fortaleza matados2k]$ cd curso/
[matados2k@fortaleza curso]$ file nueva_lista perro soy_nuevo
nueva_lista: ASCII text
perro: data
soy_nuevo: empty
[matados2k@fortaleza curso]$
Bueno, queda claro que el uso es muy sencillo y la herramienta terriblemente útil ¿o no? Este comando también tiene opciones que no comentaremos. Hay que tener bastante cuidado con este comando ya que file puede cometer errores a la hora de identificar un fichero.
Creo que voy a mutar, 'su'.
su [user]
Este comando lo que hace es convertir tu usuario actual al usuario que le indiques, por defecto con 'su' a secas lo que haremos es pedir que nos haga 'root'. Esto es de gran utilidad ya que no es necesario estar haciendo login/logout todo el rato, simplemente hay que darle la password del usuario al que queremos usar y para volver al anterior simplemente tecleamos exit o pulsamos Ctrl+D.
[matados2k@fortaleza curso]$ su
Password:
[root@fortaleza curso]# exit
exit
[matados2k@fortaleza curso]$ su triguelch
Password:
[triguelch@fortaleza curso]$ su
Password:
[root@fortaleza curso]# exit
exit
[triguelch@fortaleza curso]$ exit
exit
[matados2k@fortaleza curso]$
Evidentemente no saldrá nada en pantalla cuando tecleamos los Password, pero sí que los está recibiendo. También podéis observar cómo puedo cambiar más de una vez seguida sin hacer exit.
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #12 :
Septiembre 30, 2007, 02:56:46 »
Entrega 12. Comandos de edición.
% lost
lost: not found
Más despacio por favor,' more'.
Ya hemos aprendido a visualizar el contenido de los ficheros con 'cat' , pues bien haced lo siguiente:
[matados2k@fortaleza curso]$ ls -l /etc > listado
[matados2k@fortaleza curso]$ cat listado
Y ooops! la pantalla vuela y no podemos leer lo que ponía (si estáis en entorno gráfico no vale, que tenéis barra de desplazamiento). Para hacer la visión del fichero de forma interactiva usamos lo siguiente:
more [opciones][+ número de linea][listado de ficheros]
Para empezar no veremos ninguna opción, ya que no considero ninguna muy interesante. Así que sin más pasamos a ejecutar 'more listado' (si queréis repasad el uso de pipes 'cat listado | more').
Como veis os muestra la pantalla llena de lo que contiene, y abajo lo siguiente:
......
drwxr-xr-x 3 root root 4096 abr 21 03:26 CORBA
drwxr-xr-x 2 root root 4096 jun 6 2003 cron.d
--Más-- (9%)
Lo que hace more es esperar a que le indiquemos una orden y nos da el porcentaje visualizado del archivo. Los comandos más comunes de espera son:
[barra espaciadora] Pasa a la siguiente pantalla.
[d] Pasa la mitad de la pantalla (mas o menos 11 lineas ya que una pantalla normal tiene 25).
[/ expresión] Sirve para buscar una expresión regular y dado que las expresiones regulares pueden ser muy complejas, nosotros solamente lo usaremos para buscar palabras (pro ejemplo '/ perro').
[Intro] Pasa una sola línea.
[n expresión] Como '/ expresión' pero busca la próxima aparición de la expresión.
[:n] Pasa al siguiente fichero de la lista en el caso que le hayamos indicado mas de uno.
[:p] Pasa al fichero anterior.
[q] Termina la ejecución de more.
Bueno, no se os ocurra teclear '[' ni ']', ya que los pongo para separar lo que hay que teclear de la explicación. Otra cosa: la ejecución de more termina al llegar al 100% del último documento si no pulsamos antes 'q'.
Quiero ver el principio, 'head'.
head [opciones] [lista de ficheros]
Este comando simplemente muestra las 10 primeras líneas de los ficheros que le indiquemos:
[matados2k@fortaleza curso]$ head listado hola_holita
==> listado <==
total 2436
-rw-r--r-- 1 root root 15228 oct 17 2003 a2ps.cfg
...
-rw-r--r-- 1 root root 317 jul 10 2003 anacrontab
==> hola_holita <==
hola
holita
vecinitos
soy ned
[matados2k@fortaleza curso]$
Como opciones interesantes tiene dos, la primera es '-c' seguido del número de bytes que queremos que nos muestre (un carácter en ASCII =un byte) y la segunda el '-NUMERO' o '-n NUMERO' con lo que le indicamos el número de líneas del principio que queremos que se muestren. Ejemplos:
[matados2k@fortaleza curso]$ head -c 15 listado
total 2436
[matados2k@fortaleza curso]$ head -2 listado
total 2436
-rw-r--r-- 1 root root 15228 oct 17 2003 a2ps.cfg
[matados2k@fortaleza curso]$ head -n 2 listado
total 2436
-rw-r--r-- 1 root root 15228 oct 17 2003 a2ps.cfg
[matados2k@fortaleza curso]$
Pues ahora quiero el final, 'tail'.
tail [opciones] [lista de ficheros]
Este comando hace exactamente lo contrario que 'head', o sea mostrar las 10 últimas líneas, y lo dicho para el anterior (opciones incluidas) sirve para este, así que solo veremos ejemplos:
[matados2k@fortaleza curso]$ tail listado hola_holita
==> listado <==
-rw-r--r-- 1 root root 289 oct 12 2003 xinetd.conf
...
-rw-r--r-- 1 root root 570 oct 29 2003 yum.conf
==> hola_holita <==
hola
holita
vecinitos
soy ned
[matados2k@fortaleza curso]$ tail -2 listado
-rw-r--r-- 1 root root 501 abr 21 03:37 yp.conf
-rw-r--r-- 1 root root 570 oct 29 2003 yum.conf
[matados2k@fortaleza curso]$ tail -c 12 listado
03 yum.conf
[matados2k@fortaleza curso]$ tail -n 2 listado
-rw-r--r-- 1 root root 501 abr 21 03:37 yp.conf
-rw-r--r-- 1 root root 570 oct 29 2003 yum.conf
[matados2k@fortaleza curso]$
Cuéntamelo todo, 'wc'.
wc [opciones] [listado de ficheros]
Este comando 'wc' simplemente cuenta el número de líneas, palabras y caracteres que hay en un fichero:
[matados2k@fortaleza curso]$ wc listado
227 2068 15135 listado
[matados2k@fortaleza curso]$
Como opciones tenemos '-c' para que sólo cuente caracteres, '-l' para que sólo cuente líneas y '-w' para que sólo cuente palabras. Así que si por ejemplo usamos '-lc' nos contará las líneas y los caracteres. Si no indicamos ningún fichero nos contará lo que entremos por la entrada estándar. Ejemplos:
[matados2k@fortaleza curso]$ wc -c listado
15135 listado
[matados2k@fortaleza curso]$ wc -l listado
227 listado
[matados2k@fortaleza curso]$ wc -w listado
2068 listado
[matados2k@fortaleza curso]$ wc -lc listado
227 15135 listado
[matados2k@fortaleza curso]$ wc
hola
a
todos (Pulsación de Ctrl+D) 2 3 12
[matados2k@fortaleza curso]$
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #13 :
Septiembre 30, 2007, 02:57:43 »
Entrega 13. Comandos de edición (y II).
% cat "food in cans"
cat: can't open food in cans
Busca que te busca, 'grep'.
grep [opciones] expresión [lista de ficheros]
Grep es sin duda alguna, junto con el uso de las pipes y la redirección, uno de los comandos con más utilidad de linux y por extensión unix, aunque en un principio muchos de vosotros no se la vais a encontrar. Este comando es utilizado para buscar expresiones es un fichero de texto o una lista de ellos. Veamos un ejemplo simple:
[matados2k@fortaleza curso]$ cat nueva_lista
aspirinas
Cerveza
Champu
Gominolas
jb
Manolito no te olvides de:
Panchitos
[matados2k@fortaleza curso]$ grep champu nueva_lista
[matados2k@fortaleza curso]$ grep Champu nueva_lista
Champu
[matados2k@fortaleza curso]$
Podéis observar que distingue entre mayúsculas y minúsculas, y que la salida del comando son todas aquellas líneas que contienen la expresión que queremos. Vemos con este sencillo ejemplo cómo grep es una especie de filtro que nos muestra únicamente lo que queremos, veamos otro ejemplo:
[matados2k@fortaleza curso]$ cat listado | grep bin
lrwxrwxrwx 1 root root 11 abr 21 03:16 rmt -> ../sbin/rmt
drwx--x--x 93 root bin 4096 abr 21 04:32 webmin
[matados2k@fortaleza curso]$
Hemos buscado dentro del listado que hicimos en entregas anteriores todos aquellos ficheros que contengan al grupo o usuario 'bin', aunque si hay una palabra que contenga 'bin' también nos la muestra.
Si necesitáramos saber en qué línea del fichero se encuentran, usaríamos la opción '-n':
[matados2k@fortaleza curso]$ cat listado | grep -n bin
174:lrwxrwxrwx 1 root root 11 abr 21 03:16 rmt -> ../sbin/rmt
213:drwx--x--x 93 root bin 4096 abr 21 04:32 webmin
[matados2k@fortaleza curso]$
Es evidente la gran utilidad de este comando cuando necesitemos “indagar” en un fichero de configuración
(cada vez queda menos para entrar en faena con cosas más interesantes) .
Para conseguir el efecto contrario de 'grep', es decir, encontrar todas las líneas donde no se use la expresión, usaremos la opción '-v':
[matados2k@fortaleza curso]$ cat nueva_lista | grep C
Cerveza
Champu
[matados2k@fortaleza curso]$ cat nueva_lista | grep -v C
aspirinas
Gominolas
jb
Manolito no te olvides de:
Panchitos
[matados2k@fortaleza curso]$
Para evitar que busque la expresión contenida dentro de otras palabras, véase:
[matados2k@fortaleza curso]$ cat listado | grep -n bin
174:lrwxrwxrwx 1 root root 11 abr 21 03:16 rmt -> ../sbin/rmt
213:drwx--x--x 93 root bin 4096 abr 21 04:32 webmin
[matados2k@fortaleza curso]$
Usaremos la opción '-w':
[matados2k@fortaleza curso]$ cat listado | grep -w bin
drwx--x--x 93 root bin 4096 abr 21 04:32 webmin
[matados2k@fortaleza curso]$
Qué tal si corregimos las faltas ortográficas bajo consola, 'ispell'.
Este comando es un pequeño corrector ortográfico para consola, es bien sencillo de usar, así que os animo a que lo probéis sin más: “ispell nueva_lista”.
Comparemos diferencias, 'cmp'.
cmp [opciones] fichero1 [fichero2] [skip1] [skip2]
Este comando es de lo más simple de usar, simplemente compara el fichero1 con el fichero2, si éste no se indica usará 'stdin' (recordad lo del ctrl+d cuando uséis 'stdin' o entrada estándar, como prefiráis llamarlo), y muestra las diferencias. Para que lo probéis crearos una archivo con casi los mismo elementos que “nueva_lista” (a estas alturas ya deberíais ver que lo que uso una entrega lo sigo usando para las siguiente, de todas formas el contenido de ese fichero lo habéis visto en un ejemplo de esta entrega).
[matados2k@fortaleza curso]$ cat > nueva_lista2
aspirinas
Cocacola
Champu
Gominolas
Refresco de limon
Juanjo no te olvides de:
Panchitos
(Pulsación de Ctrl+d)
[matados2k@fortaleza curso]$ cmp nueva_lista nueva_lista2
nueva_lista nueva_lista2 son distintos: byte 12, línea 2
[matados2k@fortaleza curso]$
Podéis observar que nos indica dónde se produce la primera diferencia (considerar “byte” como “carácter” por si os liáis.)
No veremos opciones para este comando pero explicaré eso del 'skip1' y 'skip2', opcionalmente podemos decirle desde qué byte del documento empezar a mirar uno y otro respectivamente, y eso es lo que son estos dos parámetros opcionales. Para dónde está la siguiente diferencia haríamos lo siguiente:
[matados2k@fortaleza curso]$ cmp nueva_lista nueva_lista2 13 13
nueva_lista nueva_lista2 son distintos: byte 1, línea 1
[matados2k@fortaleza curso]$
Pero recordad que mira byte a byte (o si preferís carácter por carácter), y si hay una palabra cambiada dará una diferencia por cada carácter. Así que esto no lo hace muy útil para buscar diferencias, pero sí para saber si un fichero es idéntico o no a otro.
Para mirar bien las diferencias, 'diff'.
diff [opciones] fichero1 fichero2
Este comando es mucho más eficiente que 'cmp' a la hora de buscar diferencias, ya que lo hace por líneas y también tiene tantas opciones que lo convierte en un comando realmente complejo, por lo que lo usaremos como un 'cmp' avanzado (no veremos opciones).
[matados2k@fortaleza curso]$ diff nueva_lista nueva_lista2
2c2
< Cerveza
---
> Cocacola
5,6c5,6
< jb
< Manolito no te olvides de:
---
> Refresco de limon
> Juanjo no te olvides de:
[matados2k@fortaleza curso]$
La forma de leer la salida no es muy compleja, '2c2' significa “en la línea 2 en el segundo carácter está la diferencia”, cuando hay un '<' se refiere a lo que pone en el primer fichero indicado, y '>' al segundo. Cuando no hay diferencia no nos muestra resultado alguno.
En línea
yako
Ole Ole
Administrador
Top Level
Reputacion 1080
Sexo:
Mensajes: 3805
Registro: 08/10/05
Gracias
-Dadas: 33
-Recibidas: 1624
Re: [CURSO DESDE CERO] GNU/LINUX
«
Respuesta #14 :
Septiembre 30, 2007, 02:59:21 »
Entrega 14. Editor de texto bajo consola.
% scan for <<"Arnold Schwarzenegger"^J^D
"Arnold Schwarzenegger": << terminator not found
¿Por qué?
Esta es la pregunta que muchos os haréis, ¿por qué aprender a usar un editor de texto bajo consola? Sobre todo cuando en entorno gráfico los hay y muy buenos (Kate, Kaedit, Kwrite, Xemacs, nedit, vim-X11, gedit .... aunque para mí ninguno como el Kwrite). Pues la cosa es bien sencilla, primero porque no todos instalaréis un entorno gráfico o no siempre tendréis un entorno gráfico (si algún día ponéis un server es un poco “tonto” gastar recursos en tener entorno gráfico), y ante cualquier problema la consola siempre estará allí (imaginaos que se os estropea las X-windows, o sea el entorno gráfico, al actualizar un driver, no queda más remedio que usar un editor para reconfigurar a mano). En definitiva, es una herramienta muy útil que nos sacará de más de un apuro, y si os convertís en usuarios habituales darle tiempo y veréis como termináis tirando del editor bajo consola.
¿Con cuál aprenderemos y por qué?
De los muchísimos que hay y entre los más usados, vi y Emacs, nos decantaremos por este primero por una sencilla razón: no siempre puede estar instalado Emacs en un equipo (aunque raro es) y vi es casi imposible no encontrarlo, no sólo en Linux sino en cualquier tipo de Unix, sea el que sea. En definitiva, que es el único editor que está garantizado encontrar en cualquier sistema tipo Unix.
Para los que venís de la época del ms-dos veréis que vi es mucho mas 'arcaico' y más complejo de usar que el archiconocido edit, aunque con un poco de práctica lo dominaréis enseguida. Para los que queréis un editor más parecido al edit de toda la vida del ms-dos, os recomiendo el editor del Midnight Commander llamado mcedit.
Un poco de historia.
En la antigüedad los editores de texto funcionaban en modo de una línea y se usaban desde terminales tontos (o “no inteligentes”, como los queráis llamar). Un editor típico que operaba en este modo es Ed. Ed era un editor potente y eficiente que consumía una cantidad ínfima de recursos (a día de hoy los recursos que consume son irrisorios) y funciona con las pantallas de la época. Vi, por decirlo así, es una alternativa visual a Ed con un grupo notablemente amplio comparado con Ed.
Vi empezó como el editor de línea de un editor llamado Ex, y éste puede verse como un modo especial de edición en vi, aunque lo contrario también es verdad (uff menudo tostón os estoy clavando hoy, si no queréis no le deis importancia a esto, simplemente considerarlo como una batallita de abuelo “cebolleta”, y si no sabéis quien es éste preguntárselo a vuestros padres
).
Debido a lo popular de vi existen muchas variantes clónicas, y se pueden encontrar versiones para la mayoría de los sistemas operativos. Muchos de estos clones han aumentado y modificado el comportamiento original de vi y la mayoría de los clones no soportan todos los comandos originales de vi. El que vamos a usar nosotros y por ser el que viene en casi todas (por no decir todas las distribuciones de Linux) es Vim, que no es ni más ni menos que un Vi mejorado, y ni que decir tiene que lo que aprendáis para este os servirá para cualquier Vi que encontréis.
Retrocedamos en el tiempo.
Para que veáis por qué Vi es como es, veremos cómo es el Ed, aunque nunca lo vayáis a usar, yo por lo menos no lo uso y no conozco absolutamente a nadie que lo haga. Así que esta parte queda como curiosidad para que sepáis como los jurásicos en esto de la informática editaban sus ficheros.
Sin más teclead 'ed' en vuestra consola y tendréis algo como esto:
[matados2k@fortaleza curso]$ ed
Y para empezar pulsamos la 'a', que le indica que vamos a añadir texto, y para finalizar pulsaremos '.' en la primera columna de texto. Veamos el ejemplo:
[matados2k@fortaleza curso]$ ed
a
Esto es tan retro que voy a buscar unos pantalones de pata de elefante para mi novia.
.
Para salvar el texto a un fichero se usa 'w' (una vez después del '.' ) seguido del nombre, y finalmente 'q' para salir del editor:
[matados2k@fortaleza curso]$ ed
a
Esto es tan retro que voy a buscar unos pantalones de pata de elefante
para mi novia.
.
w austin_powers.txt
79
q
[matados2k@fortaleza curso]$ cat austin_powers.txt
Esto es tan retro que voy a buscar unos pantalones de pata de elefante
para mi novia.
[matados2k@fortaleza curso]$
Ese 79 indica el número de caracteres guardados. Con este ejemplo tan sencillo habéis visto lo que es un modo de inserción (después de pulsar 'a') y modo de comando, concepto que nos servirá para ver a Vi.
Empecemos con 'vi' a la de ya.
vi [opciones] fichero
vim [opciones] Lista_de_ficheros
La primera es el uso del 'vi' genérico de toda la vida, y la segunda el del clon 'vim', que será el que casi todos tenemos en nuestro Linux. En todas las distribuciones (por lo menos las que yo conozco) 'vi' no es más que un enlace al ejecutable 'vim', así que nos da lo mismo teclear 'vi' que 'vim', ya que el programa que arranque será siempre el mismo, el 'vim'.
No vamos a ver opciones ni el modo de usar varios ficheros a la vez con 'vim', así que sin más tecleamos 'vim' y tendremos algo como esto:
~
~
~
~
~ VIM - VI Mejorado
~
~ versión 6.2.120
~ por Bram Moolenaar et al.
~ Vim es código abierto y se puede distribuir libremente
~
~ ¡Ayude a los niños pobres de Uganda!
~ escriba :help iccf para más información
~
~ escriba :q para salir
~ escriba :help o para obtener ayuda
~ escriba :help version6 para info de la versión
~
~
~
~
~
0,0-1 Todo
Así que ahora pulsamos intro y empecemos a usarlo viendo algo como esto:
(aquí el cursor, que a partir de ahora lo representaré con un subrayado)
~
~
~
~
~
0,0-1 Todo
Donde la columna de '~' nos indica el final del texto.
Los modos de operación.
Vi tiene 3 modos de operación:
Modo comando: El modo que tenemos por defecto, que es exactamente igual al de 'ed'. Sirve para teclear nuestros comandos, que son de una sola letra.
Modo inserción: En el que estaremos la mayoría del tiempo y es el que usamos para escribir. Entramos en él pulsando 'i' y volvemos al modo comando pulsando escape.
Modo última línea: Este es un modo especial usado para dar ciertas órdenes extendidas a 'vi'. Al usar estos comandos, aparecen en la última línea de la pantalla (esto explica su nombre). Se accede a él desde el modo comando pulsando ':', y podéis usar comandos como 'q!', que sale de 'vi' sin guardar. Una vez escrito el comando pulsamos intro para ejecutarlo, y si el comando no es de salir de 'vi' volveremos al modo comando.
Todo esto parece en principio mucho lío, la verdad, y siendo sinceros un poco coñazo… pero es fácil acostumbrarse, porque al final como esta es una herramienta que usaréis la mayoría de vosotros eventualmente, usaréis 2 ó 3 comandos que recordaréis y punto.
Insertando texto.
Como ya hemos visto, para pasar del modo comando al modo inserción hay que pulsar 'i', así entraremos en el modo y podremos comenzar a escribir.
Una vez dentro de este modo, como en cualquier editor normal, podemos escribir las líneas que deseemos pulsando enter, borrar con suprimir y retroceso, y movernos por ellas con los cursores. Para salir, como ya vimos antes, pulsamos escape.
En el modo de comando también podemos movernos por el texto, y cuando pulsamos 'i' empezamos a editar justo en la posición del cursor, si pulsamos 'a' empezaremos justo en la posición anterior y si lo hacemos con 'o' lo hará una línea por debajo del cursor. ¿Es esto una chorrada? Pues sí, porque para eso tenemos los cursores y con ellos empezar donde nos plazca, así que para no complicarnos con 'i' yo creo que nos vale, personalmente yo esto lo veo solo útil en el caso de tener un teclado sin cursores o que se nos hayan estropeado, y a día de hoy creo que todos tenemos cursores, ¿no?.
Ya estamos por fin en faena porque matados2k eres un pesado.
~
~
~
-- INSERTAR -- 1,61 Todo
Borrando texto.
Para borrar desde el modo comando usamos 'x', que elimina el carácter debajo de cursor, así que pongámonos en modo comando, vayamos a la p de pesado y pulsemos 'x' seis veces, poned lo que queráis.
Ya estamos por fin en faena porque matados2k eres un .
~
~
~
1,55 Todo
Ya estamos por fin en faena porque matados2k eres un cansino.
~
~
~
-- INSERTAR -- 1,62 Todo
Curiosamente
eso es lo mismo que pulsar suprimir, así que un comando menos a recordar.
Modificar texto.
Esto es un poco pesado, ya que se hace carácter por carácter usando 'r', pulsamos 'r' junto con una letra y se cambia la letra que tengamos debajo del cursor por la nueva que pulsemos. Quizás esto no sea muy útil para cambiar una palabra entera, pero es lo que hay.
Otro comando para modificar texto más interesante puede ser '~', que cambia de mayúsculas a minúsculas y viceversa. Para eso pongámonos en la 'm' de matados2k y pulsemos 'Alt Gr + 4', que no es ni más ni menos que '~'.
Ya estamos por fin en faena porque Matados2k eres un cansino.
~
~
~
1,38 Todo
Órdenes de movimiento.
Hay múltiples órdenes para movernos por el texto, así que pondremos simplemente una tabla con ellas:
h izquierda.
j abajo.
k arriba.
l derecha.
w mueve el cursor al comienzo de la siguiente palabra.
b lo mueve a la palabra anterior.
ctrl+F avanza una pantalla (Re Pág).
ctrl+b retrocede una pantalla (Av Pág).
g lleva el cursor al final del fichero.
XXg dentro del modo última línea va a la línea XX indicada.
d$ borra todo desde la posición del cursor hasta el final de la línea.
dG borra todo desde la posición del cursor hasta el final del fichero.
Guardar el fichero y salir de vi.
Para salir de un fichero sin guardar usamos :q!.
Para guardar solo sin salir :w .
Para guardar y salir :wq .
Bueno, como veis ésta es la forma de hacerlo. Como el fichero que nosotros estamos usando no tiene nombre (ya que ejecutamos 'vi' sin mas, si ejecutas 'vi' con el nombre de un fichero, si existe lo edita y si no lo crea).
Ya estamos por fin en faena porque Matados2k eres un cansino.
~
~
~
:wq
Ya estamos por fin en faena porque Matados2k eres un cansino.
~
~
~
E32: No hay un nombre de fichero 1,17 Todo
Ya estamos por fin en faena porque Matados2k eres un cansino.
~
~
~
:wq matados.txt
Como veis al tenerlo sin nombre no nos deja guardarlo, así que después de ':wq' ponemos el nombre que deseemos y ya lo tenemos.
Despedida.
En este punto vamos a dejar 'vi' con una parte pequeña de él vista, ya que nos quedan muchas cosas en el tintero como copiar y pegar, insertar otro fichero entero, cambiar a otro fichero, ejecutar una orden del intérprete de comandos desde vi, ir a la ayuda y montones de órdenes más.
Pero el objetivo de esta entrega es tener un uso básico de esta herramienta para cuando necesitemos editar un fichero de configuración y cambiar alguna opción o añadir algo, ya que sinceramente para crear ficheros normales de texto grandes puede llegar a ser muy pesado y el aprendizaje es difícil, no por ser difícil de usar en sí, sino de recordar la apabullante cantidad de comandos que necesitamos (aunque si usáis emacs sí que es para alucinar en cantidad de comandos, yo creo que con 5 dedos en cada mano no es suficiente para él
).
Yo por lo menos, para crear grandes ficheros, recomiendo los que son bajo entorno gráfico, tan fáciles y más potentes que el bloc de notas para un windowsero, y si aun así lo queréis en modo texto pero mas fácil os recomiendo el mcedit.
Resumiendo (¡¡¡y para eso tanto rollo!!!), para un uso eventual, cuando todo nos fallo nos basta con recordar 'i' , ':q!' ,':w' y ':wq', ya que con el uso de los cursores y las teclas como borrar (retroceso), Fin, Inicio, Re Pag, Av Pag... tenemos todo lo que necesitamos, y si acaso no nos llega con esto usar ':help'.
Espero no haberos dormido con esta entrega tan larga y tostón, y sigáis con la próxima entrega donde seguramente empezaremos con la administración básica de usuarios si es que no cambio de idea
.
En línea
Páginas: [
1
]
2
3
Ir Arriba
Imprimir
scenespain.net
>
FOROS GENERALES
>
Linux
(Moderador:
yako
) > Tema:
[CURSO DESDE CERO] GNU/LINUX
« anterior
próximo »
Ir a:
Por favor selecciona un destino:
-----------------------------
NORMAS
-----------------------------
=> PRINCIPALES NORMAS DE OBLIGADA LECTURA
-----------------------------
FOROS GENERALES
-----------------------------
=> PS2
===> Tecnico
===> Tutoriales Tecnico
===> Tutoriales Ps2
===> ISEKOteam
===> Programación
=> PS3
===> Tutoriales PS3
=> PSP
===> Tutoriales psp
=> PS Vita
=> Wii
===> Tutoriales Wii
=> NDS
===> Tutoriales NDS
=> XBOX 360
===> Tutoriales Xbox 360
=> XBOX
===> Tutoriales Xbox
=> PC
===> Tutoriales Pc
===> Redes informaticas
=> TELEFONOS MOBILES
=> Linux
-----------------------------
VIDEOTUTORIALES
-----------------------------
=> VIDEOTUTORIALES
-----------------------------
RetroGame
-----------------------------
=> MSX
-----------------------------
SCENESPAIN
-----------------------------
=> NOTICIAS
===> NOTICIAS EN PORTADA
=> OFF TOPIC---
=> TIENDA VIRTUAL
=> COMPRA - VENTA
Loading...
SimplePortal 2.3.1 © 2008-2009, SimplePortal