Shell Scripting
En los términos más simples, un script de shell es un archivo que contiene una serie de
comandos. El shell lee este archivo y ejecuta los comandos como si se hubieran ingresado
directamente en la línea de comandos.
El shell es algo único, ya que es una poderosa interfaz de línea de comandos para el sistema y
un intérprete de lenguaje de scripting. La mayoría de las cosas que se pueden hacer en la línea
de comandos se pueden hacer en scripts, y la mayoría de las cosas que se pueden hacer en
scripts se pueden hacer en la línea de comandos.
Navegación
pwd: Imprimir directorio de trabajo
cd: Cambiar directorio
ls: Listar archivos y directorios
cd
Para cambiar el directorio de trabajo se usa el comando cd. Para hacer esto, escriba cd seguido
de la ruta de directorio de trabajo deseado.
Un nombre de ruta es la ruta que toma a lo largo de las ramas del árbol para llegar al
directorio que desea. Los nombres de rutas se pueden especificar de una de dos maneras
diferentes:
Rutas de acceso absolutas
Rutas de acceso relativas
Ruta de acceso absoluta
Comienza con el directorio raíz y sigue la rama de árbol por rama hasta que se completa la ruta
al directorio o archivo deseado.
Por ejemplo: Existe un directorio del
sistema en el que la mayoría de los
programas están instalados. La ruta del
directorio es /usr/bin.
Esto significa que desde el directorio raíz
(/) hay un directorio llamado usr que
contiene un directorio llamado bin.
Cuando un nombre de ruta absoluto comienza desde el directorio raíz y conduce a su destino,
un nombre de ruta relativo comienza desde el directorio de trabajo. Para hacer esto, usa un
par de notaciones especiales para representar posiciones relativas en el árbol del sistema de
archivos. Estas notaciones especiales son "." (Punto) y ".." (Punto punto).
‘.’ Se refiere al directorio de trabajo
‘..’ Se refiere al directorio principal del directorio de trabajo
Digamos que se quiere cambiar el directorio de trabajo al padre de /usr/bin que es
/usr, se podría hacer de dos maneras distintas:
Como ruta absoluta: cd /usr
Con un nombre de ruta relativo: cd ..
Del mismo modo, podemos cambiar el directorio de trabajo de /usr a /usr/bin de dos
maneras diferentes:
Usando una ruta de acceso absoluta: cd /usr/bin
Usando un nombre de ruta relativo: cd ./bin
Looking Around
ls: Lista de archivos y directorios
less: Ver archivos de texto
file: Clasificar los contenidos de un archivo
ls
El comando ls se usa para listar el contenido de un directorio. Es probablemente el comando
de Linux más comúnmente usado. Se puede utilizar de varias maneras diferentes.
Mando Resultado
ls Listar los archivos en el directorio de trabajo
ls / bin Liste los archivos en el directorio / bin (o cualquier otro directorio que desee
especificar)
ls -l Listar los archivos en el directorio de trabajo en formato largo
ls -l / etc / bin Liste los archivos en el directorio / bin y el directorio / etc en formato largo
ls -la .. Enumere todos los archivos (incluso los que tengan nombres que comiencen
con un carácter de punto, que normalmente están ocultos) en el padre del
directorio de trabajo en formato largo
less
Programa que permite ver archivos de texto. Esto es muy útil ya que muchos de los archivos
utilizados para controlar y configurar Linux son legibles para el ser humano.
Manipulación de archivos
cp - copia archivos y directorios
mv - mueve o renombra archivos y directorios
rm - eliminar archivos y directorios
mkdir - crear directorios
Estos cuatro comandos están entre los comandos de Linux más utilizados. Son los comandos
básicos para manipular tanto archivos como directorios.
Wildcards
Los wildcards (comodines) le permiten seleccionar nombres de archivos basados en patrones
de caracteres. La siguiente tabla enumera los wildcards (comodines) y lo que seleccionan:
Wildcard Sentido
* Coincide con cualquier carácter
? Coincide con cualquier carácter individual
Coincide con cualquier carácter que sea
miembro de los caracteres establecidos. El
conjunto de caracteres también puede
[ characters]
expresarse como una clase de caracteres
POSIX como uno de los siguientes:
Clases de caracteres POSIX
[: alnum:] Caracteres alfanuméricos
[:alfa:] Caracteres alfabéticos
[:dígito:] Numerales
Caracteres alfabéticos en
[:Superior:]
mayúsculas
Caracteres alfabéticos en
[:inferior:]
minúsculas
Coincide con cualquier carácter que no sea
[! characters]
miembro de los caracteres establecidos
Usando wildcards, es posible construir criterios de selección muy sofisticados para los nombres
de archivo:
Pattern Matches
* Todos los nombres de archivos
Todos los nombres de archivos que
g*
comiencen con el carácter "g"
Todos los nombres de archivos que
b*.txt comiencen con el carácter "b" y terminan con
los caracteres ".txt"
Cualquier nombre de archivo que comience
Data??? con los caracteres "Data" seguidos
exactamente de 3 caracteres más.
Cualquier nombre de archivo que comience
[abc]* con "a", "b" o "c" seguido de cualquier otro
carácter
Cualquier nombre de archivo que comience
[[:upper:]]* con una letra mayúscula. Este es un ejemplo
de una clase de carácter.
Otro ejemplo de clases de caracteres. Este
patrón coincide con cualquier nombre de
BACKUP.[[:digit:]][[:digit:]] archivo que comience con los caracteres
"BACKUP", seguido de exactamente dos
numerales.
Cualquier nombre de archivo que no termine
*[![:lower:]]
con una letra mayúscula.
Nota: Se puede usar wildcards con cualquier comando que acepte argumentos de nombre de
archivo.
Scripts Shell
En los términos más simples, un script de shell es un archivo que contiene una serie de
comandos. El shell lee este archivo y ejecuta los comandos como si se hubieran ingresado
directamente en la línea de comandos.
El shell es algo único, ya que es una poderosa interfaz de línea de comandos para el sistema y
un intérprete de lenguaje de scripting. Como veremos, la mayoría de las cosas que se pueden
hacer en la línea de comandos se pueden hacer en scripts, y la mayoría de las cosas que se
pueden hacer en scripts se pueden hacer en la línea de comandos.
Hemos cubierto muchas funciones de shell, pero nos hemos centrado en las funciones que se
usan más a menudo directamente en la línea de comandos. El shell también proporciona un
conjunto de características que normalmente se usan (pero no siempre) al escribir programas.
Contenido
1. Escribir tu primer script y hacerlo funcionar
2. Edición de los scripts que ya tienes
3. Aquí los scripts
4. Variables
5. Sustitución de comandos y constantes
6. Funciones de Shell
7. Algún trabajo real
8. Control de flujo - Parte 1
9. No te metas en problemas
10. Entrada de teclado y aritmética
11. Control de flujo - Parte 2
12. Parámetros posicionales
13. Control de flujo - Parte 3
14. Errores y señales y trampas (¡Oh!) Parte 1
15. Errores y señales y trampas (¡Oh!) Parte 2
Escribir tu primer script y hacerlo funcionar
Para escribir con éxito un script de shell, tienes que hacer tres cosas:
Escribe un script
Darle al shell permiso para ejecutarlo.
Ponlo en algún lugar donde el Shell pueda encontrarlo.
Escribe un script
Un script de shell es un archivo que contiene texto ASCII. Para crear un script de shell, utiliza
un editor de texto. Un editor de texto es un programa, como un procesador de textos, que lee
y escribe archivos de texto ASCII.. Aquí hay una lista de algunos de los más comunes:
Nombre Descripción Interfaz
vi, vim El abuelo de los editores de texto de Unix, vi es famoso por línea de comando
su estructura de comando difícil y no intuitiva. En el lado
positivo, vi es potente, ligero y rápido. Learning vi es un rito
de paso de Unix, ya que está disponible universalmente en
sistemas similares a Unix. En la mayoría de las distribuciones
de Linux, se usa una versión mejorada del editor vi
tradicional llamado vim .
Emacs El verdadero gigante en el mundo de los editores de texto es línea de comando
Emacs by Richard Stallman . Emacs contiene (o se puede
hacer que contenga) todas las características jamás
concebidas para un editor de texto. Cabe señalar que los fans
de vi y Emacs luchan contra guerras religiosas amargas sobre
cuál es mejor.
nano nano es un clon gratuito del editor de texto suministrado con línea de comando
el programa de correo electrónico pine . nano es muy fácil de
usar pero es muy corto en
características. Recomiendo nano para los usuarios
primerizos que necesitan un editor de línea de comandos.
gedit gedit es el editor que se suministra con el entorno de gráfico
escritorio Gnome.
kwrite kwrite es el "editor avanzado" suministrado con KDE. Tiene gráfico
resaltado de sintaxis, una característica útil para
programadores y escritores de guiones.