terminal
(→Atributos fichero) |
(→Shell scripting) |
||
Línea 131: | Línea 131: | ||
La shell es la envolvente del ''hardware'' y el kernel del ordenador. El usari.x. accede al kernel y a las componentes del ordenador a través de ella. |
La shell es la envolvente del ''hardware'' y el kernel del ordenador. El usari.x. accede al kernel y a las componentes del ordenador a través de ella. |
||
− | Esta shell permite la ejecución de '''scripts''' para automatizar esas tareas que sean repetitivas. Estas '''scripts''' se pueden programar en distintas shells. En esta introducción se dan detalles de la <code>bash: bourn-again Shell</code>. El sistema tiene un conjunto de herramientas [https://wiki.debian.org/coreutils utils] sencillas pero potentes diseñadas para facilitar el manejo del sistema. |
+ | Esta shell permite la ejecución de '''scripts''' para automatizar esas tareas que sean repetitivas. Estas '''scripts''' se pueden programar en distintas shells. En esta introducción se dan detalles de la <code>bash: bourn-again Shell</code> (hay distitnas shells: csh, sh, ksh, ...). En estas shells se pueden utilizar todos los <I>coreutils</I>. Estas scripts constituyen un lenguajde de programación interpreatado que es masivamente utilizando dentro del entorno linux |
− | Estas scripts de shell son programas ejecutables interpretados por el kernel. Así que tienen que tener permiso de ejecución: |
+ | Estas scripts de shell son programas ejecutables interpretados por el kernel. Así que tienen que tener permiso de ejecución. Se realiza con la aplicación <code>chmod</code> (<I>change mode</I>, cambiar el modo): |
<PRE> |
<PRE> |
||
$ chmod u+x [ScriptShell] |
$ chmod u+x [ScriptShell] |
||
+ | </PRE> |
||
+ | O bien directamente al llamar <ode>bash</code> (si el script es de bash) |
||
+ | <PRE> |
||
+ | $ bash [ScriptShell] |
||
</PRE> |
</PRE> |
||
Línea 148: | Línea 152: | ||
Hola mundo!! |
Hola mundo!! |
||
</PRE> |
</PRE> |
||
+ | * En la primera línea se dice que se va a ejecutar con <code>bash</code> |
||
+ | |||
+ | == Conceptos básicos == |
||
+ | Utilizando un script test llamado <code>test.bash</code> |
||
+ | * <code>echo</code>: impresión en la terminal |
||
+ | |||
+ | * Variables: Se utilizan cómo <code>$[NombreVariable]</code> o <code>${[NombreVariable]}</code>. Se asignan con <code>'='</Code> (sin espacios!!!) |
||
+ | <PRE> |
||
+ | #!/bin/bash |
||
+ | |||
+ | number=3 |
||
+ | echo "Numero: "${number} |
||
+ | </PRE> |
||
+ | ** Ejecutando |
||
+ | <PRE> |
||
+ | $ chmod u+x test.bash |
||
+ | $ ./test.bash |
||
+ | Numero: 3 |
||
+ | </PRE> |
||
+ | ** Asignación de un valor después de ejecutar un comando (con <code>``</code>) |
||
+ | <PRE> |
||
+ | fecha=`date "+%Y/%m/%d"` |
||
+ | echo "HOY: "${fecha} |
||
+ | </PRE> |
||
+ | ** Ejecutando |
||
+ | <PRE> |
||
+ | HOY 2018/06/06 |
||
+ | </PRE> |
||
+ | * IF: Condición |
||
= Entorno servidores/clústers = |
= Entorno servidores/clústers = |
Revisión de 12:50 6 jun 2018
La mayoría de usuari.x.s GNU/linux trabajan directamente des de la terminal. Básicamante, su uso facilita y accelera el trabajo.
Contenido |
Terminal
La terminal otorga una interfaz al usuari.x. mediante la cuál se acceden a los fichero y aplicaciones.
Ideas básicas
El sistema operativo se configura a través de unas variables de sistema generales
-
$HOME:
Ubicación inicial al abrir una terminal cómo usuarix (/home/[usuarix]
) -
$PATH:
Directorios que ya están cargados automáticamente al abrir un terminal. Suelen ser directorios con aplicaciones, así no hace falta saber dónde se encuentran las aplicaciones. Por ejemplo:
/home/lluis/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
-
$LD_LIBRARY_PATH:
Librerias cargadas en el sistema
coreutils
Las coreutils son pequeñas herramientas instaladas por defecto con el sistema, que hacen muy eficientemente operaciones muy sencillas. Hay de distinto tipos: ficheros, shell y texto
Instrucciones básicas
Las herramientas del coreutils
, se utilizan mediante 'flags' (normalmente '-flag') que regulan la ejecución de la herramienta
$ [herramienta] -flag1 -flag2 ...
Se accede a la ayuda de la herramienta con: -h --h -help --help
(en función de la herramienta)
$ [herramienta] --h
O bien en un formato texto con man
(sólo aparecerá si se ha instalado la documentación de la aplicación)
$ man [herramienta]
Distintos comandos básicos... (normalmentes nombre fruto de una abreviación...)
-
ls
: 'list', lista el contenido de un directorio (un directorio es el equivalente de 'carpeta' de Windows)
$ ls 20160324_bash.pdf install.inf prueba.bash Terminal.png test.bash $ ls -l total 244 -rw-r--r-- 1 lluis lluis 221654 Jun 6 10:49 20160324_bash.pdf -rw-rw-r-- 1 lluis lluis 328 Apr 25 14:53 install.inf -rwxr--r-- 1 lluis lluis 114 Jun 6 11:27 prueba.bash -rw-r--r-- 1 lluis lluis 11172 Apr 11 16:27 Terminal.png -rw-r--r-- 1 lluis lluis 4056 Jun 6 10:49 test.bash
-
mkdir
: 'makedirectoy', creación de un directorio
$ mkdir parTUXza $ ls 20160324_bash.pdf install.inf parTUXza prueba.bash Terminal.png test.bash $ ls parTUXza $
-
cp
: 'copy', copiar fichero
$ cp [origen] [destino] $ cp Terminal.png parTUXza $ ls parTUXza $ Terminal.png
-
mv
: 'move', mover un fichero y/o cambiar el nombre
$ mv [origen] [destino] $ mv parTUXza/Terminal.png parTUXza/Terminal2.png $ ls parTUXza Terminal2.png
-
rm
: 'remove', borrar fichero, directorio...
$ rm [fichero] $ rm parTUXza/Terminal2.png $ ls parTUXza $
-
rmdir
: 'removedirectory', borra directorio vacío...
$ cp Terminal.png parTUXza $ rmdir parTUXza rmdir: failed to remove 'parTUXza/': Directory not empty
-
date
: manejo de fechas
$ date Wed Jun 6 12:27:16 -03 2018 $ date "+%Y/%m/%d %H:%M:%S" 2018/06/06 12:27:21 $ date -d"35 days" Wed Jul 11 12:27:27 -03 2018 $ date -d"35 days ago" Wed May 2 12:27:32 -03 2018
Atributos fichero
Al hacer un list con -l
, nos aparecen la lista de atributos del fichero:
-
ls
: 'list', lista el contenido de un directorio (un directorio es el equivalente de 'carpeta' de Windows)
$ ls -l [AtributosDueñx][AtributosGrupo][AtributosTodxs] [ID] [Dueñx] [Grupo] [Tamaño] [Fecha] [NombreFichero] total 244 -rw-r--r-- 1 lluis lluis 221654 Jun 6 10:49 20160324_bash.pdf -rw-rw-r-- 1 lluis lluis 328 Apr 25 14:53 install.inf -rwxr--r-- 1 lluis lluis 114 Jun 6 11:27 prueba.bash drwxr-xr-x 2 lluis lluis 4096 Jun 6 12:25 parTUXza -rw-r--r-- 1 lluis lluis 11172 Apr 11 16:27 Terminal.png -rwxr--r-- 1 lluis lluis 4056 Jun 6 10:49 test.bash
-
-rw-r--r-- 1 lluis lluis 221654 Jun 6 10:49 20160324_bash.pdf
, fichero pdf- -rw-: Dueño sólo puede leerlo y modificarlo
- r--: El grupo sólo puede leerlo
- r--: Todo el mundo sólo puede leerlo
- lluis: dueño del fichero
- lluis: grupo del fichero
- 221654: Tamaño en bytes del fichero
- Jun 6 10:49: fecha del fichero
-
-rwxr--r-- 1 lluis lluis 4056 Jun 6 10:49 test.bash
: script de shell, sólo el dueñx puede ejecutarlo-rwx
-
drwxr-xr-x 2 lluis lluis 4096 Jun 6 12:25 parTUXza
: directorio (drwx
), para linux, los directorios son ejectuables para todxs!
Shell scripting
La shell es la envolvente del hardware y el kernel del ordenador. El usari.x. accede al kernel y a las componentes del ordenador a través de ella.
Esta shell permite la ejecución de scripts para automatizar esas tareas que sean repetitivas. Estas scripts se pueden programar en distintas shells. En esta introducción se dan detalles de la bash: bourn-again Shell
(hay distitnas shells: csh, sh, ksh, ...). En estas shells se pueden utilizar todos los coreutils. Estas scripts constituyen un lenguajde de programación interpreatado que es masivamente utilizando dentro del entorno linux
Estas scripts de shell son programas ejecutables interpretados por el kernel. Así que tienen que tener permiso de ejecución. Se realiza con la aplicación chmod
(change mode, cambiar el modo):
$ chmod u+x [ScriptShell]
O bien directamente al llamar <ode>bash</code> (si el script es de bash)
$ bash [ScriptShell]
El ejemplo más senzillo de script, con nombre hola.bash
(se elige la extensión .bash
, pero no es obligatorio)
#!/bin/bash echo "Hola mundo!!"
- Al ejecutarse:
$ ./hola.bash Hola mundo!!
- En la primera línea se dice que se va a ejecutar con
bash
Conceptos básicos
Utilizando un script test llamado test.bash
-
echo
: impresión en la terminal
- Variables: Se utilizan cómo
$[NombreVariable]
o${[NombreVariable]}
. Se asignan con'='
(sin espacios!!!)
#!/bin/bash number=3 echo "Numero: "${number}
- Ejecutando
$ chmod u+x test.bash $ ./test.bash Numero: 3
- Asignación de un valor después de ejecutar un comando (con
``
)
- Asignación de un valor después de ejecutar un comando (con
fecha=`date "+%Y/%m/%d"` echo "HOY: "${fecha}
- Ejecutando
HOY 2018/06/06
- IF: Condición