Vous êtes sur la page 1sur 8

Elshellbash

1.Funcin
Aunque las distribuciones recientes de Linux permiten saltarse la introduccin de instrucciones de texto al ofrecer
entornosgrficosatractivos,unprofesionaldeLinuxnopuedeobviarelfuncionamientodelintrpretedecomandosy
delosprincipalescomandosasociados.
El intrprete de comandos, o simplemente intrprete, ejecuta las instrucciones introducidas con el teclado o en un
scriptyledevuelvelosresultados.Esteintrpreteesunprogramacomnmentellamadoshell.Sepuedeaproximara
lapalabrakernelquevimosantes:elkernelsignificancleo.Amenudo,estrodeadodeunaconchadura(pienseen
unhuesodealbaricoqueomelocotn).Como"shell"significa concha,vieneadecirqueesloquerodeaalncleode
Linux: se utiliza mediante comandos. Por lo tanto, es una interfaz que funciona en modo texto entre el ncleo de
Linuxylosusuarios(avanzados)olasaplicaciones.
Hay varios shells: cada uno dispone de especificaciones propias. El Bourne Shell (sh) es el shell ms conocido y
habitual en los Unix. El CShell (csh) retoma la estructura del lenguaje C. El Korn Shell (ksh) es una evolucin del
BourneShell.ElZShell(zsh)esasuvezunaevolucindelKornShell.ElshelldereferenciaenLinuxsellamaBourne
Again Shell (bash). A continuacin le presentamos una lista exhaustiva de intrpretes de comandos que puede
encontrarenLinux:

sh:ThompsonShell(yanoexiste)

sh:BourneShell(sustituyalanterior)

bash:BourneAgainShell

ksh:KornShell

csh:CShell

zsh:ZShell

tcsh:TenexCShell

ash:AShell

dash:DebianAlmquistShell.

LalistadelosshellsdisponiblesensuinstalacindeLinuxestenelarchivo/etc/shells.

2.Bash:elshellpordefecto
a.Unshellpotenteylibre
ElbashesunderivadodeBourneShell.Bourneeselnombredelprincipalprogramadordeesteshell.Laexpresin
"Bourne Again" es un guio a los orgenes del bash (Bourne) y un juego de palabras en "I born again", lo que
significa"henacidootravez"o"reencarnado".Elbashretomashperotambinfuncionalidadesdekshochs.
ElbashnosloestenLinux.Alserunprogramalibre,sepuedecompilaroejecutarennumerosasplataformas.Es
elshelldereferenciaenlossistemasMacOSXyexistetambinparaWindows.
El shell funciona en un terminal. Originalmente, un terminal es una verdadera mquina que slo dispone de lo
necesario para introducir instrucciones (el teclado) y visualizar los resultados (una pantalla o incluso hace mucho
tiempo una simple impresora con papel listado). Aunque en la actualidad an existan terminales fsicos, en

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 1-

mquinascorrienteshansidosustituidosporprogramasqueemulanterminales. Sedistinguendostiposdeellosen
Linux:

lasconsolasvirtualesdetexto,elmodopordefectodeLinuxcuandoarrancaofuncionabajoentornogrfico

las consolas o terminales grficos, como xterm, eterm o konsole, que son emuladores de terminales en el seno de
ventanasgrficas.

Elshellfuncionaenunterminal.Esperaentradasportecladoenlaconsolaolaventana,yvisualizasusresultados
en el mismo lugar. Cualquier usuario avanzado de Linux o Unix en general tiene al menos un terminal abierto
permanentemente. La apertura de un terminal (o consola, en este caso estas palabras son sinnimas) ejecuta
automticamenteelshellpordefecto.

b.Lneadecomandos
Elshellesperaentradasporeltecladoenunalneallamadalneadecomandosoprompt.Uncursor,representado
porunrectngulofijo,intermitenteouncarctersubrayado,indicalaposicinactualdesuentrada.
Lalnea(prompt)proporcionainformacinenelterminalysuposicinenelsistemadearchivos.

