La Ultima Esencia
Noticias:
 
*
Bienvenido(a), Visitante. Por favor, ingresa o regístrate. Diciembre 04, 2008, 07:29:37


Ingresar con nombre de usuario, contraseña y duración de la sesión


Páginas: 1 [2] 3
  Imprimir  
Autor Tema: Curso de Bash  (Leído 1489 veces)
0 Usuarios y 1 Visitante están viendo este tema.
berni69
WPA

Desconectado Desconectado

Mensajes: 155



WWW
« Respuesta #15 : Diciembre 01, 2007, 17:32:23 »

echo

Este comando escribe a la salida estándar la cadena de texto que se le pasa como parámetro. Generalmente se utiliza sin opciones, es por eso que no se nombrarán en este texto.

Citar
echo "La fecha de hoy es `date +%D`"
En línea

Errar es humano, pero para liar las cosas de verdad se necesita un ordenador

www.bitsdelocos.es
indio99
WPA

Desconectado Desconectado

Mensajes: 25



« Respuesta #16 : Diciembre 01, 2007, 18:27:53 »

estoy recopilando todos los comando que vayamos posteando junto con las explicaciones que dé cada uno, para que esté todo más accesible y visible.

aquí los avances logrados hasta la fecha http://rapidshare.com/files/73591319/curso_de_bash.odt.html

Citar

Curso de Bash
foro.laultimaesencia.com
 

Bueno para nuestros Newbies hoy vamos a comenzar a hacer un curso de bash sencillito...

¿Que es el Bash?

Bien, el bash es el interprete de comandos que trae la consola de linux en la mayoria de las distribuciones actuales de linux, si vuestro linux no trae por defecto el bash, podreis acceder a una consola del bash, tan solo con escribir bash en la consola...

Para saber si estais usando el bash escribid esto:  $: echo $SHELL

Y nos devolvera la ruta del shell usado en cuestion, en este caso que usamos el bash, deberá devolver: /bin/bash o similares...

Para salir del terminal tecleamos o exit o logout

Como podeis comprobar en este primer acercamiento al shell de linux, ya estamos usando nuestro primer comando, de una gama muy amplia que dispone UNIX, particularmente Linux...

Pero antes de nada, comencemos por el bash, que va a ser nuestra utilidad primaria durante este tutorial.

El bash es un interprete, esto quiere decir que cuando nosotros introducimos un comando, o creamos un script con una secuencia de comandos (ya veremos mas adelante lo que es un script), el bash toma el control, ejecuta el comando, devuelve lo que tenga que devolver y ya esta, no hace falta compilar nada, etc...

Y ahora comenzaremos por los comandos del bash para que una vez dominados estos, podamos realizar programacion del shell, lo que se llama bash scripting, que consiste en hacer scripts que contengan comandos del shell enlazados y asi tener un programa que realice una funcionalidad...

OJO, el bash es sensible a las mayusculas, quiero decir que no es lo mismo hacer,  cd, que hacer CD

Lo más importante: si queréis ayuda sobre un comando, usad el man,

man <comando>

otro punto a destacar es el tabulador, que tiene la función de completar una ruta en consola


echo

Este es el comando mas basico con el que podamos empezar, este comando sin ningun tipo de argumento ni de opcion simplemente devuelve lo escrito despues, por ejemplo:

$ echo Hola Mundo
Hola Mundo

$ echo La fecha de hoy es `date +%D`

Este comando nos sera muy util mas adelante en los scripts, cuando queramos mostrar por pantallas cosas al usuario...

(Nota:Para consultar el manual de cualquier comando explicado aqui,por ejemplo el echo, basta con hacer en linux un $ man echo)

Tambien aclarar que cuando pongo delante $, simplemente estoy indicando que soy un usuario normal del shell, pero no hay que escribirlo, lo podreis ver en vuestro shell al abrirlo

Mas cosas que podemos hacer con un echo, podemos escribir un fichero solamente con echos (esto se explicara mejor cuando lleguemos a como funciona la entrada y la salida, y los redireccionamientos en el bash)

echo  Este es mi fichero > fich.txt
echo Como esto es la siguiente linea que quiero agregar pongo dos >> fich.txt
echo Esto lo borra entero y solo escribe esto > fich.txt



cat

Este comando entre otras muchas cosas, nos va a permitir leer archivos desde el shell...
La sintaxis es:

cat [Opciones] archivo

Por ejemplo, para leer nuestro antiguo fich.txt en el shell

