Shell script: programas externos, E/S y dirección de shell


Bash , c-shell  o simplemente shell scripting es  un lenguaje de script  creado a fines de la década de 1980 por un programador llamado Brian Fox, que trabajaba para la Free Software Foundation . Fue pensado como una alternativa de software libre para el shell Bourne (de hecho, su nombre es un acrónimo de Bourne Again SHell ), e incorpora todas las características de ese shell, así como nuevas características como la aritmética de enteros y el control de trabajo

Bash es un “shell de Unix”, es decir  una interfaz de línea de comandos para interactuar con el sistema operativo por lo que está ampliamente disponible, siendo el shell predeterminado en muchas distribuciones de GNU / Linux y en Mac OSX, con puertos existentes para muchos otros sistemas.

En post anteriores hemos hablado en una primera aproximación  al lenguaje c-sheall  con el primer ejemplo famoso de  Hello world y avanzando comandos ,tuberías ,variables ,parámetros y salidas posibles y en un segundo post  sobre el  uso de las Tuberías , sustitución de comandos,operadores ,asignación de variables ,Bucles , literales , variables   y aritmética no entera

Asimismo   en un  post  anterior continuamos  avanzando en el conocimiento de este lenguaje con el uso de las funciones, subshells  y las  variables de entorno

En esta ocasión vamos a ver el uso de funciones de shell, funciones de e/s y la redirección shell

close up code coding computer

 

 

 

Funciones de shell 

Programas externos

Bash, como un shell, es en realidad un lenguaje de «pegamento». Ayuda a los programas a cooperar entre sí, y se beneficia de ello. Siempre busque en Internet lo que desea: hay muchas utilidades de línea de comandos disponibles.

Usando whiptail 

Whiptail es un programa que permite que los scripts de shell muestren cuadros de diálogo al usuario con fines informativos, o para obtener información del usuario de manera amigable. Whiptail se incluye de forma predeterminada en Debian y en varias otras distribuciones de GNU / Linux.

Desde el diccionario GNU / Linux : whiptail es un reemplazo de «diálogo» que usa newt en lugar de ncurses.
Desde su README: whiptail está diseñado para ser compatible con el cuadro de diálogo (1), pero tiene menos funciones: algunos cuadros de diálogo no están implementados, tales como caja de cola, caja de tiempo, caja de calendario, etc.

Usando man, info y ayuda 

Estos tres programas son donde puede encontrar ayuda o referencia de. man muestra las páginas de manual de roff , la información muestra las documentaciones de texinfo, mientras que la ayuda muestra las ayudas integradas.

Al añadir --long-ayuda , --help o --usage a un programa de línea de comandos puede también le da la información de uso. Posibles sinónimos incluyen -H y -h .

Solo prueba estos:

man --help
man man

info --help
man info
info info

help help

Presionar h en las interfaces de man and info también puede darle alguna dirección.

Entrada / Salida

La lectura incorporada 

De la ayuda leída :

read: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]

Lea una línea de la entrada estándar y divídala en campos. La lectura es excelente tanto para las entradas del usuario como para la lectura de entradas / tuberías estándar.

Un ejemplo de entrada de usuario:

 # 'readline' pronuncie el nombre de la variable predeterminada 
read -e -p "Haga esto:" -i "destruye el  comando " commmand

echo  "$command "

O incluso más simple:

pause ()  {  read -n 1 -p "Presione cualquier tecla para continuar ..."  ;  }

Ejemplo de nivel de Hola-mundo de la operación stdout:

 echo  'Hola mundo!'  | {  read hola
 echo  $hola  }

Solo se creativo. Por ejemplo, en muchos sentidos, leer puede reemplazar el látigo. Aquí hay un ejemplo, extraído del script de shell de Arthur200000 :