seb@slyserver:/home/public>

seb@slyserver:/home/public$

Enestaclsicalnea,obtienecuatrodatos:

seb:eselnombredeiniciodesesinologindelusuarioactualmenteconectadoalterminal

slyserver:eselnombredeanfitrin(hostname),elnombrelgicodelamquinaconectadaalterminal

/home/public:eslaposicinactualdelshellenelsistemadearchivos

>o$:eslaterminacinestndardelbashparaunusuariosinprivilegios.

Esta lnea le informa de que el usuario sin privilegios de administracin seb es el que utiliza el terminal (est
conectado)enlamquinaslyserveryqueseencuentraactualmenteen/home/public.
Elcarcterdeterminacinpuedetenerotrossignificados:

$indicaqueelusuarionotieneprivilegiosparticulares,comocon>.

#indicaqueelusuarioeseladministradorrootquetienetodoslosprivilegios.

Larutapuedevariar:
seb@slyserver:~$:elcarctertilde~indicaqueseencuentraensudirectoriopersonal.
seb@slyserver:~/test$: al combinarse con ~ (su directorio personal), indica que est en el subdirectorio test de
ste.
LalneadecomandosepuedepersonalizarmodificandounavariabledeentornollamadaPS1.
Para cualquier otra ruta se suele sustituir la lnea de comandos por un simple smbolo de dlar, $, con el fin de

- 2-

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

ganarespacio.

3.Utilizarelshell
a.Laintroduccindedatos
Enelterminal,eltecladoseutilizadeformaintuitiva.Puededesplazarseenlalneaconlasflechasdederechae
izquierda del teclado y borrar caracteres con las teclas [Tab] y [Supr]. Ejecute el comando que ha introducido
presionandolatecla[Entrar].
Hayvariosmtodosabreviadosquesonprcticos:

[Ctrl]A:iralprincipiodelalnea.

[Ctrl]E:iralfinaldelalnea.

[Ctrl]L:borrarelcontenidodelterminal,ymostrarlalneadecomandosenlapartesuperior.

[Ctrl]U:borrarlalneahastaelprincipio.

[Ctrl]K:borrarlalneahastaelfinal.

Ha llegado la hora de probar comandos. El comando date indica la fecha y la hora actuales. Por supuesto no
obtendrelmismoresultado,ynosiempreenelmismoidiomadependedesuinstalacindeLinux.

$ date
mi nov 19 18:46:37 CET 2014

Uncomandoprctico,pwd,permitesaberenqudirectorioest.

$ pwd
/home/jolivares

Elshellindicaqueesteneldirectorio/home/jolivares.

b.Sintaxisgeneraldeloscomandos
Loscomandosoinstrucciones(lasdospalabrassonsinnimasenestecaso)GNUtienenamenudounasintaxiscon
lamismaestructura:

Comando [parmetros] [argumentos]

Uncomandopuedenotenerniparmetrosniargumentos.Enestecaso,ejecutalaaccinpordefectoparalacual
seprogram,omuestraunmensajedeerror,dehaberlo.
Unparmetroesunaopcindelcomando.Lasdospalabrassonsinnimasaqu.Amenudoesunasimpleletrao
una simple cifra precedida de un guin: -l, -p, -s, etc. Si el comando acepta varios parmetros, los puede

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 3-

introducir unos tras otros separndolos por espacio: -l

-r -t, o escribiendo un solo guin y luego todos los

parmetros: -lrt. Se aceptan las dos sintaxis: producen el mismo resultado. Simplemente, la segunda es ms
corta.

En ciertos casos, un parmetro necesita un argumento, por ejemplo un nombre de archivo. En este caso, es
preferible separar este parmetro de los dems:
parmetros:-lrtf

-lrt -f miarchivo

o de ubicarlo al final de los

miarchivo.