cat fich.txt

Atentos, cat a diferencia de echo, tiene muchas opciones para usar (podeis verlas con man)

Por ejemplo, que muestro fich.txt numerando las lineas:

cat -n fich.txt



ls

el comando ls, que sirve para hacer un listado de todo el contenido de la ruta en la que nos encontremos.

escribiendo simplemente ls en la shell, o consola, nos devolverá el contenido de todos los archivos o directorios que están contenidos en la ruta en la que estamos en ese momento

para poder ver el contenido de los archivos ocultos, que en linux, van a estar dados por incorporar un punto previo al nombre del archivo o directorio, usaremos las opciones que nos brinda el comando ls

ls -a nos muestra esos archivos ocultos, que como podréis comprobar vosotros mismos, incorporan ese puno al inicio del nombre.

también podemos listar en pantalla, otro directorio que no sea el directorio actual, llamandolo de ésta forma

ls /dir1/dir2/dir3.........

así conseguimos listar el directorio que queramos, sin necesidad de ubicarnos en el



cd

Nos sirve para cambiar de directorio, por ejemeplo cd ~ nos llevara a nuestro directorio home, cd Carpeta, nos llevara a esa carpeta.

Para retroceder a un directorio superior cd ..


cp

Nos permite copiar ficheros, la sintaxis es cp rutadelficheroacopiar rutadedestinoynombre
Si ponemos ., lo dejamos con ese nombre:
cp pianista.flt /usr/src/.


mv

igual que cp, pero no copia el archivo o directorio, si no que lo mueve de sitio, es decir, lo wlimina del origen una vez que lo ha copiado en el destino


bueno, pues ya que vamos viendo como movernos por las carpetas, como listar su contenido, y algunas que otras cosillas, veamos pues como eliminar un archivo y como crear y/o eliminar un directorio.


rm

para la tarea de eliminar, se emplea el comando rm

rm <nombre del archivo>

y para eliminar un directorio

rm -r <nombre del directorio>

puede que para algunas taréas no tengamos permisos suficientes, pero para eso tendremos que acceder como superusuario

sudo rm <archivo>

sudo rm -r <directorio>

cuidado con eso porque si están restringidos a la cuenta de root, es por que pueden ser o no muy importantes.


mkdir

para crear un directorio, basta con el comando mkdir

mkdir <nombre del directorio nuevo>
 

rmmod

rmmod <modulo>

elimina un modulo cargado


modprobe

modprobe <modulo>

te permite cargar cualquier modulo


less

otro comando para ver el contenido de un archivo, al igual que cat, es less

less <nombre del archivo>

te muestra el contenido del archivo en la misma ventana shell, pudiendo bajar y subir de página con las teclas av pag, re pag, inicio, fin, los cursores, o la barra espaciadora

creo que es el mismo visor de documentos que usa el comando man, y para salir de él, igualmente con la tecla Q


grep

grep es usado para mstrar un término en concreto

por ejemplo si queremos buscar un documento que no recordamos como se llama, pero que conocemos que contiene el término 'esencia' simplemente hacemos un

grep esencia

grep se puede combinar con otros comandos, por ejemplo con ls

imaginaos que al hacer un ls en un directorio nos aparecen 1000 archivos, y que queremos listar sólo los que comienzan por 'esencia', pues básta con hacer

ls | grep esencia

y así nos devuelve el listado del directorio de todos los archivos que contienen el término 'esencia'



espero que entre todos, lleguemos a ser capaces de programar, casi tan bien como adrián Wink

saludos
« Última modificación: Diciembre 01, 2007, 18:34:06 por indio99 » En línea

berni69
WPA

Desconectado Desconectado

Mensajes: 155



WWW
« Respuesta #17 : Diciembre 02, 2007, 16:56:55 »

#1. hostname
Imprime el nombre del local host en donde estás trabajando.

#2. whoami

Imprime el nombre de usuario en la pantalla, y puede resultar extremandamente útil cuando se cambia de usuario con su.

#3. id username
Imprime el UID del usuario y su GID, effective ID y grupos suplementarios.

#4. date

Imprime o cambia la fecha y la hora del sistema operativo. También se podria utilizar un servidor ntp para tener todos los sistemas con el mismo horario cada vez que se encienden.

#5. time

Determina la cantidad de tiempo que le toma a un proceso completarse + otra información. El ejemplo que se dá es:

    * time ls

Para ver el tiempo que toma hacer un listado con ls.

#6. who
Determina los usuarios logueados en el sistema.