# USAGE 
# yes_or_no "title" "text" width ["yes text"] ["no text"] 
# INPUTS 
# $ LINE = (y / n) - Si debemos usar el estilo de entrada basado en líneas (lectura) 
# $ _DEFAULT = (opcional) - El valor predeterminado para leer yes_or_no ()  { 
yes_or_no() {
  if [ "$LINE" == "y" ]; then
    echo -e "\e[1m$1\e[0m"
    echo '$2' | fold -w $4 -s
    while read -e -n 1 -i "$_DEFAULT" -p "Y for ${5:-Yes}, N for ${6:-No}[Y/N]" _yesno; do
      case $_yesno in
        [yY]|1)
          return 0
          ;;
        [nN]|0)
          return 1
          ;;
        *)
          echo -e "\e[1;31mINVALID INPUT\x21\e[0m"
       esac
  else whiptail --title "${1:-Huh?}" --yesno "${2:-Are you sure?}" ${3:-10} ${4:-80}\
         --yes-button "${5:-Yes}" --no-button "$6{:-No}"; return $?
  fi
}
# USAGE  # user_input var_name ["title"] ["prompt"] [altura] [ancho] 
 # ENTRADAS  # $ LINE = (y / n) - Si debemos usar el estilo de entrada basado en líneas (lectura) 
 # $ _DEFAULT = ( opcional) - El valor predeterminado para leer; por defecto a nada. user_input () 
user_input(){
  if [ "$LINE" == "y" ]; then
    echo -e "\e[1m${2:-Please Enter:}\e[0m" | fold -w ${4:-80} -s
    read -e -i "${_DEFAULT}" -p "${3:->}" $1
  else
    eval "$1"=$(whiptail --title "$2" --inputbox "$3" 3>&1 1>&2 2>&3)
  fi
}
 

Redirección de shell 

En shells, la redirección se usa para la E / S de archivos. El uso más común de es redirigir secuencias estándar (stdin, stdout y stderr) para aceptar la entrada de otro programa a través de tuberías, para guardar la salida del programa como un archivo, y para suprimir la salida del programa redireccionando una secuencia a / dev / null .

Índice de símbolos 

Símbolo Explicación
!
  • Lógicamente niega el estado de salida de una tubería. Por ejemplo, si grep YES votes.txt devuelve 0 , entonces ! grep YES votes.txt devuelve 1 , pero de lo contrario es equivalente.
  • También soportado por el [...] builtin, y dentro de expresiones condicionales. Por ejemplo, si [[-e file.txt]] es verdadero, entonces [[! -e archivo.txt]] es falso.
  • También se admite en expresiones aritméticas. Por ejemplo, si $ i es distinto de cero, entonces $ ((! I)) es 0 .
  • Vea también #! abajo.
"..."
  • Cita un argumento (o parte de un argumento) para que no esté dividido por espacios en blanco en múltiples argumentos, pero sin impedir la expansión de parámetros y la sustitución de comandos internamente.
  • Véase también $ "..." a continuación.
#
  • Introduce un comentario (que continúa hasta el final de la línea). Por ejemplo, el comando foo bar baz # bip es equivalente al comando foo bar baz , porque el comentario # bip se elimina.
  • Dentro de una expresión aritmética, un literal entero de la forma b # n se interpreta en la base b . Por ejemplo, 2 # 110110 es binario 110110, es decir, cincuenta y cuatro.
  • Vea también #! abajo.
  • Véase también $ # abajo.
#!
  • (Por lo general, » shebang » cuando se lee en voz alta). Se usa al comienzo de un script ejecutable para especificar el intérprete que se debe usar para ejecutarlo. Por ejemplo, si la primera línea de script.pl es #! / Usr / bin / perl , y script.pl tiene permisos ejecutables, entonces ./script.pl es aproximadamente equivalente a / usr / bin / perl ./script.pl .
  • La primera línea de un script Bash generalmente es #! / Bin / bash o #! / Bin / sh . (El primero generalmente se considera preferible.)
PS
  • Introduce varios tipos de expansiones, especialmente la expansión de parámetros (como en var o $ { var } ), la sustitución de comandos (como en $ ( comando ) ) y la expansión aritmética (como en $ (( expresión )) ).
PS
  • Una variante de "..." (ver más arriba) que admite la traducción específica del entorno local. (A menos que esté escribiendo scripts para su uso en varios idiomas, por ejemplo, inglés y francés, no debe preocuparse por esto).
PS
  • El número de parámetros posicionales (argumentos de un script o función). Por ejemplo, si se invoca un script como script.sh abc , entonces $ # será 3 . Los elementos incorporados que modifican los parámetros posicionales, como shift y set , también afectan a $ # .
