Hola Visitante

Autor Tema: Comandos mas utilizados en bash scripting  (Leído 5959 veces)

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Comandos mas utilizados en bash scripting
« en: Agosto 23, 2009, 02:32:06 pm »
Para empezar, debemos saber que existen dos tipos de usuarios en linux, los que tienen privilegios y los que no. En la mayoria de sistemas, los comandos que realizan cambios en estos, solo los puede ejecutar el 'superusuario', administrador o comunmente llamado root.

Para poder acceder a los comandos con privilegios podemos realizar diferentes cosas, la primera loguearse en el sistema como root (la mayoria de veces esto esta desactivado),  los otros metodos son ejecutar un comando como root con el comando

Código: (bash) [Seleccionar]
sudo

o utilizar el comando su - root o sudo -i para entrar en una consola como root

Para empezar cualquier bash script el script debe empezar con la siguiente linea:

Código: (bash) [Seleccionar]
#!/bin/sh

Para saber el tiempo en que un proceso esta encendido, pordemos usar el comando 'time' seguido de la aplicicacion que queremos lanzar

por ejemplo si compilamos un programa, relalizariamos
Código: (bash) [Seleccionar]
time make

una vez fianlizado nos devolveria una salida como

Código: (bash) [Seleccionar]
real 0m6.462s
user 0m0.008s
sys 0m0.040s




Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Re: Comandos mas utilizados en bash scripting
« Respuesta #1 en: Agosto 23, 2009, 02:52:46 pm »
echo

el comando echo tiene varias utilidades en la creacion de scripts, la que mas se utiliza es mostrar una linea en la pantalla. si escribimos
Código: (bash) [Seleccionar]
$ echo berni es un tio majo
te responde
Código: (bash) [Seleccionar]

berni es un tio majo


tambien podemos guardar la salida de echo en un archivo de texto, esto sirve para crear archivos de texto jjeje...

Código: (bash) [Seleccionar]
echo hola mundo > hola.txt

si abrimos hola.txt veremos que en la primera linea existe la frase hola mundo

si queremos añadir una linea a ese script  realizaremos el proceso anterior pero duplicando el >>

Código: (bash) [Seleccionar]
echo hola mundo > hola.txt
echo vaya texto xD>>hola.txt
echo adios mundo >> hola.txt

veriamos que se han añadido dos lineas mas a nuestro archivo.


cat

Para leer un archivo de texto podemos usar el comando cat, nos mostrara en pantalla nuestro archivo de texto

Código: (bash) [Seleccionar]
cat hola.txt
veriamos en pantalla

Código: (bash) [Seleccionar]
cat hola.txt
hola mundo
vaya texto xD
adios mundo


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

Código: (bash) [Seleccionar]
less

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


Otro modo de crear un archivo de texto es usar cat, el nombre del archivo ira entre >> nombre.txt<< el EOF es una combinacion que se usara para que el programa de por terminada la orden y guarde el archivo

Código: (bash) [Seleccionar]
cat >> hola.txt << EOF
hola mundo
vaya texto xD
adios mundo
EOF



Para leer la cabecera de un archivo, las 10 primeras lineas, utilizaremos el comando head para cambiar el numero de lineas mostradas, podemos utilizar el modificador -n X, donde X es el numero de lineas

Código: (bash) [Seleccionar]
head -n 3 hola.txt

y nos mostrara las 10 primeras lineas de hola.txt

lo mismo ocurrira con el comando tail, con la peculiaridad que en lugar de ver la cabecera se ve el final del archivo, para mostrar mas lineas se hace igual que en head

Código: (bash) [Seleccionar]
tail -n 3 hola.txt

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Re: Comandos mas utilizados en bash scripting
« Respuesta #2 en: Agosto 23, 2009, 06:03:58 pm »
Para navegar y operar dentro de los directorios  tenemos una serie de comandos bastante útiles:

ls

Proviene dela abreviatura  inglesa list, este comando nos listara los documentos de una carpeta


Código: (bash) [Seleccionar]
$ ls
Manual.txt.gz  archivo1.txt  hosts  servidores  syslog.0


si utilizamos el comando ls -la nos dara una lista con los permisos, y el tamaño del los archivos ademas de listar los ocultos