#7. rwho -a

Determina todos los usuarios logueados en la red. El servicio debe estar activado para ejecutar el comando o se debe ser usuario root.

#8. finger user_name
Información del sistema sobre un usuario.

#9. last
Muestra un listado de los últimos usuarios logueados en el sistema.

#10. history | more
Muestra los últimos ( 1000 aprox ) comandos ejecutados desde la línea de comandos. El “| more” hace que pare la salida por pantalla cada vez que se completa la salida. Redireccionar un comando hacia “more” resulta sumamente útil para diferentes propósitos, como se explica, para listados largos y para otras actividades corrientes en cualquier Gnu/Linux o Un*x.
#11. ps uptime
Muestra el tiempo que pasó desde el último reboot.

#12. ps
Lista los procesos actualmente ejecutados por un usuario.

#13. ps axu | more

Lista todos los procesos actualmente corriendo, incluso aquellos que no son controlados por la terminal, junto con el nombre del usuario que es dueño del proceso.

Agrego a lo anterior:

    * ps aux | grep nombredelprograma

    * kill -9 PID ( el pid correspondiente al nombredelprograma que se busca terminar )

Para que se reinicie un proceso, útil parar reiniciar un servicio y que éste lea otra vez su archivo de configuración:

    * kill -hup PID
    * killall nombredelprograma

Este último comando termina todas las instancias de un programa indicando su nombre. No siempre funciona, y a veces es necesario recurrir a ps y grep para obtener el pid.


Y por último, si cancelamos la ejecución de una aplicación con control + z , o bien si lo corremos con el & al final:

Por ejemplo “jackd -d alsa &” ( para ejecutar el servidor Jackd con el driver Alsa en segundo plano ), si queremos terminar con el proceso:

    * kill -9 %1

En caso de que sea el proceso en segundo plano número uno, si es el segundo 2, y así.

#14. top

Muestra una lista de los procesos que estan corriendo actualmente, listados en orden según su consumo del cpu. Muy útil.

#15. uname -a

Información sobre el servidor local. Versión del kernel, de Linux si es un sistema Gnu/Linux, o lo mismo para otros Un*x o BSD, además de información sobre el procesador.

#16. free
Información sobre la memoria ( en kb ), libre y consumida, además de datos sobre la swap.

#17. df -h

Muestra el espacio libre en Mb de una partición. El formato es df -h /dev/hda1 si queremos saber la cantidad de espacio en Mb libre en /dev/hda1. Agrego yo:

    * du -h

Para saber, también en Mb, la cantidad de Mb que ocupa un directorio o un archivo.

#18. du / -bh | more
Similar a lo anterior, pero mas específico y detallado. No tan útil como el df -h archivo o directorio.

#19. cat /proc/cpuinfo

Para ver ( cat ) el contenido de la entrada cpuinfo del pseudofilesystem proc, en éste caso con información sobre el cpu.

#20. cat /proc/interrupts
Lista las interrupciones en uso.

#21. cat /proc/version
Lista la versión de Linux.

#22. cat /proc/filesystems
Muestra los filesystem habilitados en el kernel. Muy útil.

#23. cat /etc/printcap
Muestra la configuración de las impresoras.

#24. lsmod
Muestra los módulos cargados en el sistema.

#25. echo $PATH
Muestra el contenido de la variable $PATH.

Algunos otros comandos útiles que agrego:

    * mount -o loop imagen.iso directorio/

Para montar una imagen iso en un directorio sin necesidad de grabarla a CD o DVD. Deben ser root.

    * cp -rv directorio/ /otrodirectorio/

Copia un directorio entero manteniendo los permisos, dueños, links, y cualquier cualquier otra característica del directorio.

    * netstat -putan | grep aplicación

Información sobre el estado de una aplicación servidor o que trabaja con tráfico de red. También deberán ser root.

    * w

Muestra quien está logueado y qué está haciendo

    * comando > archivo

Redirecciona el contenido de un comando hacia archivo, por ejemplo:

    * ls -l | grep usuario > archivosdeusuario

Si se usan dos > , es decir “>>” se agrega el contenido que se redirecciona después de la última línea del archivo de texto, sin sobreescribir.

    * ls -l

Muestra los permisos, dueño y grupo, además de fecha dentro de un directorio, de los archivos y directorios

    * chown -R nombredeusuario:grupo directorio/

Cambia recursivamente el dueño y grupo de un directorio y su contenido. Pueden utilizar el comodín ( * ), ya que a veces según la configuración puede no funcionar como debe hacerlo.

    * sync