Los argumentos son los valores en los que un comando debe ejecutar su accin. El tipo de valor (archivo, texto,
nmeros)dependedelcomando.

c.Primerejemploconcretoconcal
Tomemos el ejemplo del comando cal. Admite varios parmetros y argumentos. Si se le invoca sin argumentos,
muestraelcalendariodelmesencursoyresaltaeldaactual.

$ cal
Noviembre 2014
do lu ma mi ju vi s
1
2

9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

El comando cal admite dos argumentos opcionales. Si se precisa slo uno, se trata del ao, y se muestra el
calendariodeeseaoensutotalidad.Siseleindicandosargumentos,elprimeroeselmeselsegundo,elao.

$ cal 12 1975
diciembre 1975
do lu ma mi ju vi s
7

9 10 11 12 13

14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

El comando admite tambin unos parmetros. Observar que por defecto se prev la visualizacin para los
anglosajones: la primera columna es un domingo, que representa el primer da de la semana. En Espaa, es el
lunes.Elparmetro-m(demonday,eningls)permiteprecisarlo:

$ cal -m 12 1975
diciembre 1975
lu ma mi ju vi s do
1

9 10 11 12 13 14

15 16 17 18 19 20 21

- 4-

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

22 23 24 25 26 27 28
29 30 31

Un segundo parmetro -3 permite visualizar los meses que preceden y siguen al mes determinado (o el mes en
curso).

jolivares@slyserver:~> cal -m -3 12 1975


noviembre 1975

diciembre 1975

lu ma mi ju vi s do
3

enero 1976

lu ma mi ju vi s do

9 10 11 12 13 14

lu ma mi ju vi s do

7
5

9 10 11

10 11 12 13 14 15 16

15 16 17 18 19 20 21

12 13 14 15 16 17 18

17 18 19 20 21 22 23

22 23 24 25 26 27 28

19 20 21 22 23 24 25

24 25 26 27 28 29 30

29 30 31

26 27 28 29 30 31

Ycomopuedeagruparlosparmetros,elcomandosiguienteproduceelmismoresultado.

$ cal -m3 12 1975

d.Encadenarloscomandos
Puedeejecutarvarioscomandosenunasolalnea,unostrasotros.Paraello,bastaconsepararlosconunpuntoy
coma.

$ date;pwd;cal
lun feb 25 22:29:09 CET 2008
/usr/share/man/man9
febrero 2008
do lu ma mi ju vi s
3

10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29

e.Visualizartextoconecho
No hay nada ms sencillo que visualizar texto. El comando echo est hecho para ello. Como casi todos los
comandos,aceptalosparmetros,ademsdelosargumentos,enformadetexto.Paravisualizaruntextosencillo:

$ echo Hola amigos


Hola amigos

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 5-

Puedecolocareltextoentrecomillasosimplesapstrofesparaaclararyagrupareltextoquevaavisualizar. Podr
vermsadelantequeestotieneunsignificadoparticular.
Observeque,pordefecto,sutextosevisualizayechoefectasolounretornodecarroparaempezarotralnea.
Puedemodificarsutextoparaaadirlesecuenciasdecaracteresquetienenunaaccinparticular.Siyaconoceel
lenguajeC,sonlasmismas.Enlalistaseencuentranslolasmsutilizadas:

Secuencia

Accin

\n

Pasaralalnea

\t

Tabulacinhorizontal

\c

Suprimirelsaltodelneafinal

\b

Retornodeuncarcteratrs

\\

Visualizalabarraoblcua

\nnn

Visualizaelcarcterespecificadoenoctal

Parautilizarestassecuencias,aadaelargumento-e:

$ echo -e "Hola.\tMe llamo Javier\b\b\bNadie\n"


Hola. Me llamo Nadie

f.Comandosinternosyexternos
Existendostiposdecomandos:

Loscomandosexternossonprogramasbinariospresentescomoarchivosensudiscoduro(ocualquier otrosoporte
dedatos).Cuandoejecutaelcomando,secargaestearchivoenmemoriayseiniciacomoproceso(estanocinse
explicarenestemismocaptulo).

Loscomandosinternossondelproprioshellyseejecutanenl.Estoscomandosformanpartedelprogramashell,el
bash. Los comandos cd o pwd son dos ejemplos de comandos internos. Cuando los ejecuta, el shell ejecuta las
funcionesdefinidasensuinteriorquelescorresponden.

Puededistinguiruncomandointernodeuncomandoexternoconlaayudadelcomandointernotype.As,datees
uncomandoexterno.Puedeobservarqueesunarchivopresenteen/bin,mientrasquepwdesinternoalshell.

$ type date
date is /bin/date
$ type pwd
pwd es una orden interna del shell

Tambinpuedeencontrarotrostipos,comolosaliasdecomandosquesonatajosdecomandospropiosdelshell.As
elshellbashdeciertasdistribucionesLinuxproponenaliascomoll,quecorrespondeenrealidadalsl.

$ type ll

- 6-

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

ll is aliased to `ls -l

g.Algunosatajostiles
Sedebenconoceralgunassecuenciasdeatajosdecomandos:

[Ctrl]C:interrupcindelprograma:setermina.

[Ctrl]Z:paraelprograma(verlosprocesos).

[Ctrl]D:interrumpeunaintroduccindedatosenunsmbolodelsistema>.

4.Elhistorialdecomandos
Leresultarmuytilpodervolverallamarauncomandoqueyaejecutnavegandoporelhistorialdeloscomandos
con las teclas [Flecha arriba] y [Flecha abajo]. La flecha arriba vuelve atrs en el historial. Si ha tecleado los dos
comandosanteriores(dateyluegopwd),alpresionarunaprimeravezenlaflecha arribasevisualizaenlalneade
comandospwd,yalasegundasevisualizaelcomandodate.Laflechaabajonavegaenelotrosentidohastalalnea
deorigen.Sipulsalatecla[Entrar]vuelveaejecutarelcomando.
Cuantos ms comandos teclee, ms se ampla el historial. El shell conserva as un gran nmero de entradas en el
historial(sepuedemodificarelnmerodelneasguardadas).Estehistorialseconservaenunarchivocachdesu
directoriopersonalllamado.bash_history.Puedeverelcontenidodelhistorialconelcomandohistory.Elresultado
siguienteesttruncadodemaneravoluntaria,yaquelalistaesdemasiadolarga.

$ history
...
1000

date

1001

pwd

1002

uname -a

1003

ls

1004

fc -l -5

1005

history

Elcomandofcfuncionacomohistorycuandoseutilizaconelparmetro-l.Pordefecto,selimitaalosltimosquince
comandos.Tambinpuedepasarelnmerodeltimoscomandos,comoacontinuacinparalosdiezltimos:

$ fc -l -10
995

ssh -X seb@192.168.1.130

996

fc -l

997

fc -l -20

998

ls

999

pwd

1000

cd

1001

uname -a

1002

fc -l

1003

cat /etc/passwd

1004

ls -lrtR

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 7-

Puede volver a llamar a un comando con fc y el parmetro -s seguido del nmero del comando. Entonces se
ejecutardemaneraautomtica.

$ fc -s 1001
uname -a
Linux slyserver 2.6.22.17-0.1-default #1 SMP 2008/02/10 20:01:04 UTC
x86_64 x86_64 x86_64 GNU/Linux

Finalmente,puedesustituirunelementodelcomandoporotroantesdeejecutarlo.Porejemplo,puedesustituir fc
porlsenlaentrada1002delhistorial:

$ fc -s fc=ls 1002
ls -l
total 775944
-rw-r--r--

1 seb users

15391 may 14

2007 AR-1179161176460.pdf

...

- 8-

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

Vous aimerez peut-être aussi