Código: (bash) [Seleccionar]
$ ls -la
total 1444
drwxr-xr-x   3 user1  grp1       4096 May 13 22:34 .
drwxrwxrwt  56 root   root       8192 May 13 22:35 ..
-rw-r--r--   1 user1  grp1        176 May 13 22:29 .data
-rw-r--r--   1 mail   bin       40661 May 13 22:27 Manual.txt.gz
-rw-r--r--   1 nobody nogroup       0 May 13 22:26 archivo1.txt
-rw-r--r--   1 root   root        825 May 13 22:26 hosts
lrwxrwxrwx   1 user1  grp1          5 May 13 22:31 servidores -> hosts
-rw-r-----   1 sys    sys     1405600 May 13 22:27 syslog.0


las opciones de ls son:
    * -l muestra un listado en el formato largo, con información de permisos, número de enlaces asociados al archivo, usuario, grupo, tamaño y fecha de última modificación además del nombre.

    * -h con -l imprime el tamaño de los archivos de forma entendible para los humanos (ej. 1K 234M 2G).

    * -d muestra solamente el nombre del subdirectorio, sin entrar en él ni dar un listado del contenido.

    * -t muestra ordenado por la fecha de última modificación.

    * -c muestra ordenado por la fecha de última modificación del estado del archivo.

    * -r cuando el listado se hace por orden temporal, los archivos más recientes van al principio. Si se indica la -r se invierte el orden, mostrando los más recientes al final.

    * -L en los enlaces simbólicos, muestra los datos del archivo referenciado en vez de los del link.

    * -1 muestra el listado en una sola columna. Sin la opción -1 el listado se muestra en varias columnas, tantas como permita el ancho de la terminal (generalmente controlado con la variable de entorno $COLUMNS).

    * -i muestra el número del i-nodo antes del nombre de archivo.

    * -m muestra los archivos en una línea y separados por comas.

    * -R hace un listado recursivo. Lista primero los archivos del directorio en curso, luego los de los subdirectorios de éste, luego los de los subdirectorios contenidos en ellos (nietos) y así sucesivamente.

    * --color muestra cada tipo de archivo de un color distinto: un color para los directorios, otro para los archivos regulares, otro para los enlaces simbólicos, otro para los sockets, otro para las tuberías FIFO, etc. Este parámetro no se acepta en todas las versiones de ls y, por supuesto, requiere que la terminal sea capaz de mostrar distintos colores o intensidades.

    * - a muestra los archivos ocultos.

para cambiar de directorio se usa el mismo comando que en ms-dos 'cd' y su sintaxi es la misma

para ir a un directorio superior lo haremos con

Código: (bash) [Seleccionar]
cd ../

si queremos ir a /home utlilizaremos simplemente

Código: (bash) [Seleccionar]
cd ..

si queremos ir a nuestra carpeta de usuario podemos utilizar
Código: (bash) [Seleccionar]

cd ~


podemos ir a una ruta especifica escribiendo completamente la ruta a donde ir

Código: (bash) [Seleccionar]
cd /root/Desktop

nos llevaria al escritorio del administrador, por el contrario si escribimos

Código: (bash) [Seleccionar]
cd root/Desktop
nos llevaria a una carpeta Desktop dentro de una carpeta root que estuviera en nuestra carpeta acutal de trabajo

El comando cd soporta comodines, es decir, ? y * por ejemplo si somos tan vagos de escribir el nombre completo de una carpeta podemos scribir las primeras letras y el *, pero ojo con esto ya que si  hay dos que empiezan igual, entrara a la primera por orden alfabetico,

Código: (bash) [Seleccionar]
cd /root/De*

si no existe ninguna carpeta que empieze igual que Desktop entrara a dicha carptea, sino a la que este antes por orden alfabético. Lo mismo pasa con el ?, pero el signo de interrogacion solo equivale a un carácter.

Ya que he tocado el directorio de trabajo, para saber  en que directorio estamos realmente, podemos utilizar la orden pwd que nos imprimira en pantalla la routa donde nos encontramos

Código: (bash) [Seleccionar]
$ pwd
/home/usuario

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Re: Comandos mas utilizados en bash scripting
« Respuesta #3 en: Agosto 23, 2009, 07:00:09 pm »
El siguiente comando que os explicare es el mkdir, sirve para crear directorios, su sintaxi es muy facil