Recomandado para hacer antes de desmontar un dispositivo mass storage, como una cámara fotográfica digital, un pendrive, o una pda. O bien si hubo modificaciones y movimiento de información ( cp y mv por ejemplo ) entre particiones, antes de desmontar.

Para cambiar la contraseña de un usuario:

    * passwd usuario

Otro comando muy útil es el de agregar un usuario a un grupo:

    * gpasswd -M usuario grupo

    * gpasswd -A usuario grupodeusuario

En el ejemplo anterior indicamos que usuario será el administrador de grupodeusuario.

Si hay problemas con la lectora de cd o con la de dvd, y quieren saber qué aplicación o comando la está utilizando ( para evitar el dispositivo ocupado ), prueben con :

    * lsof | grep /dev/hda1

Si hda1 es su compactera, por ejemplo. Si pusieron un CD/DVD que está roto y les cuelga la compactera, prueben con :

    * hdparm -w /dev/hda1

Otra vez, si /dev/hda1 es su compactera. Es el mismo comando que usa el kernel para permitir que luego de muchos I/O erróneos, se pueda desmontar el dispositivo. Deben ser root para ejecutar dicho comando.
En línea

Errar es humano, pero para liar las cosas de verdad se necesita un ordenador

www.bitsdelocos.es
indio99
WPA

Desconectado Desconectado

Mensajes: 25



« Respuesta #18 : Diciembre 03, 2007, 00:10:22 »

buafff

vaya contenido que te has marcado de una sola vez.

ya nos quedan muy pocos comandos por ver. jejeje

saludos
En línea

indio99
WPA

Desconectado Desconectado

Mensajes: 25



« Respuesta #19 : Diciembre 06, 2007, 23:25:53 »

otros cuantos comandos Cheesy

diff

diff fue creado para comparar el contenido de dos archivos cualesquiera y mostrar en una lista las
líneas en las que se hayan detectado diferencias.
Los programadores utilizan con frecuencia este comando para enviar los cambios realizados en sus
programas sin necesidad de enviar todo el texto fuente.

Opciones:
-q Indica tan sólo si existen diferencias entre el contenido de los dos archivos seleccionados.

Ejemplo: diff -q programa.c programa2.c

vi

Editor vi
El manejo de vi es un poco peculiar, sin embargo existe en
cualquier sistema operativo parecido a UNIX y forma parte de la instalación predeterminada de
Linux. Además, si no funciona nada, vi aún funciona.


ln

Crea en archivo_destino una referencia cruzada dentro del sistema de archivos, (Links) del
archivo_origen con otro nombre. Normalmente este enlace apunta directamente a la posición de
archivo_origen dentro de un sistema de archivos. Si por el contrario se ejecuta el comando ln con la
opción -s, se creará un denominado enlace simbólico que apuntará exclusivamente a la rama de
archivo_origen y que por esa razón podrá ser usado fuera de los límites del sistema de archivos.
Opciones:
-s Crea un enlace simbólico.


lp

Donde a lp le pasamos los ficheros que queremos que se impriman.

Ejemplo: lp fichero1
Esto imprimirá el fichero1.

Parámetros:
-d Sirve para especificar mas impresoras
Ejemplo: lp -d impresora1 file1 file2
Se lanzan a la impresora1 dos ficheros para su impresión: file1 y file2.

Ordenes
Cancel: cancela o elimina los trabajos de la cola de impresión.
Lpstat: muestra el estado de los trabajos pendientes de impresión.



find

sabéis que quiere decir find en inglés, pues buscar
existen varios parámetros para realizar una busqueda, pero nos centraremos en

-name Indicando el nonbre nos localizara aquellos ficheros cuyo nombre sea el
pasado y los buscara en el del directorio especificado.
Ejemplo: find . -name core
Aquí buscamos aquellos ficheros con el nombre core dentro del directorio donde
nos encontramos "." Debido al punto.

Ejemplo: find /home/indio99/factura -name patio
Aquí buscará en la ruta /home/indio99/factura, todos los archivos que contengan la palabra patio

continuo recopilando todos los comandos, y ordenandolos por categrías, para tenerlos mejor organizados Wink

saludos
En línea

hadrianweb
WPA

Desconectado Desconectado

Mensajes: 123


« Respuesta #20 : Diciembre 10, 2007, 23:57:32 »

Citar
espero que entre todos, lleguemos a ser capaces de programar, casi tan bien como adrián Wink