% El operador de módulo. Devuelve el resto resultante de la división entera. Ej. 5% 2 = 1
Y Ampersand Comúnmente se utiliza para iniciar un comando en el fondo. Ej. Firefox &
' Una frase. Se utiliza para citar texto literalmente.
( Paréntesis abiertos. Se utiliza para denotar el comienzo de una subshell, entre otras cosas.
) Paréntesis de cierre. Se utiliza para denotar el «EOF» de una subshell.
* Asterisco. Denota multiplicación. Ej. 5 * 2 = 10
+ Más.Denota la suma. Ej. 5 + 2 = 7
, Coma. Utilizado para la separación. Ej. Archivo ls {1,2,3}
- Guión. Denota la resta. Ej. 5-2 = 3
. Parada completa.
/ Barra inclinada. Indica división entera (por ejemplo, 5/2 = 2) o parte de una ruta (por ejemplo, / home / usuario)
: Colon.
; Punto y coma. Separa las líneas si no existe una nueva línea / EOL. Ej. Echo hola; mundo eco
< Soporte de ángulo abierto. Utilizado para la redirección de entrada
= Signo de igualdad Se utiliza para asignar variables y comprobar la igualdad.
> Ángulo de cierre del soporte. Se utiliza para la redirección de salida.
? Signo de interrogación.
@ A la señal. Normalmente se utiliza como una variable que contiene todos los argumentos pasados ​​al entorno como $ @
El Abra el corchete. Utilizado como una alternativa visualmente más atractiva para probar. Por ejemplo, si [condición]; entonces etc
\ Barra invertida Más comúnmente utilizado para escapar. Por ejemplo, archivo rm \ con \ a \ manojo \ de \ espacios.txt
] Cierre corchete. Cierra los recintos de prueba.
^ Signo de intercalación.
_ Guion bajo.
`…`
  • Activa la sustitución de mando; equivalente a $ (…) , pero es algo más propenso a errores.
{ Abra el apoyo rizado. Utilizado para expansión de variable específica. Por ejemplo, (donde var = «hola») echo «$ {var} world» imprimirá «hola mundo», echo «$ varworld» generará un error, esperando una variable llamada varworld.
| Tubo. Se utiliza para redireccionar la entrada a la salida. Específicamente, toma la salida del comando en el lado izquierdo, ejecuta el programa en el lado derecho y luego pasa el contenido de la salida del primer comando al segundo, como si se estuviera escribiendo desde un teclado. ‘ls -l | grep Desk ‘es equivalente a ejecutar «grep Desk», y luego escribir manualmente lo que ls -l tendría salida. Cada vez que se presiona la tecla de retorno, se activará grep hasta que se presione ^ D para pasar el EOF.
} Cierre corsé.
~ Tilde. Normalmente se utiliza para referirse al directorio de inicio. Registrado como «mrwhite», cd ~ (o simplemente cd) iría a / home / mrwhite. Al iniciar sesión como otro usuario, se podría lograr el mismo efecto con ‘cd ~ mrwhite’.

Enlaces externos en ingles

Cómo instalar una app Android en Amazon Fire


De la famosa tableta de Amazon , es decir la  Tablet Amazon Fire se han vendido ( y se siguen vendiendo  ) de forma extraordinaria una cantidad ingente de unidades por todoel mundo  desde que fueran lanzadas , hace un par de  años,  sin duda  debido a su gran relación calidad/precio pues  no olvidemos que por  menos de 70€  podemos tenerla en casa con 8GB (o con 16GB por unos 10€ adicionales)

Esta  tableta con pantalla IPS de 7 pulgadas con mayor contraste y textos más definidos, un procesador Quad-Core de 1,3 GHz y hasta 8 horas de batería, ofrece un gran rendimiento para la reproducción de todo tipo de contenido multimedia  ,obviamente orientado a consumir  desde la nube de Amazon ,  pero desde luego , por al precio en el que están, la Fire 7 es casi imposible no adquirir una para toda la familia.

Uno de los pequeños hándicaps de estas tabletas, es que aun teniendo una versión fork de Android,  no podemos acceder a la Google Play Store, ya que viene con  la propia tienda de  aplicaciones de Amazon (Amazon Play Store ) donde  desgraciadamente no están disponibles todas las aplicaciones que si están en Google Play. 

Amazon Play  no está nada mal, pero insistimos ,  le faltan muchas aplicaciones  y todo ese gran contenido que ofrece la dedicada a Android por parte de Google : Google Play Store,  aunque no todo está perdido, ya que, si tiene una tablet Fire bien  , puede instalar Google Play Store o bien mucho mejor instalar manualmente la app que necesite  sin necesidad de instalar Google Play  y por cierto, no necesitará ni ser ROOT ni usar comandos ADB.

 

 

Los tablets Fire de Amazon están concebidos para resistir el uso diario. De acuerdo con los tests de caída, el Fire 7 es más resistente que el último iPad y soporta el doble de impactos que el iPad mini 4 (y cuesta mucho menos).

El Fire incluye una cámara trasera de 2 MP que permite hacer fotos de alta resolución y vídeos HD de 720p y con una cámara frontal VGA suficiente  para realizar videollamadas con Skype a familia y amigos.

Respecto a la interfaz  de la tableta , conocida como  Fire OS 5 es cómoda y fluida y cuenta a con un buen número de funciones pre-instaladas que pueden ser extendidas mediante la descarga de aplicaciones adicionales a través de Amazon Appstore como comentábamos al principio de este post.

El sistema operativo del Fire es Android, aunque bloqueado por Amazon de modo que aunque no cuenta con Google Play, si  cuenta con  la Appstore de Amazon, que es prácticamente igual, aunque con diferencias en cuanto a su contenido. No obstante, se puede descargar cualquier aplicación por la APK, directamente desde el navegador de la tablet, o bien transfiriéndola desde un pc, el móvil, etc , tal y como vamos  a ver a continuación .

 

 

Instalación APKDownloader

Gracias a la plataforma android  nuestros dispositivos tienen características de inteligencia adicional que es ofrecida gracias  a las millones de aplicaciones disponibles desde Internet ,y eso  a esta alturas todos los usuarios de Android lo sabemos  ( o lo deberíamos sospechar)  siendo  lo mas  rápido  y seguro optar por descargar estas desde el sitio oficial:  Google Play Store , sobre todo en los tiempos actuales donde cada día surgen nuevas apps con objetivos  poco éticos enmascaradas en inocentes funcionalidades (como por ejemplo una inocente app linterna).

Como hemos hablado,  el sistema operativo del Fire es básicamente Android, aunque customizado  por Amazon de modo que han bloqueado  Google Play sustituyendo  este  por  la Appstore de Amazon, que es prácticamente igual, aunque con diferencias en cuanto a su contenido. No obstante, como vamos   ver ,se puede descargar cualquier aplicación por la APK, directamente desde el navegador de la tablet, o bien transfiriéndola desde un pc, el móvil, etc

¿Por qué no podemos descargar apk de Google Play sSore?

Google tiene algunas políticas estrictas que impiden a los usuarios de android que descarguen los  archivos de apk directamente a sus dispositivos para impedir la piratería. Ademas , hay otros asuntos relacionadas como por ejemplo si una aplicación específica que usted quiere deba estar disponible en su país o si  oficialmente es soportada  por  un  cierto dispositivo o no , o a partir de una determinada version .

Ante esta  problemática , existen muchas alternativas de Tiendas de aplicaciones en Internet que  almacenan y  permiten descargar apk directamente , pero insistimos el riesgo puede ser alto , así que lo ideal seria bajar el fichero apk desde Google play store directamente , ( en este caso para luego instalarlo en la Fire)

Afortunadamente  se  pueden saltar restricciones de necesitar la app de Google Play para instalar cualquier app de Google Play en la Fire con la aplicación llamada “Apk Downloader extensión” que permite   gracias a una extensión de Chrome descargar el APK directamente desde Google Play Store .

Esta aplicación, como se puede intuir, realmente hace maravillas pues de alguna manera se las arregla para capturar las apk  desde lo propios servidores de la tienda oficial, lo cual nos da bastante seguridad.

Esta opción  ofrece muchas ventajas pues :

  • Le da libertad para descargar aplicaciones que no están disponibles en su país.
  • Soporta todos los dispositivos.
  • Puede instalar  Apk  bajados directamente desde Google Play Store, sin tener instalado Google Play  en su Fire , donde or cierto también seria posible,  pero a costa de consumir bastantes recursos del dispositivo,

 

