Ordenes Internas de Bash

Si sos amante de los scripts para la shell bash, estas son algunas ordenes que debes tener en tu baúl.

break [n]

Sale o rompe las estructuras for, while, until o select y pasa el control a la orden siguiente al done. n = niveles. n >= 1, si es mayor que el numero de bucles se sale de todos.

$ cat > break.sh
#!/bin/bash
#
#

for a in $(ls -l) ; do
 break 10
done

ls -lm $HOME --color=always

EOF

builtin orden-interna [args]

Ejecuta la orden  interna del shell pasándole el argumento.

$ cat > builtin.sh
#!/usr/bin/env bash
#

# function
cd (){
 pwd && echo
}

# invocamos la function
cd
# invocamos la orden interna de bash
builtin cd / && ls -l --color=auto 

EOF

command [-pVv] orden [args]

Ejecuta ordenes suprimiendo la búsqueda normal de funciones del shell.

$ cat > command.sh
#!/usr/bin/env bash
#

ls()
{
 pwd
}

command -v ls
echo
command -V ls
echo
command ls
echo
command -p ls

EOF

continue [n]

Pasa a la siguiente iteración de un bucle for, while, until o select. n >= 1.

$ cat > continue.sh
#!/usr/bin/env bash
#
# muestra los ficheros
# que no son directorios

a=0
for x in $(ls -1 $HOME)
do
 if [ -d "$HOME/$x" ]; then
 ((a++))
 continue 30
 fi
 echo -n fichero $a:" "
 ls -l --color=always $HOME/$x
 ((a++))

done

EOF

let arg [arg …]

Evalúa expresiones aritméticas representadas por argumentos, si el ultimo arg se evalúa como 0, let retornara 1, sino, retornara 0. P. ej. script que muestre los dígitos 0-9.

$ cat > conta.sh 
#!/usr/bin/env bash
#
# Digitos 0-9
#

a=0
while (( a<10 )); do
    echo $a
    let a=a+1
done
EOF

declare [-afFirx][-p][nombre=[valor]]

typeset [-afFirx][-p][nombre=[valor]]

Declaran variables o les dan atributos.

-p: mostrara los atributos y valores. No se tienen en cuente otras opciones si se usa -p. P.ej.

$ declare s=1 && typeset -p s

Muestra declare — s=”1″. El valor de s es 1. podemos notar que no tiene ningún atributo ().

Atributos:

-a: Arreglo, creamos nombre de tipo vector.

-r: Solo lectura, hacemos que nombre sea de solo lectura.

-x: Exportar, variables usadas en el entorno (el comando $ export muestra las mismas variables que $ declare -x).

-i: Variable Entera,

-f: Función,

Podemos usar cualquiera de los dos comando (declare o typeset) seguido de una opción que describa un tipo de atributo(s) para mostrar todas las variables en ejecución en nuestra shell (variables de ambiente), que tiene dicho atributo(s). P. ej. declare -r. Mostrara todas las variables de solo lectura.

Si tomamos el ejemplo de nuestro contador(conta.sh) con let y creamos una variable contadora a con la opción declare -r. veremos que la variable no serviría como contador, ya que esta no se podrá modificar por ser de solo lectura.

$ cat > conta.sh 
#!/usr/bin/env bash
#
# Digitos 0-9
#

declare -r a=0
while (( a<10 )); do
    echo $a
    let a=a+1
done

EOF

 

 

 

Autor: Jolth.

$ cat listar.sh
#!/usr/bin/env bash
#
# Muestra y cuenta todos los ficheros
# de nuestro directorio personal# variable de solo lectura
#declare -r a=0
a=0
for x in $(ls -1 $HOME)
do
echo $a : $x
((a++))
donetypeset -p a
Anuncios

2 pensamientos en “Ordenes Internas de Bash

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s