De hecho, es un poco extraño escribir la "apertura" en la última sección. Sin embargo, el comienzo del primer artículo (Operaciones numéricas) es en realidad una pequeña introducción. Se menciona que toda la serie requiere una cierta base de programación de Shell, para que los lectores que no tienen una base de programación de Shell puedan hacerlo. Al leer esta serie, llegué al final para reescribir este capítulo inicial. El capítulo inicial presenta principalmente qué es Shell, el entorno operativo de Shell, la sintaxis básica de Shell y las habilidades de depuración.
Primero, veamos la posición de Shell en todo el sistema operativo en la siguiente figura. El círculo exterior de la figura describe todo el sistema operativo (como.
Debian/Ubuntu/Slackwareetc.), el círculo interior describe el núcleo del sistema operativo (p. ej.
Núcleo de Linux),y
Caparazóny
GUITambién sirve como interfaz entre el usuario y el sistema operativo.
GUIProporciona una interfaz gráfica de usuario que es muy fácil de usar y de aprender;
CaparazónProporciona a los usuarios una interfaz de línea de comandos, recibe la entrada del teclado del usuario, analiza y ejecuta los comandos en la cadena de entrada y luego devuelve los resultados de la ejecución al usuario. Puede ser más complicado de usar, pero porque requiere menos recursos. Además, después de dominar la operación, se puede mejorar la eficiencia del trabajo y tiene la función de procesamiento por lotes, por lo que es muy popular en algunas aplicaciones.
CaparazónComo interfaz de usuario, en realidad es un intérprete (intérprete, como en
LinuxLos siguientes son más comúnmente utilizados
Intento), podemos ver el actual
Caparazón:
$ echo $Shell/bin/bash$ ls -l /bin/bash-rwxr-xr-x 1 raíz raíz 702160 2008-05-13 02:33 /bin/bash
El intérprete no sólo puede interpretar comandos simples, sino también un archivo con una estructura de sintaxis específica, lo que se denomina script. Aquí no se analiza en profundidad cómo interpreta estos comandos y archivos de script específicamente. Consulte otro artículo que escribí en 2008: "El momento de la ejecución del programa en la línea de comandos de Linux".
Dado que el programa puede interpretar archivos con una determinada estructura gramatical, podemos seguir una determinada gramática para escribirlo. ¿Qué tipo de gramática tiene, cómo ejecutarla y cómo depurarla? A continuación utilizamos
IntentoAnalicemos estos aspectos con un ejemplo.
Para facilitar los siguientes ejercicios, primero configuramos un entorno operativo básico: En un sistema operativo Linux, hay un entorno operativo en ejecución.
IntentoLa línea de comando está esperando que escribamos el comando. Esta línea de comando puede estar debajo de la interfaz gráfica.
Terminal(Por ejemplo
ubuntuMuy poderoso
terminador), o puede ser una interfaz de personaje
Consola(se puede utilizar
CTRL+ALT+F1~6alternar) si encuentra el actual
CaparazónNo
Intento, reemplácelo con:
$ chsh $USUARIO -s /bin/bash$ su $USUARIO
O simplemente escribe Bash:
$ bash$ echo $Shell # Confirmar /bin/bash
Si no tiene instalado un sistema operativo Linux, también puede considerar utilizar los servicios de experimento virtual de Linux proporcionados por algunas comunidades públicas, que generalmente brindan acceso remoto.
Caparazón, puedes pasar
Telneto es
sshInicie sesión en el cliente para practicar.
Con el entorno operativo básico, ¿cómo ejecutar los comandos escritos por el usuario o el archivo de script escrito por el usuario?
?
Supongamos que hemos escrito un script de Shell llamado
prueba.sh.
La primera forma es asegurarnos de que el comando que ejecutamos tenga permisos ejecutables y luego escribir el comando directamente para ejecutarlo:
$ chmod +x /ruta/a/prueba.sh$ /ruta/a/prueba.sh
El segundo método es escribir directamente el script como
IntentoLos parámetros del intérprete se pasan en:
$ bash /ruta/a/prueba.sh
o
$ fuente /ruta/a/test.sh
o
$ ./ruta/a/prueba.sh
uno primero
Hola Mundoprograma.
Introduzcamos la estructura básica de un programa Shell para
Hola MundoPor ejemplo:
#!/bin/bash -v# test.shecho Hola mundo
Guarde el código anterior como
prueba.shy luego ejecútelo de las dos maneras diferentes anteriores, puede ver los siguientes efectos.
Método uno:
$ chmod +x test.sh$ ./test.sh ./test.sh #!/bin/bash -v echo Hola mundo Hola mundo
Método dos:
$ bash prueba.shHola, mundo$ fuente test.shHola, mundo$ prueba.shHola, mundo.
Descubrimos que hay una diferencia entre los dos resultados de ejecución. ¿Por qué? Aquí debemos prestar atención.
prueba.shEl contenido del archivo, solo tiene dos líneas, la segunda línea se imprime
Hola Mundo, ambos métodos logran su propósito, pero el primer método imprime más contenido del archivo de script. ¿Por qué?
El motivo está en la primera línea del archivo. Cuando ejecutamos el archivo de script directamente, esta línea le indica al sistema operativo que lo use.
#!El intérprete y los parámetros correspondientes después del símbolo se utilizan para interpretar el archivo de script. Al analizar la primera línea, encontramos que el intérprete y los parámetros correspondientes son.
/bin/bash -v,y
-vSucede que es para imprimir el código fuente del programa, pero no lo proporcionamos cuando usamos el segundo método.
IntentoPase cualquier argumento adicional, de modo que simplemente interprete el archivo de script en sí.
Para obtener otros detalles de sintaxis, consulte directamente las "Notas de estudio de programación de Shell", que se encuentran en el Apéndice 1 al final de este libro.
El lenguaje Shell es un lenguaje interpretado y su proceso de programación es algo diferente al de los lenguajes compilados. El proceso básico es el siguiente:
algoritmo de diseño
Utilice Shell para escribir scripts para implementar algoritmos
Ejecute el script directamente
Se puede ver que no tiene el problemático proceso de compilación y vinculación de los lenguajes compilados, pero precisamente por eso, no es muy conveniente depurar cuando sale mal, porque aparecen errores de sintaxis y errores lógicos en tiempo de ejecución. A continuación presentamos brevemente el método de depuración.
Puede hacer referencia directamente a: tecnología de depuración de scripts de Shell o método de depuración BASH.
Como lenguaje interpretado, el lenguaje Shell puede utilizar una gran cantidad de herramientas existentes, incluidos cálculos numéricos, procesamiento simbólico, operaciones de archivos, operaciones de red, etc. Por lo tanto, el proceso de escritura puede ser más eficiente, pero debido a que se interpreta, necesita Para ejecutar durante la ejecución, llamar continuamente a programas externos desde el disco y cambiar entre procesos puede tener desventajas en términos de eficiencia operativa, por lo que debemos optar por utilizar Shell u otros lenguajes para programar según la aplicación.
En el momento en que se ejecuta el programa en la línea de comando de Linux
Notas de estudio de programación de Shell de Linux
Tecnología de depuración de scripts de Shell
Métodos de depuración BASH