Autor Tema: Bash y Primeros comandos  (Leído 7195 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado LicH

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6600
  • ¿are you tolerant enough to tolerate intolerance?
    • Sv Community
Bash y Primeros comandos
« : mayo 12, 2005, 12:04:07 am »
Aún cuando actualmente se puede manejar Linux de una manera tan gráfica como Windows, siempre es importante saber usar los comandos esenciales. Uno de los aspectos más versátiles de linux es que se puede manejar un gran servidor de manera remota con SSH haciendo uso de una humilde conexión dial-up. Enviar por TCP/IP toda la ambientación gráfica para manejar un equipo remoto es una manera ineficiente de hacer las cosas.

Para practicar los comandos es necesario obtener un shell, un shell es simplemente un intérpete de comandos como el command.com de DOS (pero mucho más poderoso y cómodo). La manera más sencilla de practicar en un shell sin instalar Linux en el disco duro es descargando Knoppix a la mexicana, este es un tipo de Linux que se ejecuta desde el CD-ROM sin tocar el disco duro. Si usted tiene una conexión lenta, no tiene quemador o simplemente no desea descargar los 600 MB de Knoppix puede solicitarlo por correo hasta su casa.


Los Directorios

Bien, ingrese al sistema con su login y password. Ya sea que haya instalado Debian en su disco o haya iniciado con Knoppix desde el CDROM, Debian mostrará varios directorios que parten del directorio raíz (/). Aquí hay un breve resumén de estos directorios y lo que hay en el interior de cada uno de ellos:

/home: Contiene los directorios de los usuarios en el sistema. Es como un "Documents and Settings" de Windows XP. Dado que guarda la información de los usuarios, es recomendable instalar este directorio en una partición aparte de la usada para raíz (/). No todos los usuarios tienen su directorio $HOME en este directorio, por ejemplo, el usuario postgres lo tiene en /var/lib/postgres.

/root: Es el directorio "home" del root. ¡Nunca se loguee como root (El equivalente de Administrador en Windows)! Siempre cree un usuario regular y asígnele privilegios de root para los comandos específicos. La razón es que los programas y rutinas [scripts] pueden hacer mucho daño cuando se corren como root. Los daños pueden deberse a un programa hostil, o a su propia falta de experiencia.

/bin: Programas y rutinas esenciales para iniciar y/o reparar el sistema. Algunos de estos son usados por otros programas.

/sbin: Programas y rutinas usados por el sistema como tal, y por usuarios para administrar el sistema. Los programas en este directorio no están disponibles para los usuarios normales.

/boot: Programas y ruinas usados para iniciar Linux. Este es el directorio donde se ubica el kernel.

/etc: Archivos de configuración. Bien podría encontrarse Ud. mismo editándolos, pero sea cuidadoso, y sáquele una copia de seguridad a los archivos antes de hacer un desorden con ellos.

/lib: Rutinas compartidas entre programas. Son como las DLL's de Windows.

/tmp: Un lugar para guardar los archivos temporales, las descargas de Mozilla y muchas otras cosas más, pasan por este directorio antes de copiarse a su lugar definitivo. Algunos usuarios prefieren montarla en un aprtición separada, si usted decide hacer esto asígnele una buena cantidad de disco (por lo menos 2 gigas) por aquello de descargar dos imágenes ISO a la vez.

/usr: Este directorio contiene todos los programas(/usr/bin) y librerías (/usr/lib) que no son esenciales para iniciar el equipo y para hacer reparaciones de emergencia. /usr ocupa hasta el 90% del espacio en disco en muchos sistemas, así que varios administradores lo mantienen separado en una partición de sólo lectura. Cualquier información que sea dependiente del equipo donde se almacena o varíe con el tiempo se guarda en cualquier otra parte.

/var: Contiene archivos variables de información. Por ejemplo, aquí encontrará los logs o bitácoras del sistema. Este directorio le permite al /usr ser de sólo lectura, ya que lo que cualquier cosa que se escriba durante la operación del sistema está en /var. Dado que los logs se acumulan en /var, mantenga este directorio vigilado para que no sature su disco al paso de los meses.

/opt: Este directorio se reserva para la instalación de aplicaciones software extra. Por ejemplo, Oracle usa este directorio para almacenar sus archivos binarios y los demás que use. Si instala la Java Virtual Machine de SUN, este es el lugar donde debe colocarla. Este directorio es un estándar usado en algunos sistemas Unix.

Además existen directorios que sólo parecen directorios. Son especiales, y tienen un propósito específico:

/dev: Cada "archivo" dentro de este directorio representa un dispositivo hardware del computador. El contenido de este directorio se crea al iniciar el equipo.

/mnt: Este directorio (o uno de sus subdirectorios) es convencionalmente usado para montar los sistemas de archivos temporales como disquetes, el DVD o el CDROM. Una vez montado, el contenido del disquete aparece como si estuviera físicamente en la ruta "/mnt/floppy". Piense en esto como si se asignara una letra al drive A: en Windows. Sin embargo otras distribuciones de Linux (como Debian) montan el disquete en /floppy. Recientemente, este directorio /mnt está siendo abandonado por /media. La diferencia es que /mnt es estático mientras que /media (através del programa discover) se crea dinámicamente al iniciar el sistema y encontrar los dispositivos. De esta manera, si usted agrega o retira un CD-ROM el cambio aparecerá automáticamente en /media sin necesidad de hacer nada.

/proc: Los "archivos" que aparecen en este directorio no son realmente archivos, sino que representan los programas que están corriendo actualmente y su información desde el kernel de Linux. Puede escribir ciertos "archivos" para modificar el comportamiento del kernel, pero los cambios durarán hasta que se reinicie.


El prompt

Al iniciar una sesión típica de shell siempre verá algo como esto:

Código: [Seleccionar]
svcommunity@Citlali:~$
El prompt de la izquierda señala que el usuario "svcommunity" esta en la maquina "Citlali", la tilde(~) indica que estamos dentro de nuestro directorio raíz, el signo de pesos ($) nos dice que somos un usuario normal y que todo está listo para recibir comandos. Ha diferencia de DOS, los comandos en linux son sensibles a las mayúsculas y minúsculas, si teclea un comando en mayúsculas el sistema le responderá command not found.

Al hacer uso del shell debemos tener presente que los conceptos de entrada (input) y salida (output) son importantes. La lógica de los comandos es que ellos conforman una interface entre un teclado (el input), una acción sobre el sistema y el monitor (output). Para obtener la máxima potencia en el uso de los comandos es necesario que aprendamos a jugar con las entradas y salidas ya que Linux es sumamente flexible en modificar el input y el output de todos los comandos. Esto sólo se logra através de la práctica y experimentación.

El primer comando que vamos a usar es whoami que nos regresa nuestro nombre de usuario en el sistema. Aunque no es muy útil para nosotros si lo es para el administrador del sistema pues diferentes usuarios están asignados a diferentes programas. Ya hemos dado nuestro primer comando. Ahora usamos el comando pwd. Este comando nos informa en cual directorio nos encontramos, generalmente el directorio es home/nombre_de_usuario, en este caso pwd nos regresa "/home/svcommunity". El siguiente comando es clear, que simplemente despeja la pantalla.

El comando ls (listar) es el equivalente al comando dir de DOS, nos muestra los archivos de un directorio. Todos los comandos poseen un funcionamiento predefinido que se usa cuando se teclean sin ninguna opción, los parámetros de los comandos son indicaciones que modifican. Para ver todos los detalles de los archivos se usa el parámetro -l:

Código: [Seleccionar]
svcommunity@Citlali:~$ ls -l
Usted ya se habrá dado cuenta que con sólo presionar las flechas hacia arriba (FA) y abajo (FB) del teclado puede navegar por los comandos introducidos por lo cual ya no hay necesidad de teclearlos de nuevo, este es el "bash_history". Muy útil, sobre todo si hace tiempo uso un comando y ahora no recuerda la sintaxis exacta, sólo búsquelo con la flecha superior.

En linux cuando un archivo o directorio comienza con un punto "." quiere decir que esta oculto y no lo veremos con el comando "ls -l". Para ver los archivos y directorios ocultos debemos usar el parametro "a":

Código: [Seleccionar]
svcommunity@Citlali:$ ls -la
Si los archivos dentro de un directorio son muy numerosos y al listarlos con ls se salen de la pantalla, podemos ver los que se salieron con una caracteriza del bash, y esta es que al oprimir las teclas shift+FA podemos ver las lineas que pasaron por la pantalla. Una mejor manera de visualizar muchos archivos dentro de un directoio es haciendo uso de las pipas o conectores (|). Las pipas conectan la sálida estándard de un comando con el input estándard de otro. Por ejemplo, el comando more, despliega el contenido de un archivo una pantalla a la vez, esto es, el input estándard de more es un archivo, pero con la pipa podemos hacer que su input sea el comando ls:

Código: [Seleccionar]
svcommunity@Citlali:$ ls -l | more
Veamos otro ejemplo de como usar las pipas. El comando wc muestra las líneas, palabras y bytes de un archivo. Pero con una pipa podemos usarlo para conocer cuántos archivos existen en el directorio /usr/bin:

Código: [Seleccionar]
svcommunity@Citlali:$ ls -l /usr/bin | wc -l
El comando history despliega la historia de comandos, por otra parte el comando grep busca en los archivos un patrón específico, si queremos ver en nuestra historia los comandos que incluyan ls tecleamos:

Código: [Seleccionar]
svcommunity@Citlali:$ history | grep ls
Una vez más el truco radica en reemplazar el input de grep (que generalmente es un archivo de texto) por la salida de history.

Ahora crearemos un directorio con el comando "mkdir" la sintaxis es "mkdir nombre_directorio", por ejemplo:

Código: [Seleccionar]
svcommunity@Citlali:$ mkdir frases
Para movernos entre directorios usamos el comando cd, en este caso "cd frases" o también "cd /home/svcommunity/frases". Para subir un directorio usamos el comando "cd .." (nótese el espacio entre la d y el primero de los dos puntos). El comando cd sin ninguna indicación, nos regresa a nuestro directorio HOME, en este caso /home/svcommunity.

Otra gran característica del bash es la completación por la tecla tab. Es decir, si usted desea acceder al directorio /home/svcommunity/mozilla-gtk1.2-20041128-1386-01 (ese tipo de nombres son comunes en linux), no debe teclear lo todo el nombre del directorio, sólo teclee:

Código: [Seleccionar]
svcommunity@Citlali:$ cd moz
oprima la tecla tab y el bash completará todo el nombre, ¡genial! La tecla tab también puede ser usada para encontrar comandos, si sabe que un comando comienza con btd sólo escriba esas tres letras y tab completará el comando. Si existen varios comandos que comienzan con btd bash desplegará los nombres de todos ellos.

El comando date nos devuelve la fecha y la hora del sistema mientras el comando cal nos presenta el mes actual. Una manera de ejecutar varios comandos a la vez es con un doble ampersand (&&) por ejemplo:

Código: [Seleccionar]
svcommunity@Citlali:~$ ls -l && date && cal
El punto y coma (;) también nos permite ejecutar varios comandos son un sólo enter:
Código: [Seleccionar]
svcommunity@Citlali:~$ ls -l ; date ; cal
Nuestro siguiente comando es el que se usa para copiar "cp", la sintaxis es "cp archivo_para_copiar.txt /rutaldel/directorio/donde_se/copiara". Si no tenemos ningun archivo que copiar podemos ejecutar el comando echo para escribir uno. Nos cambiamos al directorio frases y tecleamos:

Código: [Seleccionar]
svcommunity@Citlali:$ echo "la vida es bella cuando hay una mujer y una botella" > frases_celebres.txt
veamos en detalle. El comando "echo" pinta valores en el dispositivo de salida por omisión, es decir, en el monitor. Si tecleamos echo "la vida es bella cuando hay una mujer y una botella" la frase aparecerá en la pantalla, pero en lugar de ello usamos el símbolo "mayor que" ( > ) para redireccionar la salida al archivo frases_celebres.txt y no al monitor. Las pipas y los redireccionamientos de salida son muy útiles pues permiten mezclar varios comandos con sus parámetros.

Para ver el contenido de un archivo de texto sin abrirlo usamos el comando "cat" asi "cat frases_celebres.txt", nos debe pintar la linea del archivo de texto que recién creamos. Ahora agreguemos otra línea a nuestro archivo de texto asi:

Código: [Seleccionar]
echo "lo que más me gusta es rascarme los sobacos" >> frases_celebres.txt
Note que ahora usamos un doble signo de "mayor qué" ( >> ) pues así se agrega contenido, si solo hubiésemos usado un símbolo (>) el archivo se hubiese sobreescrito. Agregue más líneas de su propia inspiración al archivo frases_celebres.txt y use "cat" para verificar que se agregaron.

El comando mv (move), mueve un archivo o directorio. Por ejemplo

Código: [Seleccionar]
svcommunity@Citlali:$ mkdir /home/svcommunity/docs && mv /home/svcommunity/frases/frases_celebres.txt /home/svcommunity/docs
Esto moverá el archivo frases_celebres.txt al recién creado directorio /home/svcommunity/docs. El comando mv también se usa para renombrar archivos y directorios:
Código: [Seleccionar]
svcommunity@Citlali:$ mv /home/svcommunity/docs/frases_celebres.txt /home/svcommunity/docs/inspirado.txt
Esto renombrará el archivo frases_celebres.txt a inspirado.txt. Para borrar un archivo usamos el comando rm. Si deseamos borrar un directorio lleno de archivos debemos usar el parámetro -R:

Código: [Seleccionar]
svcommunity@Citlali:$ rm -R /home/svcommunity/docs
Use este comando con precaución. Otro comando útil es find que busca un archivo o archivos en el sistema:
Código: [Seleccionar]
svcommunity@Citlali:$ find /usr/share -name w*.png
este comando busca todos los archivos que comienzan con w y poseen la extensión png en el directorio /usr/share. La opción -name le indica a find que sólo envíe las líneas que coinciden pues por omisión find envía todas al monitor.

Cada programa que se ejecuta entra a la memoria como un proceso, a estos procesos también se les conoce como demonios. Para conocer que demonios estamos ejecutando usamos el comando ps (process) con el parametro -u de usuario:

Código: [Seleccionar]
svcommunity@Citlali:$ ps -u svcommunity
Note que los demonios listados por ps poseen un PID (process identification) único.


¿Qué es una liga simbólica?

Una liga simbólica es una indicador que hace referencia a un archivo, o para decirlo más simple es un archivo que hace referencia a otro archivo. Esto es muy útil en muchos casos, por ejemplo, una partición del disco duro puede estar peligrosamente llena, mientras otra está vacía, me doy cuenta que el entorno java ubicado en /usr/local/jdk1.4 es el responsable de que esa partición este tan al tope, así que muevo el directorio jdk1.4 a la partición donde tengo mucho espacio y queda en /var/lib/jdk1.4 y aparentemente he resuelto el problema. Pero ahora surge la complicación de que los programas buscarán el entorno java en /usr/local y no lo van a encontrar. Para redireccionar hago una liga simbólica con el comando ln, el formato del comando es:

Código: [Seleccionar]
ln -s /ruta/del/objetivo_existente /ruta/de/referencia_al_objeto
o sea:
Código: [Seleccionar]
ln -s /var/lib/jdk1.4 /usr/local/jdk1.4
Asi, los programas que necesiten java "pensarán" que nada ha cambiado y todo se ejecutará correctamente.


Comprimir y descomprimir archivos

Existen herramientas gráficas para comprimir y descomprimir un archivo, Ark en KDE3 y ScrollKeeper en Gnome2, sin embargo siempre es bueno saber hacerlo desde la línea de comando, supongamos que queremos comprimir el directorio /home/lopillo/tareas entonces debemos usar el comando tar, originalmente el comando tar se usa para manejar cintas de respaldo pero su uso principal es la compresión de archivos:

Código: [Seleccionar]
svcommunity@Debian$: $tar -cvf tareas tareas.tar
la opción c le indica al comando tar que debe crear un archivo nuevo, a diferencia de la opción -A que significa que los archivos serán agregados a un archivo tar preexistente, la opción f le dice que se trata de un archivo en disco y no una cinta de respaldo (la acción por omisión), finalmente la opción v (verbose) indica que se deben enviar los mensajes más completos posible en lugar de los mensajes estándar, de esté modo si algo sale mal un mensaje más completo nos dará más pistas. Por lo general los archivos comprimidos de linux tienen una doble compresión con el comando gzip para comprimirlos aún más, así que:

Código: [Seleccionar]
svcommunity@Debian:$ gzip tareas.tar
Esto creará el archivo tareas.tar.gz que es el estándar de compresión de Linux, para descomprimir este archivo sólo tecleamos:

Código: [Seleccionar]
svcommunity@Debian:$tar -zxvf tareas.tar.gz
Los archivos .bz2 poseen una tasa de compresión mayor que los .gz, para descomprimir un archivo bz2 que bajamos de la red usamos la opción -j de tar:

Código: [Seleccionar]
svcommunity@Debian:$tar -jxvf archivo.tar.bz2

Comandos del root

Por último, es necesario señalar que no todos los comandos pueden ser usados por un usuario normal como lopillo, si desea practicar con estos comandos deberá tener su propio linux instalado. El comando "ifconfig" permite la configuración de las tarjetas de red, por lo cual sólo el usuario root lo puede ejecutar. Para acceder al usuario root debemos conocer su password, si ese es el caso usamos el comando su (switch user) para volvernos root:

Código: [Seleccionar]
svcommunity@Citlali:$ su root
Una vez convertidos en root veremos en el prompt el símbolo (#) en lugar de ($). Para asignar una dirección IP y un gateway a una tarjeta:

root# ifconfig eth0 192.168.0.13 netmask 255.255.255.0
root# route add default gw 192.168.0.1

El comando "halt" apaga el sistema después de un día de trabajo y también es exclusivo del root, asimismo "reboot" reinicia el sistema.

Desconectado Tio B

  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 10221
  • Vendo nanosuit barato, poco uso
Re: Bash y Primeros comandos
« Respuesta #1 : mayo 12, 2005, 09:20:53 am »
buen tip  :diablo:

Desconectado NoeL

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 3257
    • SvCommunity
Re: Bash y Primeros comandos
« Respuesta #2 : mayo 12, 2005, 09:21:51 am »
Muy bonito el minitutorial.....buena aportacion... :friends:

Desconectado NIGHTGHOST

  • Ghost User -
  • -^- Elite Gold -^-
  • The Communiter-
  • **
  • Mensajes: 1997
  • I'm Sparky... I'm NightWolf... User SVC
Re: Bash y Primeros comandos
« Respuesta #3 : mayo 18, 2005, 01:34:59 pm »
Hey que bien Brother que nos des tus aportes, este si en un buen Compa  :drinks:  :friends:


Orfeon

  • Visitante
Re: Bash y Primeros comandos
« Respuesta #4 : julio 19, 2005, 02:45:53 pm »
Esta intro esta buena, GRACIAS por tu aporte.

Desconectado Mad Max™

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 7913
  • The Road Warrior
Re: Bash y Primeros comandos
« Respuesta #5 : julio 19, 2005, 07:27:17 pm »
buenisimo este aporte, lo comenze a leer pero por el tiempo mejor me lo imprimo y  lo leo con mas cuidado y mas tiempo

Desconectado LicH

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6600
  • ¿are you tolerant enough to tolerate intolerance?
    • Sv Community
Re: Bash y Primeros comandos
« Respuesta #6 : julio 20, 2005, 09:15:53 am »
solo que no tomen el echo como algun comando "indispensable" ademas es buen ejemplo el que esta ahi :roll: