es.phhsnews.com


es.phhsnews.com / La guía para principiantes de las secuencias de comandos de Shell: conceptos básicos

La guía para principiantes de las secuencias de comandos de Shell: conceptos básicos


El término "secuencias de comandos de shell" se menciona a menudo en los foros de Linux, pero muchos usuarios no están familiarizados con él. Aprender este sencillo y poderoso método de programación puede ayudarlo a ahorrar tiempo, aprender mejor la línea de comando y desterrar las tediosas tareas de administración de archivos.

¿Qué es Shell Scripting?

Ser usuario de Linux significa jugar con el comando- línea. Nos guste o no, hay algunas cosas que se hacen mucho más fácilmente a través de esta interfaz que apuntando y haciendo clic. Cuanto más utilice y aprenda la línea de comandos, más verá su potencial. Bueno, la línea de comandos en sí es un programa: el caparazón. La mayoría de las distribuciones de Linux hoy usan Bash, y esto es en lo que realmente está ingresando los comandos.

Ahora, algunos de ustedes que usaron Windows antes de usar Linux pueden recordar los archivos por lotes. Estos eran pequeños archivos de texto que podría llenar con comandos para ejecutar y Windows los ejecutaría sucesivamente. Era una forma inteligente y ordenada de hacer algunas cosas, como ejecutar juegos en el laboratorio de computación de tu escuela secundaria cuando no podías abrir carpetas del sistema o crear accesos directos. Los archivos por lotes en Windows, si bien son útiles, son una imitación barata de los scripts de shell.

Los scripts del shell nos permiten programar comandos en cadenas y hacer que el sistema los ejecute como un evento guionado, al igual que los archivos por lotes. También permiten funciones mucho más útiles, como la sustitución de comandos. Puede invocar un comando, como la fecha, y usar su salida como parte de un esquema de nombres de archivo. Puede automatizar copias de seguridad y cada archivo copiado puede tener la fecha actual adjunta al final de su nombre. Los scripts no son solo invocaciones de comandos, tampoco. Son programas en sí mismos. Las secuencias de comandos le permiten usar funciones de programación, como bucles 'for', declaraciones if / then / else, etc., directamente dentro de la interfaz de su sistema operativo. Y no tienes que aprender otro idioma porque estás usando lo que ya sabes: la línea de comandos.

Creo que ese es realmente el poder de los scripts. Puedes programar con comandos que ya conoces, mientras aprendes las grapas de la mayoría de los principales lenguajes de programación. ¿Necesitas hacer algo repetitivo y tedioso? Guión! ¿Necesita un atajo para un comando realmente intrincado? Guión! ¿Quieres construir una interfaz de línea de comandos realmente fácil de usar para algo? ¡Escríbelo!

Antes de comenzar

Antes de comenzar nuestra serie de scripting, cubramos algo de información básica. Usaremos el shell bash, que la mayoría de las distribuciones de Linux usan de forma nativa. Bash está disponible para usuarios de Mac OS y Cygwin para Windows. Dado que es tan universal, debería poder realizar un script independientemente de su plataforma. Además, mientras existan todos los comandos a los que se hace referencia, las secuencias de comandos pueden funcionar en múltiples plataformas con poco o ningún ajuste requerido.

Las secuencias de comandos pueden hacer uso de los privilegios de "administrador" o "superusuario", por lo que es mejor prueba los scripts antes de ponerlos a trabajar. También use el sentido común, como asegurarse de tener copias de seguridad de los archivos en los que está a punto de ejecutar un script. También es muy importante usar las opciones correctas, como -i para el comando rm, para que se requiera su interacción. Esto puede evitar algunos errores desagradables. Como tal, lee los scripts que descargas y ten cuidado con los datos que tienes, solo en caso de que las cosas vayan mal.

En esencia, los scripts son solo archivos de texto sin formato. Puede usar cualquier editor de texto para escribirlos: gedit, emacs, vim, nano ... Esta lista continúa. Solo asegúrese de guardarlo como texto sin formato, no como texto enriquecido o como documento de Word. Como me encanta la facilidad de uso que proporciona nano, lo usaré.

Permisos y nombres de script

Los scripts se ejecutan como programas, y para que esto suceda deben tener los permisos adecuados. Puede hacer que las secuencias de comandos sean ejecutables ejecutando el siguiente comando:

chmod + x ~ / somecrazyfolder / script1

Esto permitirá que cualquiera ejecute esa secuencia de comandos en particular. Si desea restringir su uso solo a su usuario, puede usar esto en su lugar:

chmod u + x ~ / somecrazyfolder / script1

Para ejecutar esta secuencia de comandos, debería hacer un cd en el directorio apropiado y luego ejecutar la secuencia de comandos de esta manera:

cd ~ / somecrazyfolder

./ script1

Para hacer las cosas más convenientes, puede colocar scripts en una carpeta "bin" en su directorio principal:

~ / bin

En muchas distribuciones modernas, esta carpeta ya no se crea de forma predeterminada, pero puede crear eso. Esto es generalmente donde se almacenan los archivos ejecutables que pertenecen a su usuario y no a otros usuarios. Al colocar scripts aquí, puede simplemente ejecutarlos escribiendo su nombre, al igual que otros comandos, en lugar de tener que hacer cd y usar el prefijo './'.

Sin embargo, antes de nombrar un script, debe hacer lo siguiente comando para verificar si tiene un programa instalado que usa ese nombre:

que [comando]

Mucha gente llama a sus primeros scripts "prueba" y cuando intentan ejecutarlo en la línea de comandos, nada sucede. Esto se debe a que entra en conflicto con el comando de prueba, que no hace nada sin argumentos. Asegúrate siempre de que los nombres de tus scripts no entren en conflicto con los comandos, de lo contrario te encontrarás haciendo cosas que no intentas hacer.

Pautas de scripting

Como mencioné antes, cada archivo de script es esencialmente texto plano. Sin embargo, eso no significa que puedas escribir lo que quieras de todos modos. Cuando se intenta ejecutar un archivo de texto, las shells las analizarán en busca de pistas sobre si son scripts o no, y cómo manejarlo todo correctamente. Debido a esto, hay algunas pautas que necesita saber.

  1. Cada script debe estar con "#! / Bin / bash"
  2. Cada línea nueva es un nuevo comando
  3. Las líneas de comentario comienzan con un #
  4. Los comandos están rodeados por ()

El Hack Hash-Bang

Cuando un shell analiza un archivo de texto, la forma más directa de identificar el archivo como un script es haciendo su primera línea:

# ! / bin / bash

Si usa otro shell, sustituya su ruta aquí. Las líneas de comentario comienzan con hashes (#), pero agregar bang (!) Y la ruta de shell después de que es una especie de hack que omitirá esta regla de comentario y obligará al script a ejecutarse con el shell al que apunta esta línea.

Nueva línea = Nuevo comando

Cada nueva línea debe considerarse un nuevo comando o un componente de un sistema más grande. Las sentencias If / then / else, por ejemplo, tomarán múltiples líneas, pero cada componente de ese sistema está en una nueva línea. No permita que un comando se desborde en la próxima línea, ya que puede truncar el comando anterior y le puede dar un error en la siguiente línea. Si su editor de texto está haciendo eso, debe desactivar el ajuste de texto para estar seguro. Puede desactivar el ajuste de texto en nano bit presionando ALT + L.

Comentar a menudo con #s

Si comienza una línea con un #, la línea se ignorará. Esto lo convierte en una línea de comentarios, donde puede recordar cuál fue la salida del comando anterior o qué hará el próximo comando. Nuevamente, apague el ajuste del texto o divídalo en varias líneas que comienzan con un hash. Usar muchos comentarios es una buena práctica para mantener, ya que le permite a usted y a otras personas ajustar sus guiones más fácilmente. La única excepción es el hack Hash-Bang antes mencionado, así que no sigas #s con! S. ; -) Los comandos

están rodeados por paréntesis

En días anteriores, las sustituciones de comandos se realizaban con marcas de selección simples (', comparte la tecla ~). No vamos a hablar de esto todavía, pero como la mayoría de la gente se va y explora después de aprender lo básico, probablemente sea una buena idea mencionar que debe usar paréntesis en su lugar. Esto se debe principalmente a que cuando anida, coloca comandos dentro de otros comandos, los paréntesis funcionan mejor.

Su primer script

Comencemos con un script simple que le permita copiar archivos y anexar fechas al final del nombre del archivo. Vamos a llamarlo "datecp". Primero, vamos a ver si ese nombre entra en conflicto con algo:

Puedes ver que no hay salida de ese comando, así que estamos listos para usar este nombre.

Vamos a crear un archivo en blanco en el ~ / bin carpeta:

toque ~ / bin / datecp

Y, cambiemos el permiso ahora, antes de que nos olvidemos:

Comencemos a construir nuestro script entonces. Abre ese archivo en tu editor de texto de tu elección. Como dije, me gusta la simplicidad de nano.

nano ~ / bin / datecp

Y, vamos a poner la primera línea de requisitos previos y un comentario sobre lo que hace este script.

Siguiente, vamos a declarar una variable. Si alguna vez tomó álgebra, probablemente sepa qué es eso. Una variable nos permite almacenar información y hacer cosas con ella. Las variables pueden "expandirse" cuando se hace referencia en otro lugar. Es decir, en lugar de mostrar su nombre, mostrarán sus contenidos almacenados. Posteriormente puede indicarle a esa misma variable que almacene información diferente, y cualquier instrucción que ocurra después utilizará la nueva información. Es un marcador de posición realmente elegante.

¿Qué pondremos en variable? Bueno, ¡almacenemos la fecha y la hora! Para hacer esto, llamaremos al comando date.

Eche un vistazo a la captura de pantalla siguiente sobre cómo construir el resultado del comando date:

Puede ver eso agregando diferentes variables que comienzan con%, puedes cambiar la salida del comando a lo que quieras. Para obtener más información, puede consultar la página de manual del comando de fecha.

Usemos la última iteración del comando de fecha, "fecha +% m_% d_% y-% H.% M.% S", y utilízalo en nuestro script.

Si tuviéramos que guardar este script en este momento, podríamos ejecutarlo y nos daría el resultado del comando de fecha como lo esperaríamos:

Pero, hagamos algo diferente. Vamos a dar un nombre de variable, como date_formatted a este comando. La sintaxis adecuada para esto es la siguiente:

variable = $ (comando -opciones argumentos)

Y para nosotros, lo construiríamos así:

date_formatted = $ (date +% m_% d_% y-% H.% M.% S)

Esto es lo que llamamos sustitución de comando. Básicamente le estamos diciendo a bash que cada vez que aparezca la variable "date_formatted", ejecute el comando entre paréntesis. Luego, se debe mostrar el resultado que los comandos proporcionan en lugar del nombre de la variable, "date_formatted".

Aquí hay un script de ejemplo y su salida:

Tenga en cuenta que hay dos espacios en la salida. El espacio dentro de las comillas del comando echo y el espacio delante de la variable se muestran. No use espacios si no desea que aparezcan. También tenga en cuenta que sin esta línea agregada de "eco", el script no daría ningún resultado.

Volvamos a nuestro script. A continuación, agreguemos la parte de copia del comando.

cp -iv $ 1 $ 2. $ fecha_formatado

Esto invocará el comando de copia, con las opciones -i y -v. El primero le pedirá la verificación antes de sobrescribir un archivo, y este último mostrará lo que está pasando en la línea de comandos.

A continuación, puede ver que agregué la opción "$ 1". Cuando se crean scripts, un signo de dólar ($) seguido de un número indicará el argumento numerado del script cuando se invocó. Por ejemplo, en el siguiente comando:

cp -iv Trogdor2.mp3 ringtone.mp3

El primer argumento es "Trogdor2.mp3" y el segundo argumento es "ringtone.mp3".

Mirando hacia atrás en nuestro script, podemos ver que estamos haciendo referencia a dos argumentos:

Esto significa que cuando ejecutamos el script, tendremos que proporcionar dos argumentos para que el script se ejecute correctamente. El primer argumento, $ 1, es el archivo que se copiará, y se sustituye como el primer argumento del comando "cp -iv".

El segundo argumento, $ 2, actuará como el archivo de salida para el mismo comando. Pero, también puedes ver que es diferente. Hemos agregado un período y hemos hecho referencia a la variable "date_formatted" desde arriba. ¿Curioso en cuanto a qué hace esto?

Esto es lo que sucede cuando se ejecuta el script:

Puede ver que el archivo de salida aparece como lo que ingresé por $ 2, seguido de un punto, luego el resultado del comando de fecha ! Tiene sentido, ¿verdad?

Ahora cuando ejecuto el comando datecp, ejecutará este script y me permitirá copiar cualquier archivo a una nueva ubicación, y agregará automáticamente la fecha y la hora al final del nombre del archivo. ¡Útil para archivar cosas!


La creación de scripts en Shell es fundamental para que su sistema operativo funcione para usted. No es necesario que aprenda un nuevo lenguaje de programación para hacerlo realidad. Intenta escribir guiones con algunos comandos básicos en casa y comienza a pensar en para qué puedes usar esto.

¿Guionas? ¿Tienes algún consejo para los novatos? ¡Comparte tu opinión en los comentarios! ¡Hay más por venir en esta serie!


Cómo bloquear su tableta o teléfono inteligente Android para niños

Cómo bloquear su tableta o teléfono inteligente Android para niños

Google ha agregado más y más características de estilo de control parental a Android a lo largo de los años. Puede darle a un niño su propia cuenta de usuario restringida, bloquear el acceso a una aplicación específica o restringir los sitios web que los niños pueden usar. Dependiendo de la versión de Android que tenga y del fabricante de su dispositivo, es posible que no tenga algunas de estas opciones, o pueden parecer un poco diferentes.

(how-to)

¿Cuáles son algunos proyectos divertidos de tecnología que puedo hacer con mis hijos?

¿Cuáles son algunos proyectos divertidos de tecnología que puedo hacer con mis hijos?

"¡Estoy aburrido!" Dos palabras que cualquier padre teme escuchar en una aburrida tarde de domingo, entreteniendo a sus hijos cuando Me quedé sin goombas para meterme en Mario. No siempre es tan fácil como lanzar un iPad en su dirección y esperar lo mejor. Afortunadamente, hoy en día existen muchos proyectos informáticos en el hogar que puede utilizar para brindar a sus geeks emergentes la oportunidad no solo de divertirse construyendo sus propias computadoras, sino también de obtener información detallada sobre temas como el hardware de la computadora, software, programación e ingeniería mecánica, todo en el mismo lugar.

(how-to)