berni69
WPA
Desconectado
Mensajes: 148
|
 |
« 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. 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
|
|
|
indio99
WPA
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 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  saludos
|
|
|
|
« Última modificación: Diciembre 01, 2007, 18:34:06 por indio99 »
|
En línea
|
|
|
|
berni69
WPA
Desconectado
Mensajes: 148
|
 |
« 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
|
|
|
indio99
WPA
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
Mensajes: 25
|
 |
« Respuesta #19 : Diciembre 06, 2007, 23:25:53 » |
|
otros cuantos comandos diffdiff 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 viEditor 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. lnCrea 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. lpDonde 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. findsabé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  saludos
|
|
|
|
|
En línea
|
|
|
|
hadrianweb
WPA
Desconectado
Mensajes: 123
|
 |
« Respuesta #20 : Diciembre 10, 2007, 23:57:32 » |
|
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
Mensajes: 2433
|
 |
« 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
Mensajes: 1092
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
|
|
|
|
|
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
Mensajes: 597
|
 |
« 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: 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: 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
Mensajes: 597
|
 |
« 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
|
|
|
|
|