Código: (bash) [Seleccionar]
mkdir directorio
o
Código: (bash) [Seleccionar]
mkdir /ruta_del_directorio/directorio

Si queremos borrar un archivo debemos utilizar el comando rm
Código: (bash) [Seleccionar]

rm 'nombre del archivo'


para borrar una carpeta la sintaxi cambia un poco, debemos añadir -rf
Código: (bash) [Seleccionar]

rm -rf 'carpeta'


para borrar una carpeta tambien podemos utilizar rmdir

Código: (bash) [Seleccionar]
rmdir [directorio]

para copiar archivos de un lugar a otro se utiliza el comando cp (copy abreviado :P)

Código: (bash) [Seleccionar]
cp [opciones] [fichero origen] [directorio destino]
opciones: -b hace back up del archivo si en el directorio donde copiamos existe un fichero con el
mismo nombre y la renombra añadiendo al final ~.
-- no-dereference copia forzosamente si es un enlace simbólico.
-F fuerza la copia en caso de que exista el fichero. por lo tanto sobre escribe.
-i interactivo, te pregunta en caso de que pueda sobre escribir.
-l hace enlace duro. link.
-L te copia el contenido del fichero en caso de que intentes copia un
enlace simbólico.
-r copia el contenido total de un fichero y ficheros hijos
recursivamente.
-s crea un enlace simbólico, soft.
-u en caso de que halla un archivo con el mismo nombre, lo
actualiza.update.

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Re: Comandos mas utilizados en bash scripting
« Respuesta #4 en: Agosto 24, 2009, 01:41:54 pm »
si queremos descargar un archivo desde internet lo mas sencillo y util de utilizar es el comando wget, si queremos que una descarga continue si se quedo a medias deberemos utilizar el comando -c

Código: (bash) [Seleccionar]
wget -c

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Re: Comandos mas utilizados en bash scripting
« Respuesta #5 en: Noviembre 06, 2009, 08:41:56 am »
aqui pongo varios comandos mas que son de utilidad, para descomprimir rar's habitualmente se utiliza el unrar

Código: (bash) [Seleccionar]
$unrar archivo.rar /ruta_de_extraccion/
su ayuda nos proporciona algunas funciones utiles como la de listar archivos dentro del rar

Código: [Seleccionar]
  -x, --extract              Extract files from archive (default)
  -t, --list                 List files in archive
  -f, --force                Overwrite files when extracting
      --extract-newer        Only extract newer files from the archive
      --extract-no-paths     Don't create directories while extracting
  -p, --password             Decrypt archive using a password
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version



Otro descompresor que quizas usemos es el unzip, el uso mas habitual es
Código: (bash) [Seleccionar]
unzip archivo.zip -d /ruta_de_extraccion/


Para finalizar con los descompresores mas habituales, ya se que hay mas, pero con estos tres que pongo hoy creo que nos bastaran para la gran mayoria de casos, ahora viene el descompresor tar, el mas habitual para comprimir/descomprimir archivos tar, tar.bz2, tar.gz...

Para descomprimir lo mas uttilizado es

Código: (bash) [Seleccionar]
tar -xvf archivo.tar.bz2 /directorio_de_extraccion/
La sintaxi viene descrita en este fragmento quie encontre en un manual antioguo
Citar
Opción    Acción realizada
c    Crea un contenedor
x    Extrae archivos de un contenedor
t    Testea los archivos almacenados en un contenedor
r    Añade archivos al final de un contenedor
v    Modo verbose
f    Especifica el nombre del contenedor
Z    Comprime o descomprime mediante compress/uncompress
z    Comprime o descomprime mediante gzip
p    Conserva los permisos de los ficheros


Si queremos comprimir bastara con un simple

Código: (bash) [Seleccionar]
tar cvf Archivo_a_crear.tar  /archivo_o_rutas_a_comprimir/




Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Re: Comandos mas utilizados en bash scripting
« Respuesta #6 en: Noviembre 06, 2009, 11:20:03 am »
mv proviene de la palabra move que significa mover en Inglés.
Código: (bash) [Seleccionar]

mv file1 file_1       renombra un archivo
mv File /file         mueve 'File' a '/file'
mv file ./dir/file    mueve 'file' a 'dir/file' Relativo al directorio