<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Introduci%C3%B3n_%C3%A1_Shell</id>
	<title>Introdución á Shell - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Introduci%C3%B3n_%C3%A1_Shell"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Introduci%C3%B3n_%C3%A1_Shell&amp;action=history"/>
	<updated>2026-10-21T13:58:37Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Introduci%C3%B3n_%C3%A1_Shell&amp;diff=68157&amp;oldid=prev</id>
		<title>Vieites: /* Tipos de Shell */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Introduci%C3%B3n_%C3%A1_Shell&amp;diff=68157&amp;oldid=prev"/>
		<updated>2020-10-06T05:21:17Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Tipos de Shell&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;O &amp;#039;&amp;#039;&amp;#039;intérprete de comandos&amp;#039;&amp;#039;&amp;#039; ou &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Shell&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; é a interfaz que permite ao usuario interactuar có sistema. O usuario introduce as súas órdenes, o intérprete as procesa e xera a saída correspondente. &lt;br /&gt;
: O intérprete de comandos é tanto unha interfaz de execución de ordes e utilidades como unha linguaxe de programación que admite crear novas ordes (denominadas &amp;quot;guións&amp;quot; ou &amp;#039;&amp;#039;shellscripts&amp;#039;&amp;#039;), utilizando combinacións de comandos e estruturas lóxicas de control, que contan con características similares ás do sistema e que permiten que os usuarios e grupos da máquina conten cun entorno personalizado.&lt;br /&gt;
: É dicir que, cando se inicia unha sesión coa &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Shell&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, e se traballa cun contorno de texto (non gráfico), estase empregando esta fiestra como intérprete de comandos. Isto é, a fiestra &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; mostra a liña de comandos, o usuario escribe un comando e a &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; executa o comando e mostra de novo a liña de comandos.&lt;br /&gt;
:* [http://www.debian.org/doc/manuals/refcard/ Tríptico de comandos]&lt;br /&gt;
&lt;br /&gt;
== Tipos de Shell ==&lt;br /&gt;
En Unix existen dúas familias principais de intérpretes de comandos:&lt;br /&gt;
* Os baseados no intérprete de Bourne: SH, KSH e BASH.&lt;br /&gt;
* Os baseados no intérprete C: CSH ou TCSH.&lt;br /&gt;
&lt;br /&gt;
A continuación, móstrase unha pequena reseña de cada un deles:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Sh&amp;#039;&amp;#039;&amp;#039; (Bourne &amp;#039;&amp;#039;&amp;#039;Sh&amp;#039;&amp;#039;&amp;#039;ell). Foi desenrolado por Steve Bourne para AT&amp;amp;T, sendo durante moitos anos o &amp;quot;Shell patrón&amp;quot; do sistema operativo UNIX. É tamén coñecido como Standard Shell, xa que todas as distribucións Linux dispoñen del.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ksh&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;K&amp;#039;&amp;#039;&amp;#039;orn &amp;#039;&amp;#039;&amp;#039;Sh&amp;#039;&amp;#039;&amp;#039;ell). Desenrolado por David Korn, é un superconxunto de sh e dispón, polo tanto, de todas as facilidades de sh e outras moitas mais agregadas. A compatibilidade con sh é total.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Bash&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;B&amp;#039;&amp;#039;&amp;#039;ourne &amp;#039;&amp;#039;&amp;#039;A&amp;#039;&amp;#039;&amp;#039;gain &amp;#039;&amp;#039;&amp;#039;Sh&amp;#039;&amp;#039;&amp;#039;ell). É o Shell mais moderno e probablemente o mais utilizado, debido a que se trata do Shell Estándar de GNU/Linux, ademais de ser moi intuitivo e flexible. É o axeitado para introducirse no mundo da programación Shell, pero é, ao mesmo tempo, unha potente ferramenta para usuarios avanzados. Considérase ademais un superconxunto do &amp;#039;&amp;#039;&amp;#039;sh&amp;#039;&amp;#039;&amp;#039;, polo que os comandos que funcionan en sh tamén o fan en bash, pero non ao contrario.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Csh&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;C Sh&amp;#039;&amp;#039;&amp;#039;ell). Desenrolado por Bill Joy da Universidade de Berkeley, é o Shell mais utilizado en sistemas BSD. A estrutura dos seus comandos é bastante similar á do linguaxe C. Non é unha Shell compatible sh.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Tcsh&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;T&amp;#039;&amp;#039;&amp;#039;ENEX &amp;#039;&amp;#039;&amp;#039;C Sh&amp;#039;&amp;#039;&amp;#039;ell). Trátase dun superconxunto de csh bastante mais rápido. Esta característica fai que sexa coñecido como Turbo Shell C.&lt;br /&gt;
&lt;br /&gt;
Para coñecer os Shell dos que se dispón nun contorno Linux, débese consultar o ficheiro &amp;#039;&amp;#039;&amp;#039;/etc/shells&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Que &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; estamos a executar ==&lt;br /&gt;
A cada usuario se lle asigna un único Shell por defecto. Dita asignación atópase no ficheiro &amp;#039;&amp;#039;&amp;#039;/etc/passwd&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
usuario@pc:~$ cat /etc/passwd | grep &amp;#039;usuario&amp;#039;&lt;br /&gt;
usuario:x:1000:1000:usuario,,,:/home/usuario:/bin/bash&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Podemos identificar a &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; que estamos a utilizar lendo o valor da variable &amp;#039;&amp;#039;&amp;#039;SHELL&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ echo $SHELL&lt;br /&gt;
/bin/bash&lt;br /&gt;
## Para ver a versión do shell bash que estamos empregando:&lt;br /&gt;
$ echo $BASH_VERSION&lt;br /&gt;
4.3.24(1)-release&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pódese cambiar a Shell por defecto coa orde &amp;#039;&amp;#039;&amp;#039;chsh&amp;#039;&amp;#039;&amp;#039; (change Shell). Os cambios feitos modifican o ficheiro &amp;#039;&amp;#039;/etc/passwd&amp;#039;&amp;#039;, polo que será preciso reiniciar a sesión do usuario para ver o efecto.&lt;br /&gt;
Un exemplo sería o seguinte:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ chsh -s /bin/bash&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Tamén se pode obter un cambio temporal invocando directamente ao programa Shell dende a liña de ordes da Shell. Este cambio permanecerá activo mentres non se finalice a Shell coa orde &amp;#039;&amp;#039;&amp;#039;exit&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
## Un exemplo có shell tcsh pode ser o seguinte:&lt;br /&gt;
$ /bin/tcsh&lt;br /&gt;
## Se non está instalado no equipo, antes executar: &lt;br /&gt;
## $ apt-get install tcsh&lt;br /&gt;
#&lt;br /&gt;
## Para conocer a versión do tcsh que estamos a executar:&lt;br /&gt;
$ echo $version&lt;br /&gt;
tcsh 6.18.01 (Astron) 2012-02-14 (x86_64-unknown-linux) options wide,nls,dl,al,kan,rh,nd,color,filec&lt;br /&gt;
## Para saír do tcsh e voltar ao bash:&lt;br /&gt;
$ exit&lt;br /&gt;
exit&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Corrección de erros ==&lt;br /&gt;
* Eliminar un carácter: &amp;#039;&amp;#039;&amp;#039;Supr&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Eliminar unha palabra: &amp;#039;&amp;#039;&amp;#039;Control-W&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Eliminar unha liña: &amp;#039;&amp;#039;&amp;#039;Control-U&amp;#039;&amp;#039;&amp;#039; ou &amp;#039;&amp;#039;&amp;#039;Control-X&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Abortar a execución: &lt;br /&gt;
: - Empregando a tecla de interrupción &amp;#039;&amp;#039;&amp;#039;Control-X&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
: - Empregando a tecla de suspensión &amp;#039;&amp;#039;&amp;#039;Control-Z&amp;#039;&amp;#039;&amp;#039;, logo o comando &amp;#039;&amp;#039;ps&amp;#039;&amp;#039; para verificar o número do traballo do programa, e utilizando o comando &amp;#039;&amp;#039;kill&amp;#039;&amp;#039; para abortar o programa:&lt;br /&gt;
[[Imagen:ctrlz.gif]]&lt;br /&gt;
&lt;br /&gt;
* Repetición/Execución da liña de comandos: &amp;#039;&amp;#039;&amp;#039;Frecha arriba&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Acceso de súper usuario ==&lt;br /&gt;
Cando utilicemos &amp;#039;&amp;#039;root&amp;#039;&amp;#039; como nome de usuario para iniciar a sesión, teremos permisos de súper usuario ou administrador. Podemos ler e escribir os arquivos do sistema, executar programas que os usuarios normais non poden, e mais. Cando instalemos unha distribución de Linux no noso equipo, asignaremos un contrasinal para o súper usuario.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;sudo: &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; O programa &amp;#039;&amp;#039;sudo&amp;#039;&amp;#039; (abreviatura do inglés &amp;#039;&amp;#039;superuser do&amp;#039;&amp;#039; ou &amp;#039;&amp;#039;substitute user do&amp;#039;&amp;#039;) é unha utilidade dos sistemas operativos tipo Unix, como GNU/Linux, BSD, ou Mac OS X, que permite aos usuarios executar programas cós privilexios de seguridade de outro usuario (normalmente o usuario &amp;#039;&amp;#039;root&amp;#039;&amp;#039;) de maneira segura.&lt;br /&gt;
: Os usuarios deben confirmar a súa identidade ao executar &amp;#039;&amp;#039;sudo&amp;#039;&amp;#039; dando o seu propio contrasinal antes de executar o programa requirido. Unha vez autenticado o usuario, e se o arquivo de configuración &amp;#039;&amp;#039;&amp;#039;/etc/sudoers&amp;#039;&amp;#039;&amp;#039; permite dar ao usuario acceso ao comando requirido, o sistema o executa e o rexistra.&lt;br /&gt;
:: - [[Administrar_usuarios_e_grupos_en_Linux|Axuda sobre configuración de usuarios]].&lt;br /&gt;
&lt;br /&gt;
Os sistemas operativos Ubuntu e Mac OS X forzan a facer todo acceso administrativo por medio de &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;sudo&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, pois o contrasinal de &amp;#039;&amp;#039;root&amp;#039;&amp;#039; está desactivada por defecto; aínda que se pode activar coa axuda do programa &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;passwd&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; en Ubuntu.&lt;br /&gt;
&lt;br /&gt;
== Onde atopar axuda? ==&lt;br /&gt;
A documentación en liña é a mais empregada en Linux, o manual (&amp;#039;&amp;#039;man&amp;#039;&amp;#039;) e as páxinas &amp;#039;&amp;#039;info&amp;#039;&amp;#039; están dispoñibles dende as primeiras versións do sistema operativo.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;A opción &amp;#039;&amp;#039;--help&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: Vexamos un exemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cat --help&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
: Se a información que mostra se sae da pantalla, utilice o modificador &amp;#039;&amp;#039;less&amp;#039;&amp;#039; utilizando unha tubería:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cat --help | less&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;man&amp;#039;&amp;#039;: Mostra o manual do sistema&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: A utilidade &amp;#039;&amp;#039;man&amp;#039;&amp;#039; (de manual) mostra as páxinas da documentación de sistema. Esta documentación é útil cando se sabe que utilidade se que empregar pero xa nos esquecimos como facelo.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ man nano&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
: Instalación das páxinas &amp;#039;&amp;#039;man&amp;#039;&amp;#039; en español: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ apt-get install manpages-es&lt;br /&gt;
$ apt-get install manpages-es-extra&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;info&amp;#039;&amp;#039;: Mostra información sobre as utilidades&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: A utilidade baseada en texto &amp;#039;&amp;#039;info&amp;#039;&amp;#039; é un sistema hipertexto baseado en menús desenrolado dentro do proxecto GNU e distribuído con Linux.&lt;br /&gt;
&lt;br /&gt;
== Historial da consola ==&lt;br /&gt;
: Un atallo moi útil é o &amp;quot;historial&amp;quot; da consola, este garda un rexistro de todos os comandos escritos.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Ver todo o historial almacenado:&lt;br /&gt;
$ history&lt;br /&gt;
...&lt;br /&gt;
513 echo $BASH_VERSION&lt;br /&gt;
514 clear&lt;br /&gt;
515 history&lt;br /&gt;
##&lt;br /&gt;
## Para executar un comando polo número de posición:&lt;br /&gt;
$ !514&lt;br /&gt;
##&lt;br /&gt;
## Aumentar o número de comandos gardados:&lt;br /&gt;
$ nano /etc/profile&lt;br /&gt;
# Engadimos unha liña ao final:&lt;br /&gt;
HISTSIZE=5000&lt;br /&gt;
##&lt;br /&gt;
## Para limpar o historial:&lt;br /&gt;
$ history -c&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
: - O historial de bash almacénase no arquivo .bash_history do directorio principal do usuario. Trátase dun arquivo de texto convencional.&lt;br /&gt;
&lt;br /&gt;
{{Alerta|Configuración da consola &amp;#039;&amp;#039;&amp;#039;bash&amp;#039;&amp;#039;&amp;#039;|Os arquivos de configuración de bash son, realmente, scripts da consola bash: &lt;br /&gt;
: - Principais arquivos de configuración xerais: &amp;#039;&amp;#039;&amp;#039;/etc/bash.bashrc&amp;#039;&amp;#039;&amp;#039; e &amp;#039;&amp;#039;&amp;#039;/etc/profile&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
: - Principais arquivos de configuración dos usuarios: &amp;#039;&amp;#039;&amp;#039;~/.bashrc&amp;#039;&amp;#039;&amp;#039; e &amp;#039;&amp;#039;&amp;#039;~/.profile&amp;#039;&amp;#039;&amp;#039;. }}&lt;br /&gt;
&lt;br /&gt;
: - Para buscar un comando xa executado o mellor é empregar a combinación de teclas &amp;#039;&amp;#039;&amp;#039;Control+R&amp;#039;&amp;#039;&amp;#039;, deste xeito comézase a buscar comandos &amp;quot;cara atrás&amp;quot;.&lt;br /&gt;
:: · Os caracteres escritos a buscar no comando non teñen que ser os primeiros escritos, poden ser do medio, do final, ...&lt;br /&gt;
:: · Logo pódese seguir premendo &amp;#039;&amp;#039;&amp;#039;Control+R&amp;#039;&amp;#039;&amp;#039; para realizar a búsqueda ata que se atope o comando desexado (sempre &amp;quot;cara atrás&amp;quot;).&lt;br /&gt;
:: · Para ir &amp;quot;cara adiante&amp;quot; emprégase &amp;#039;&amp;#039;&amp;#039;Control+S&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
:: · Se queremos rematar a búsqueda empregaremos &amp;#039;&amp;#039;&amp;#039;Control+G&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para o manexo do historial de comandos&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Comando&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Descrición&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; style=&amp;quot;width:220px&amp;quot; | &amp;lt;up-arrow&amp;gt;/&amp;lt;down-arrow&amp;gt;&lt;br /&gt;
|Comando anterior/posterior&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | !!&lt;br /&gt;
|Último comando ejecutado&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | !n&lt;br /&gt;
|n-ésimo comando do historial&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | !-n&lt;br /&gt;
|n comandos cara atrás&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | !cadea&lt;br /&gt;
|Último comando executado que empeza por cadea&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | !?cadea&lt;br /&gt;
|Último comando executado que contén por cadea&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | ^cadea1^cadea2&lt;br /&gt;
|Executa o último comando cambiando cadea1 por cadea2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | Ctrl+r&lt;br /&gt;
|Busca cara atrás no historial&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | fc&lt;br /&gt;
|Permite ver, editar e reexecutar comandos do historial&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fin de sesión ==&lt;br /&gt;
Para finalizar a sesión, utilizaremos a combinación &amp;#039;&amp;#039;&amp;#039;Control-D&amp;#039;&amp;#039;&amp;#039; ou utilizaremos o comando &amp;#039;&amp;#039;exit&amp;#039;&amp;#039; na liña de comandos.&lt;br /&gt;
== Uso de consolas virtuais ==&lt;br /&gt;
Cando se executa Linux nun ordenador persoal, normalmente utilizaremos a pantalla e o teclado conectados ao equipo. O uso dunha consola física, permítenos acceder ás 63 consolas virtuais (tamén chamados terminais virtuais). Algúns deles están configurados para permitir o inicio de sesión, mentres que outras actúan como pantallas gráficas. Para cambiar entre elas, utilizaremos a combinación &amp;#039;&amp;#039;&amp;#039;Control-Alt&amp;#039;&amp;#039;&amp;#039; e a tecla de función da consola que nos interese, por exemplo, &amp;#039;&amp;#039;&amp;#039;Control-Alt-F5&amp;#039;&amp;#039;&amp;#039; mostra a quinta consola virtual.&lt;br /&gt;
== Cambio de contrasinal ==&lt;br /&gt;
Para cambiar o contrasinal hai que empregar o comando &amp;#039;&amp;#039;passwd&amp;#039;&amp;#039; dende a liña de comandos:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ passwd&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuración do idioma ==&lt;br /&gt;
En modo texto nos atoparemos có problema dos acentos e das eñes, para solucionalo faremos o seguinte.&lt;br /&gt;
* O obxectivo é facer que a variable &amp;#039;&amp;#039;&amp;#039;LANG&amp;#039;&amp;#039;&amp;#039; teña o seguinte valor:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ echo $LANG&lt;br /&gt;
en_US.ISO-8859-15&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Para conseguilo faremos o seguinte:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dpkg-reconfigure locales&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
: E aparecerá a seguinte aplicación, onde debemos escoller as linguaxes:&lt;br /&gt;
[[Imagen:locales1.png]]&lt;br /&gt;
[[Imagen:locales2.png]]&lt;br /&gt;
: Logo, só queda, cerrar sesión e volver a abrila.&lt;br /&gt;
&lt;br /&gt;
== Metacaracteres ==&lt;br /&gt;
Todos os Shells posúen un grupo de caracteres que, en diferentes contextos, teñen diferentes significados: os &amp;#039;&amp;#039;&amp;#039;metacaracteres&amp;#039;&amp;#039;&amp;#039;. Estes xogan un papel importante cando o Shell está analizando a liña de ordes, antes de executala. Os diferentes grupos afectan a aspectos separados do procesamento da liña de ordes.&lt;br /&gt;
&lt;br /&gt;
=== Metacaracteis sintácticos ===&lt;br /&gt;
Utilízanse como caracteres especiais de puntuación entre ordes. Serven para combinar varias ordes có obxecto de construir unha única orde lóxica.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Unindo ordes con ;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: O uso do &amp;quot;punto e coma&amp;quot; (;) como separador permite escribir dúas ou mais ordes na mesma liña. As ordes se executan secuencialmente, coma se estivesen escritas en varias liñas.&lt;br /&gt;
: En programas Shell pódense utilizar por razóns estéticas, para agrupar ordes relacionadas.&lt;br /&gt;
: Na liña de ordes nos permite executar varias sen ter que esperar a que se complete unha antes de introducir a seguinte.&lt;br /&gt;
: Un exemplo sería o seguinte:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd /var/log; ls error-*&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Creando cauces con |&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: O contorno de execución dun programa utiliza varios arquivos no proceso:&lt;br /&gt;
: - A entrada estándar (&amp;#039;&amp;#039;stdin&amp;#039;&amp;#039;), con descritor de arquivo (&amp;#039;&amp;#039;hadless&amp;#039;&amp;#039;) &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039;, e que corresponde por defecto có teclado.&lt;br /&gt;
: - A saída estándar (&amp;#039;&amp;#039;stdout&amp;#039;&amp;#039;), con descritor de arquivo (&amp;#039;&amp;#039;hadless&amp;#039;&amp;#039;) &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, e que corresponde por defecto có monitor.&lt;br /&gt;
: - O erro estándar (&amp;#039;&amp;#039;stderr&amp;#039;&amp;#039;), con descritor de arquivo (&amp;#039;&amp;#039;hadless&amp;#039;&amp;#039;) &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;, e que corresponde por defecto cós arquivos de erro estándares.&lt;br /&gt;
: Pero, este comportamento pode cambiarse.&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;Os cauces (&amp;#039;&amp;#039;pipes&amp;#039;&amp;#039;)&amp;#039;&amp;#039;&amp;#039; son unha característica distintiva dos sistemas GNU/Linux. Un cauce conecta a saída estándar da orde que aparece á esquerda do símbolo &amp;#039;&amp;#039;&amp;#039;|&amp;#039;&amp;#039;&amp;#039; coa entrada estándar da orde que aparece á dereita. O fluxo de información entre ambas ordes realízase ao través do kernel do sistema operativo. &lt;br /&gt;
: No seguinte exemplo, no que empregamos a orde &amp;#039;&amp;#039;&amp;#039;who&amp;#039;&amp;#039;&amp;#039;, xérase un informe ordenado alfabéticamente dos usuarios que se atopan conectados actualmente no sistema:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ who | sort&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Combinando ordes con ()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: En ocasións, necesítase aillar un cauce ou unha &amp;quot;secuencia de punto e coma&amp;quot; do resto dunha liña de ordes. Para ilustralo vexamos un exemplo no que empregamos a orde &amp;#039;&amp;#039;&amp;#039;date&amp;#039;&amp;#039;&amp;#039;, que informa da data e hora do sistema, e a orde &amp;#039;&amp;#039;&amp;#039;wc&amp;#039;&amp;#039;&amp;#039;, que mostra un número de liñas, palabras e caracteres dun arquivo que se pasa como argumento, xunto coa orde &amp;#039;&amp;#039;&amp;#039;who&amp;#039;&amp;#039;&amp;#039; empregada no exemplo anterior: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ date ; who&lt;br /&gt;
vie jul 8 17:16:07 CEST 2011&lt;br /&gt;
gonzalo tty1 2011-07-08 16:54&lt;br /&gt;
gonzalo pts/0 2011-07-0 16:54 (:0.0)&lt;br /&gt;
$ (date ; who) | wc&lt;br /&gt;
   3   15   115&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Executando ordes en segundo plano con &amp;amp;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: GNU/Linux permite a execución de ordes dende o Shell, denominada execución en primeiro plano (&amp;#039;&amp;#039;foreground&amp;#039;&amp;#039;), ou desligadas do indicador, chamada execución en segundo plano (&amp;#039;&amp;#039;background&amp;#039;&amp;#039;). No primeiro caso, o indicador non aparece ata que finalizou a orde actual. No segundo, o indicador aparece inmediatemente, o que permite executar outras ordes ainda que a que se lanzou no segundo plano non rematara.&lt;br /&gt;
: Para executar unha orde en segundo plano, basta con finalizar a liña de ordes con &amp;#039;&amp;#039;&amp;#039;&amp;amp;&amp;#039;&amp;#039;&amp;#039;. O Shell responde a este carácter indicando o número de traballo que se lanzou (aparece entre corchetes), seguido do identificador do proceso que executa a orde.&lt;br /&gt;
: No seguinte exemplo lánzase, en segundo plano, o editor &amp;#039;&amp;#039;&amp;#039;gedit&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ gedit &amp;amp;&lt;br /&gt;
[1] 5650&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Executando condicional de ordes con || e &amp;amp;&amp;amp;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: A Shell subministra dous metacaracteres que permiten a execución condicional de ordes baseada no estado de finalización. Separar dúas ordes con &amp;#039;&amp;#039;&amp;#039;||&amp;#039;&amp;#039;&amp;#039; ou con &amp;#039;&amp;#039;&amp;#039;&amp;amp;&amp;amp;&amp;#039;&amp;#039;&amp;#039; provoca que a Shell comprobe o estado de finalización da primeira e execute a segunda só si a primeira faia ou ten éxito.&lt;br /&gt;
: Vexamos uns exemplos, onde sería interesante repasar a función [[Programaci%C3%B3n_Bash#grep|grep]]:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ who | grep root || echo &amp;quot;root non está conectado&amp;quot;&lt;br /&gt;
root non está conectado&lt;br /&gt;
$ who | grep gonzalo &amp;amp;&amp;amp; echo &amp;quot;Usuario gonzalo conectado&amp;quot;&lt;br /&gt;
gonzalo tty1    2011-10-10 08:42&lt;br /&gt;
Usuario gonzalo conectado&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=== Metacaracteis de nomes de arquivo ===&lt;br /&gt;
Estes metacaracteres utilízanse para formar patróns de igualación para a substitución de nomes de arquivos, co obxecto de poder referenciar de forma abreviada unha serie de arquivos con nomes que seguen un patrón.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Igualando un carácter simple con ?&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: É moi frecuente crear arquivos con algún patrón como parte do seu nome, sobre todo en procesamento por lotes. Así, por exemplo, se queremos obter información dos arquivos con &amp;#039;&amp;#039;&amp;#039;ls&amp;#039;&amp;#039;&amp;#039;, podemos empregar a orde:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -l arquivo?&lt;br /&gt;
... arquivo1&lt;br /&gt;
... arquivo2&lt;br /&gt;
... arquivo3&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Igualando cero ou mais caracteres con *&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: Có metacarácter &amp;#039;&amp;#039;&amp;#039;*&amp;#039;&amp;#039;&amp;#039; pódense igualar cero o mais caracteres. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -l arq*&lt;br /&gt;
... arquivo1&lt;br /&gt;
... arquivo2&lt;br /&gt;
... arquivo3&lt;br /&gt;
... arquiv01&lt;br /&gt;
... arquiv02&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Igualando cero ou mais caracteres con []&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: Os corchetes definen unha lista ou clase de caracteres, que se poden igualar con un único carácter. Vexamos algunhas formas de caracterizar grupos de arquivos:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Exemplo&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Descrición&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; style=&amp;quot;width:130px&amp;quot; | [A-Z]*&lt;br /&gt;
|Iguala todos os arquivos con nomes que comecen por unha letra maiúscula.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | *[aeiou]&lt;br /&gt;
|Iguala calquera arquivo con nomes que finalicen cunha vogal.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | tema.*[13579]&lt;br /&gt;
|Iguala os temas con nomes que finalicen cun número impar.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | tema.0[1-3]&lt;br /&gt;
|Iguala tema.01, tema.02 e tema.03.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | [A-Za-z][0-9]*&lt;br /&gt;
|Iguala os arquivos que teñan nomes que comecen cunha letra (maiúscula ou minúscula) seguida dun díxito e cero ou mais caracteres.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Abreviando nomes de arquivos con {}&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: O uso das chaves ({}), solas ou combinadas cós anteriores caracteres especiais (?, *, []), permite formar expresións de nomes de arquivos mais complexos. As chaves conteñen unha lista de un ou mais caracteres separados por comas. Cada ítem da lista utilízase en turnos para expandir un nome de arquivo que iguala a expresión completa na que están inmersas as chaves.&lt;br /&gt;
: Por exemplo, a{f,d,e}b expándese en afb, adb e aeb.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Abreviación do directorio home con ~&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Cando se utiliza o tilde (~), o Shell substitúea polo camiño absoluto do directorio /home. O tilde pode ser seguido do nome dun usuario do sistema. Nese caso, o Shell substitúea polo camiño do directorio home dese usuario.&lt;br /&gt;
&lt;br /&gt;
=== Metacaracteis de citación ===&lt;br /&gt;
Existen tres metacaracteis de citación, que se utilizan para controlar cando deben protexerse o resto de metacaracteres da expansión ou interpretación do Bash. Denomínase &amp;#039;&amp;#039;&amp;#039;expansión&amp;#039;&amp;#039;&amp;#039; ao procedemento polo que a Shell substitúe por unha lista a ocorrencia dun carácter especial. A utilización correcta destes caracteres permite a construción de scripts mais complexos.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Eludir metacaracteis con \&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: Cando a Shell procesa unha orde, o primeiro que fai é expandir os metacaracteis, de forma que se substitúen polos seus respectivos valores para que, na execución, aparezan os valores, non os metacaracteis. &amp;quot;Eludir&amp;quot; metacaracteis significa evitar a súa interpretación pola Shell, de forma que estes permanezan na liña de ordes para ser procesados na execución.&lt;br /&gt;
: Vexamos uns exemplos:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ sincomas=&amp;quot;Sin comas&amp;quot;&lt;br /&gt;
$ echo $sincomas&lt;br /&gt;
Sin comas&lt;br /&gt;
$ concomas=\&amp;quot;Comas\&amp;quot;&lt;br /&gt;
$ echo $concomas&lt;br /&gt;
&amp;quot;Comas&amp;quot;&lt;br /&gt;
$ echo *&lt;br /&gt;
Descargas Documentos Escritorio Imágenes&lt;br /&gt;
$ echo \*&lt;br /&gt;
*&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Protexendo metacaracteis con &amp;quot;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: A barra invertida só protexe o carácter que lle segue inmediatamente, polo que si se queren protexer varios caracteres, cada un debería ir precedido dunha barra invertida (\), o que non é nada cómodo para protexer cadeas longas. Para protexer a cadea completa, utilízanse as comiñas dobres, as cales desactivan o significado especial dos caracteres entre elas, salvo os de &amp;#039;&amp;#039;&amp;#039;!evento&amp;#039;&amp;#039;&amp;#039; e &amp;#039;&amp;#039;&amp;#039;$var&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ usuario=Patricia&lt;br /&gt;
$ echo &amp;quot;**** Hola $usuario ****&amp;quot;&lt;br /&gt;
**** Hola Patricia **** &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Protexendo ordes, variables e metacaracteis con ′&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: As comiñas simples son parecidas as comiñas dobres. Desactivan o significado especial de algúns caracteres, salvo a expansión da historia de ordes (!evento).&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ texto=&amp;quot;primeira variable&amp;quot;&lt;br /&gt;
$ dentro=&amp;quot;valor da $texto&amp;quot;&lt;br /&gt;
echo $dentro&lt;br /&gt;
$ dentro=&amp;#039;valor da $texto&amp;#039;&lt;br /&gt;
$ echo $dentro&lt;br /&gt;
$ &amp;#039;!ola&amp;#039;&lt;br /&gt;
!ola: orden no encontrada&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Metacaracteis de entrada/saída ou de redirección ===&lt;br /&gt;
Á hora de crear cauces, Unix herda tres ficheiros especiais da linguaxe de programación C, que representan as funcións de entrada e saída de cada programa. Estes son:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Entrada estándar.&amp;#039;&amp;#039;&amp;#039; Por defecto, procede do teclado; abre o ficheiro descritor &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;stdin&amp;#039;&amp;#039;) para lectura.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Saída estándar.&amp;#039;&amp;#039;&amp;#039; Por defecto, diríxese cara a pantalla; abre o ficheiro descritor &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;stdout&amp;#039;&amp;#039;) para escritura.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Saída de erro.&amp;#039;&amp;#039;&amp;#039; Por defecto, diríxese cara a pantalla; abre o ficheiro descritor &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;stderr&amp;#039;&amp;#039;) para escritura e control das mensaxes de erro.&lt;br /&gt;
&lt;br /&gt;
O proceso de redirección permite facer unha copia destes ficheiros especiais cara ou dende outro ficheiro normal. Tamén poden asignarse os descritores de ficheiros do 3 ao 9 para abrir outros tantos arquivos, tanto de entrada como de saída.&lt;br /&gt;
&lt;br /&gt;
O ficheiro especial &amp;#039;&amp;#039;&amp;#039;/dev/null&amp;#039;&amp;#039;&amp;#039; emprégase para descartar algunha redirección e ignorar os seus datos.&lt;br /&gt;
&lt;br /&gt;
Ademais, é posible misturar os fluxos de información da saída e erro estándares para que saian xuntos (polo mesmo descritor de arquivo, o 1).&lt;br /&gt;
&lt;br /&gt;
Os metacaracteis de entrada/saída ou redirección podémolos ver na seguinte táboa:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Metacarácter&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Descrición da función&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; style=&amp;quot;width:150px&amp;quot; | &amp;lt; ficheiro&lt;br /&gt;
|Redirecciona a entrada dunha orde para ler do ficheiro.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | &amp;gt; ficheiro&lt;br /&gt;
|Redirecciona a saída dunha orde para escribir no ficheiro. Se o ficheiro existe, o sobreescribe.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | &amp;gt;| ficheiro&lt;br /&gt;
|Como no caso anterior, pero o ficheiro debe existir previamente.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | &amp;gt;&amp;amp; ficheiro&lt;br /&gt;
|A saída de &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; combínase con &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; e se escriben no ficheiro.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt; ficheiro&lt;br /&gt;
|A saída da orde se engade ao final do ficheiro.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | &amp;gt;&amp;gt;&amp;amp; ficheiro&lt;br /&gt;
|Engade a saída &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; combinada con &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; ao final do ficheiro.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | [N]&amp;lt;&amp;gt; ficheiro&lt;br /&gt;
|Redirección de entrada/saída entre o ficheiro e o arquivo con descritor &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | &amp;lt;&amp;lt;[-]delimitador&lt;br /&gt;
Texto ... delimitador&lt;br /&gt;
|Emprega o propio Shell &amp;#039;&amp;#039;script&amp;#039;&amp;#039; como entrada estándar, ata a liña onde se atopa o delimitador.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | |&lt;br /&gt;
|Crea un cauce entre dúas ordes. A saída estándar da orde da esquerda do símbolo conéctase á entrada estándar da orde da dereita do símbolo.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | |&amp;amp;&lt;br /&gt;
|Crea un cauce entre dúas ordes, coas saídas &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; e &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; da orde da esquerda combinadas e conectadas na entrada da orde da dereita.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Combinación de redireccións&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: Pódese combinar mais dunha redirección sobre a mesma orde ou grupo de ordes, interpretándose sempre de esquerda a dereita.&lt;br /&gt;
: Sería interesente interpretar as seguintes ordes:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -al /usr /tmp /noexiste &amp;gt;ls.sal 2&amp;gt;ls.err&lt;br /&gt;
$ find /tmp -print &amp;gt;find.sal 2&amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
: Outra forma de combinar redireccións é realizar copias de descritores de ficheiros de entrada ou saída. A seguinte táboa mostra os formatos para duplicar descritores.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Metacarácter&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Descrición da función&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; style=&amp;quot;width:150px&amp;quot; | [N]&amp;lt;&amp;amp;M&lt;br /&gt;
|Redirecciona a entrada dunha orde para ler do ficheiro.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | [N]&amp;lt;&amp;amp;-&lt;br /&gt;
|Redirecciona a saída dunha orde para escribir no ficheiro. Se o ficheiro existe, o sobreescribe.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | [N]&amp;lt;&amp;amp;M-&lt;br /&gt;
|Como no caso anterior, pero o ficheiro debe existir previamente.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | [N]&amp;gt;&amp;amp;M&lt;br /&gt;
|A saída de &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; combínase con &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039;e se escriben no ficheiro.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | [N]&amp;gt;&amp;amp;-&lt;br /&gt;
|A saída da orde se engade ao final do ficheiro.&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | [N]&amp;gt;&amp;amp;M-&lt;br /&gt;
|Engade a saída &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; combinada con &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; ao final do ficheiro.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
: Convén facer notar que, seguindo as normas anteriores, as dúas liñas seguintes son equivalentes e ambas serven para almacenar as saídas normal e de erro no ficheiro indicado:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -al /var/* &amp;amp;&amp;gt;ls.txt&lt;br /&gt;
$ ls -al /var/* &amp;amp;&amp;gt;ls.txt 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
: Con todo, o seguinte exemplo mostra dúas ordes que &amp;#039;&amp;#039;&amp;#039;NON teñen que dar o mesmo resultado,&amp;#039;&amp;#039;&amp;#039; xa que as redireccións se procesan de esquerda a dereita, tendo en conta os posibles duplicados de descritores feitos nas liñas anteriores.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ ls -al * &amp;gt;ls.txt 2&amp;gt;&amp;amp;1&lt;br /&gt;
# Saída normal e de erro a &amp;quot;ls.txt&amp;quot;&lt;br /&gt;
$ ls -al * 2&amp;gt;&amp;amp;1 &amp;gt;ls.txt&lt;br /&gt;
# Asigna a saída de erro á normal anterior&lt;br /&gt;
# e logo manda a saída estándar a &amp;quot;ls.txt&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Variables de entorno ==&lt;br /&gt;
Ao igual que calquera outro proceso, a Shell mantén un conxunto de variables que informan sobre o seu propio contexto de operación. O usuario (ou un &amp;#039;&amp;#039;script&amp;#039;&amp;#039;) pode actualizar e engadir variables, exportando os seus valores ao contorno do intérprete (comando &amp;#039;&amp;#039;&amp;#039;export&amp;#039;&amp;#039;&amp;#039;), o que afectará tamén a todos os procesos fillos xerados por el. O administrador pode definir variables de entorno estáticas para usuarios do sistema.&lt;br /&gt;
&lt;br /&gt;
Na seguinte táboa aparecen as variables de entorno que ten o sistema.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; &lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Variable de entorno&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Descrición&lt;br /&gt;
! style=&amp;quot;background:#ffdead;&amp;quot; | Valor por omisión&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; style=&amp;quot;width:150px&amp;quot; | DISPLAY&lt;br /&gt;
|Donde aparecen as saídas de X-Windows.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | EDITOR&lt;br /&gt;
|Editor empregado por defecto.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | FUNCNAME&lt;br /&gt;
|Nome da función que se está executando.&lt;br /&gt;
|O modifica a Shell&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | HOME&lt;br /&gt;
|Directorio persoal da conta.&lt;br /&gt;
|O define &amp;#039;&amp;#039;root&amp;#039;&amp;#039; (superusuario)&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | HOSTNAME&lt;br /&gt;
|Nome da máquina.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | IFS&lt;br /&gt;
|Engade a saída &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; combinada con &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; ao final do ficheiro.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | LANG&lt;br /&gt;
|Redirección de entrada/saída entre o ficheiro e o arquivo con descritor &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | LINENO&lt;br /&gt;
|Emprega o propio Shell &amp;#039;&amp;#039;script&amp;#039;&amp;#039; como entrada estándar, ata a liña onde se atopa o delimitador.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | LOGNAME&lt;br /&gt;
|Crea un cauce entre dúas ordes. A saída estándar da orde da esquerda do símbolo conéctase á entrada estándar da orde da dereita do símbolo.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | OLDPWD&lt;br /&gt;
|Crea un cauce entre dúas ordes, coas saídas &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; e &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; da orde da esquerda combinadas e conectadas na entrada da orde da dereita.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | PATH&lt;br /&gt;
|Crea un cauce entre dúas ordes, coas saídas &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; e &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; da orde da esquerda combinadas e conectadas na entrada da orde da dereita.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | PPID&lt;br /&gt;
|Crea un cauce entre dúas ordes, coas saídas &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; e &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; da orde da esquerda combinadas e conectadas na entrada da orde da dereita.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | PS1 ... PS4&lt;br /&gt;
|Crea un cauce entre dúas ordes, coas saídas &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; e &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; da orde da esquerda combinadas e conectadas na entrada da orde da dereita.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | PWD&lt;br /&gt;
|Crea un cauce entre dúas ordes, coas saídas &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; e &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; da orde da esquerda combinadas e conectadas na entrada da orde da dereita.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | SHELL&lt;br /&gt;
|Crea un cauce entre dúas ordes, coas saídas &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; e &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; da orde da esquerda combinadas e conectadas na entrada da orde da dereita.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | TERM&lt;br /&gt;
|Crea un cauce entre dúas ordes, coas saídas &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; e &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; da orde da esquerda combinadas e conectadas na entrada da orde da dereita.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; | USER&lt;br /&gt;
|Crea un cauce entre dúas ordes, coas saídas &amp;#039;&amp;#039;stderr&amp;#039;&amp;#039; e &amp;#039;&amp;#039;stdout&amp;#039;&amp;#039; da orde da esquerda combinadas e conectadas na entrada da orde da dereita.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== O comando echo ==&lt;br /&gt;
&lt;br /&gt;
=== Un toque de cor ===&lt;br /&gt;
&lt;br /&gt;
Ollo a este script:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
# Este ficheiro saca por pantalla un montón de códigos de cor&lt;br /&gt;
# para demostrar que hai dispoñible. Cada liña é unha cor&lt;br /&gt;
# fondo negro e gris, có código en medio. Funciona sobre&lt;br /&gt;
# fondos brancos, negros e verdes &lt;br /&gt;
#&lt;br /&gt;
echo &amp;quot;  Sobre gris claro:        Sobre negro:&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[1;37m  Blanco        &lt;br /&gt;
    \033[0m\  1;37m \   &lt;br /&gt;
    \033[40m\033[1;37m  Blanco        &lt;br /&gt;
    \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[37m  Gris Claro    &lt;br /&gt;
    \033[0m\  37m \&lt;br /&gt;
    \033[40m\033[37m  Gris Claro    &lt;br /&gt;
    \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[1;30m  Gris&lt;br /&gt;
     \033[0m\  1;30m \&lt;br /&gt;
     \033[40m\033[1;30m  Gris&lt;br /&gt;
      \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[30m  Negro&lt;br /&gt;
      \033[0m\  30m \&lt;br /&gt;
      \033[40m\033[30m  Negro   &lt;br /&gt;
      \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[31m  Rojo &lt;br /&gt;
      \033[0m\  31m \&lt;br /&gt;
      \033[40m\033[31m  Rojo      &lt;br /&gt;
      \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[1;31m  Rojo Claro  &lt;br /&gt;
      \033[0m\  1;31m \&lt;br /&gt;
      \033[40m\033[1;31m  Rojo Claro   &lt;br /&gt;
      \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[32m  Verde   &lt;br /&gt;
      \033[0m\  32m \&lt;br /&gt;
      \033[40m\033[32m  Verde    &lt;br /&gt;
      \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[1;32m  Verde Claro &lt;br /&gt;
      \033[0m\   1;32m \&lt;br /&gt;
      \033[40m\033[1;32m  Verde Claro &lt;br /&gt;
      \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[33m  Marrón   &lt;br /&gt;
      \033[0m\   33m \&lt;br /&gt;
      \033[40m\033[33m  Marrón   &lt;br /&gt;
      \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[1;33m  Amarillo  &lt;br /&gt;
      \033[0m\   1;33m \&lt;br /&gt;
      \033[40m\033[1;33m  Amarillo  &lt;br /&gt;
      \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[34m  Azul    &lt;br /&gt;
      \033[0m\  34m \&lt;br /&gt;
      \033[40m\033[34m  Azul   &lt;br /&gt;
      \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[1;34m  Azul Claro &lt;br /&gt;
      \033[0m\  1;34m \&lt;br /&gt;
      \033[40m\033[1;34m  Azul Claro  &lt;br /&gt;
      \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[35m  Púrpura  &lt;br /&gt;
       \033[0m\   35m \&lt;br /&gt;
       \033[40m\033[35m  Púrpura     &lt;br /&gt;
       \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[1;35m  Rosa    &lt;br /&gt;
       \033[0m\  1;35m \&lt;br /&gt;
       \033[40m\033[1;35m  Rosa       &lt;br /&gt;
       \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[36m  Cyan    &lt;br /&gt;
       \033[0m\   36m \&lt;br /&gt;
       \033[40m\033[36m  Cyan      &lt;br /&gt;
       \033[0m&amp;quot;&lt;br /&gt;
echo -e &amp;quot;\033[47m\033[1;36m  Cyan Claro  &lt;br /&gt;
       \033[0m\  1;36m \&lt;br /&gt;
       \033[40m\033[1;36m  Cyan Claro   &lt;br /&gt;
       \033[0m&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
: E a súa saída é a seguinte:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:coloresbash.gif]]&lt;/div&gt;</summary>
		<author><name>Vieites</name></author>
	</entry>
</feed>