No creas que yo se tanto, mas bien se poco
En línea

pianista
Administrador

Desconectado Desconectado

Mensajes: 2617


« Respuesta #21 : Enero 13, 2008, 16:08:42 »

Para saber la carga del sistema y saber la carga de cada nucleo usad top
Haceis un top y os saldra mucha informacion, y para saber cada nucleo exactamente pulsais el 1 del teclado numerico
Saludos
En línea
Elía
Visitante
« Respuesta #22 : Marzo 23, 2008, 21:30:06 »

Bueno, a ver si alguien me puede decir cómo puedo hacer lo siguiente

Tengo un programita que me da como resultado un número.
Lo que quiero es meter en un script algo de este tipo

variable=programita()
echo $variable


Donde en el valor de variable debería estar el resultado de ejecutar programita

Gracias y saludos
En línea
Elía
Visitante
« Respuesta #23 : Marzo 23, 2008, 21:36:11 »

Por cierto, a poder ser, sin que haya ficheros temporales de por medio
En línea
karlossius

Desconectado Desconectado

Mensajes: 1199


Cogito ergo me canso


« Respuesta #24 : Marzo 23, 2008, 21:42:16 »

pq no pruebas a meter el ejecutable directamente en la carpeta bin?
o es que estás trabajando en una máquina compartida como duero o jair?
En línea

La forma más fácil y rápida de aprender es preguntar... Grin Grin Grin
Elía
Visitante
« Respuesta #25 : Marzo 23, 2008, 21:54:51 »

pq no pruebas a meter el ejecutable directamente en la carpeta bin?
o es que estás trabajando en una máquina compartida como duero o jair?

Exacto, eso hago.
Bueno, creo que tu tienes Estructura de Datos.
A ver, digamos que tengo un programa que me cuenta el coste de operaciones de determinado programa. Este coste me lo devuelve a pantalla.

Mi script consistiría en lo siguiente:
- Compila el código fuente (hecho)
- Limpia los códigos intermedios (hecho)
- Te realiza x ejecuciones del programa (hecho)
- Te calcula la media de esas x ejecuciones


Es para esto último para lo que quiero eso que os digo, ya que necesito meter en una variable los resultados de los diferentes programas. Es que es un rollo hacerlo a calculadora xD
En línea
mig
Moderador Global

Desconectado Desconectado

Mensajes: 632



WWW
« Respuesta #26 : Marzo 23, 2008, 23:18:41 »

pues a ver:

para que el programa te devuelva un resultado que puedas manejar, tienes quehacer uqe el main devuelva el resultado (eso en C)

Si no, lo que se me ocurre es:
Código
GeSHi (bash):
variable=`programita()`
Created by GeSHI 1.0.7.20

que lo que hace es que variable pasa a contener el resultado de la salida estandar. Recuerda que no son apóstrofos, son acentos graves.
En línea

El problema que tenemos los informáticos es que hay demasiadas películas de ciencia ficción
Elía
Visitante
« Respuesta #27 : Marzo 23, 2008, 23:25:19 »

pues a ver:

para que el programa te devuelva un resultado que puedas manejar, tienes quehacer uqe el main devuelva el resultado (eso en C)

Si no, lo que se me ocurre es:
Código
GeSHi (bash):
variable=`programita()`
Created by GeSHI 1.0.7.20

que lo que hace es que variable pasa a contener el resultado de la salida estandar. Recuerda que no son apóstrofos, son acentos graves.

Y como hago para cambiar el tipo del resultado?
Ten en cuenta que sale a pantalla como STRING y yo lo que necesito es un INTEGER
En línea
mig
Moderador Global

Desconectado Desconectado

Mensajes: 632



WWW
« Respuesta #28 : Marzo 23, 2008, 23:31:54 »

al bash eso se la suda, luego para hacer sumas pones (( variable = $variable + loquesea ))
En línea

El problema que tenemos los informáticos es que hay demasiadas películas de ciencia ficción
Elía
Visitante
« Respuesta #29 : Marzo 23, 2008, 23:34:17 »

Aun así no me furrula, es decir, al poner

a=`./a.out`

lo que me hace es ejecutar a.out, pero no me asigna el resultado a nada
En línea
Páginas: 1 [2] 3
  Imprimir  
 
Ir a:  


Powered by SMF 1.1.6 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks


AFILIATE AQUI
Creative Commons License
Esta obra est bajo una licencia de Creative Commons.