Extension ApK dowloader

La extensión de Chrome llamada  Apk Downloader  funciona perfectamente con casi todas las aplicaciones disponibles en la Google Play que sean gratuitas , así que si quiere descargar aplicaciones y almacenar su archivo Apk, puede descargar esta aplicación desde la tienda en primer lugar en su pc   y luego llevarse el archivo al dispositivo donde lo quiera instalar.

Para usar esta extensión   en  su navegador siga estos pasos:

  1. Descargue  la extensión desde aqui 
  2. Añada la extensión  a Google Chrome.
  3. Acepte la instalación de esta extensión.
  4. Compruebe en la esquina superior derecha de la pantalla justo a la izquierda del icono de búsqueda que hay un icono naranja nuevo.

Ahora una vez instalada la extensión en Google Chrome ,sigue estos pasos para obtener el apk directamente desde Google Play Store.

  1. Ir a Play Store y seleccionar cualquier aplicación que desee descargar.Por ejemplo vamos a descargar la famosa app de Zowi que no esta disponible en Amazon Playzowi
  2. Copiar la URL de Google Play de la app que necesite ( Ctrl+C)
  3. Pulse el botón rojo de APK downlader en e la esquina superior derecha de la pantalla justo a la izquierda del icono de búsqueda.
  4. Seleccione ‘Apk Downloader extensión‘ de las opciones sobre acciones.
  5. Copiar la url de la aplicación  con Ctrl+V en la caja de dialogo
  6. Pulsar Generate Donwload Linkzowi2.PNG
  7. Esperar hasta iniciar la descarga.
  8. El Apk se descargarán automáticamente sin la intervención de los servicios de Google Play en una ruta de su pc.
  9. Puede renombrar el fichero apk por otro que sea intuitivo  pues normalmente el nombre del fichero no suele coincidir con el nombre de la aplicación)

 

 

Instalación del APK en el Fire

En  primer lugar  para que pueda instalar un apk  en su Fire debe  activar la casilla de “Orígenes desconocidos” que encontrará dentro de los ajustes de  Fire OS en  “Seguridad”.

Para instalar la apk  el archivo APK en su Fire  simplemente siga los pasos a continuación:

  1. Conectase  a la nube de Amazon ( Amazon drive)
  2. Coloque el archivo APK en la ruta de Amazon .amazondrive
  3. Vaya a su tableta e inicie Amazon Drive
  4. Busque el apk   y cópielo en una ruta local de su tableta (por ejemplo en download)
  5. Ejecuet el apk
  6. Haga clic en ‘instalar’
  7.  Espere a que se instale el APK.
  8. Una vez instalada  ya puede abrir la aplicación

 

Descarga del APK desde otro Navegador

Quizás  si no tiene instalado el navegador Chrome, o quiere hacerlo  desde la misma tableta   le interese  para descargar el  apks desde Google Play  usar algún servicio de descarga que nos pase el apk directamente de Google Play  como por ejemplo el servicio evozzi.com.

Estos son los pasos a seguir:

  1. Ir a Play Store y seleccionar cualquier aplicación que desee descargar.
  2. Copiar la URL ( Ctrl+C)
  3. Ir  a https://apps.evozi.com/apk-downloader/
  4. Pulsr Ctrl+V enla caja para pegar la url desde Google Play
  5. Pulsar Generate Download Link
  6. Solo tenemos que pulsar en el botón verde  y se iniciara la descarga del apk a local
  7. Conectase  a la nube de Amazon ( Amazon drive)
  8. Coloque el archivo APK en la ruta de Amazon .amazondrive
  9. Vaya a su tableta e inicie Amazon Drive
  10. Busque el apk   y cópielo en una ruta local de su tableta (por ejemplo en download)
  11. Ejecute el apk
  12. Haga clic en ‘instalar’
  13.  Espere a que se instale el APK.
  14. Una vez instalada   puede abrir la aplicación

 

Por cierto  ,no olvide que para poder instalar el  apk debe activar la casilla de “Orígenes desconocidos” que encontrará dentro de los ajustes de  Android y “Seguridad”.