SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Uso avanzado de la línea de comandos Octavio H. Ruiz Cervera Campus Party 2009 México, D.F.
Patrocinan
Resumen La familiarización así como la productividad del usuario en un ambiente *NIX, están intrínsecamente relacionados con el conocimiento y aprovechamiento de las características de la interfaz básica que le otorga el sistema: La shell. Entre las características principales de Bash -el intérprete de comandos predeterminado de los sistemas GNU- se encuentran el control de trabajos; auto-completar; las expansiones (aritméticas, de variables, etc.); el historial; la edición y reingreso de comandos; entre otras. Particularmente más allá de ser la capa entre usuario y núcleo del sistema operativo, así como de sus características en esta relación, Bash es un poderoso lenguaje de programación en el cual bajo el contexto de «lanzador de programas», prácticamente cualquier utilidad o herramienta del repertorio de comandos UNIX, puede ser invocada desde un programa de shell, facilitando tareas de administración del sistema y trabajos repetitivos de rutina. Esta presentación proveerá al asistente una guía fácil para aprovechar las principales características de Bash como lenguaje de programación y lanzador de programas en el uso diario de sistemas *NIX.
Introducción ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Bash ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Bash ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Bash ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Descriptores de archivos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Redirecciones y tuberías ,[object Object],[object Object],[object Object],[object Object],[object Object],[email_address]   ~ $  comando > archivo [email_address]   ~ $  comando | comando [email_address]   ~ $  comando 2> archivo [email_address]   ~ $  comando 1> archivo 2>&1 [email_address]   ~ $  comando &> archivo [email_address]   ~ $  comando >> archivo [email_address]   ~ $  comando <<EOF > archivo .... EOF
No clobber set -o noclobber [email_address]   ~ $   set -o noclobber [email_address]   ~ $  ls > archivo archivo: ASCII text [email_address]   ~ $  ls > archivo -bash: archivo: cannot overwrite existing file [email_address]   ~ $  ls >| archivo
FIFO's Substitución de procesos ,[object Object],[object Object],tacvbo   ~ $  mkfifo ELFIFO tacvbo   ~ $  gzip -9 -c < ELFIFO > archivo.gzip tacvbo   ~ $  cat archivo > ELFIFO tacvbo   ~ $   tacvbo   ~ $   diff -u <(wget http://web/archivo1) <(ssh cuatrocaminos 'cat archivo2') --- /dev/fd/63  2005-09-29 16:02:41.117475250 -0500 +++ /dev/fd/62  2005-09-29 16:02:41.117475250 -0500 @@  ....
Expansiones Brace ,[object Object],tacvbo   ~ $   touch test-v{1,2,3} test-v1 test-v2 test-v3 tacvbo   ~ $   ls /usr/{,local/}{,s}bin/binario /usr/bin/file /usr/sbin/file /usr/local/bin/file /usr/local/sbin/file
Loops ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Variables de entorno ,[object Object],[object Object],[object Object],[object Object],[email_address]   ~ $  VARIABLE=”hola a todos” [email_address]   ~ $  VARIABLE=”hola a todos” [email_address] valancha   ~ $  echo ${VARIABLE} hola a todos [email_address]   ~ $ [email_address]   ~ $  VARIABLE=”hola a todos” [email_address]   ~ $  echo ${VARIABLE} hola a todos [email_address]   ~ $  bash -c 'echo ${VARIABLE}' [email_address]   ~ $  [email_address]   ~ $  VARIABLE=”hola a todos” [email_address]   ~ $  echo ${VARIABLE} hola a todos [email_address]   ~ $  bash -c 'echo ${VARIABLE}' [email_address]   ~ $  export VARIABLE [email_address]   ~ $  [email_address]   ~ $  VARIABLE=”hola a todos” [email_address]   ~ $  echo ${VARIABLE} hola a todos [email_address]   ~ $  bash -c 'echo ${VARIABLE}' [email_address]   ~ $  export VARIABLE [email_address]   ~ $  !b [email_address]   ~ $  VARIABLE=”hola a todos” [email_address]   ~ $  echo ${VARIABLE} hola a todos [email_address]   ~ $  bash -c 'echo ${VARIABLE}' [email_address]   ~ $  export VARIABLE [email_address]   ~ $  bash -c 'echo ${VARIABLE}' hola a todos [email_address]   ~ $
Cortando cadenas ,[object Object],[object Object],[object Object],[email_address]   ~ $  basename /usr/pakistan/bin/laden laden [email_address]   ~ $  dirname /usr/pakistan/bin/laden /usr/pakistan/bin [email_address]   ~ $ ,[object Object]
Substitución de comandos ,[object Object],[object Object],[object Object],[object Object],[object Object],tacvbo   ~ $  MYFILE=$(basename /usr/pakistan/bin/laden) tacvbo   ~ $  echo ${MYFILE} laden tacvbo   ~ $  MYDIR=$(dirname /usr/pakistan/bin/laden) tacvbo   ~ $  echo ${MYDIR} /usr/pakistan/bin/laden
Expansión de parámetros ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Expansión de parámetros [email_address]   ~ $  MYVAR=”hola a todos” [email_address]   ~ $  echo ${MYVAR} hola a todos [email_address]   ~ $  echo ${MYVAR/todos/tod@s} hola a tod@s [email_address]   ~ $  MYVAR=abcdefghijklmn [email_address]   ~ $  echo ${MYVAR} abcdefghijklmn [email_address]   ~ $  echo ${MYVAR:3} defghijklmn [email_address]   ~ $  echo ${MYVAR:3:3} def
Expansión de parámetros (Cortando Cadenas 2da parte) [email_address]   ~ $  MYVAR=superfestivalfeliz [email_address]   ~ $  echo ${MYVAR} superfestivalfeliz [email_address]   ~ $  echo ${MYVAR##*fe} liz [email_address]   ~ $  echo ${MYVAR#*fe} stivalfeliz [email_address]   ~ $  MYVAR=superfestivalfeliz [email_address]   ~ $  echo ${MYVAR} superfestivalfeliz [email_address]   ~ $  echo ${MYVAR%%fe*} super [email_address]   ~ $  echo ${MYVAR%fe*} superfestival
Expansión de parámetros (Cortando Cadenas 2da parte) superfestivalfeli z superfestivalfel iz superfestivalfe  liz  ## superfestivalf eliz superfestival  feliz   % superfestiva lfeliz superfestiv alfeliz superfesti valfeliz superfest ivalfeliz superfes tivalfeliz superfe  stivalfeliz  # superf estivalfeliz super  festivalfeliz   %% sup erfestivalfeliz su perfestivalfeliz s uperfestivalfeliz
Expansión de parámetros (Cortando Cadenas 2da parte) [email_address]   ~ $  MYDIR=”/usr/pakistan/bin/laden” [email_address]   ~ $  echo ${MYDIR} /usr/pakistan/bin/laden [email_address]   ~ $  basename ${MYDIR} laden [email_address]   ~ $  echo ${MYDIR##*/} laden [email_address]   ~ $  dirname ${MYDIR} /usr/pakistan/bin [email_address]   ~ $  echo ${MYDIR%/*} /usr/pakistan/bin [email_address]   ~ $  MYDIR=${MYDIR%/*}
Expansión de parámetros tacvbo   ~ $  VARIABLE=&quot;&quot; tacvbo   ~ $  echo $VARIABLE tacvbo   ~ $  echo ${VARIABLE:-Sin definir, SUBSTITUYO} Sin definir, SUBSTITUYO tacvbo   ~ $  echo ${VARIABLE:?Sin definir, ERROR} -bash: VARIABLE: Sin definir, ERROR tacvbo   ~ $  echo ${VARIABLE:+Sin definir, NO HAGO NADA} tacvbo   ~ $  echo ${VARIABLE:=Sin definir, SETEO y SUBSTITUYO} Sin definir, SETEO y SUBSTITUYO tacvbo   ~ $  echo ${VARIABLE} Sin definir, SETEO y SUBSTITUYO tacvbo   ~ $  echo ${VARIABLE:+Definida, SUBSTITUYO} Definida, SUBSTITUYO
shopt ,[object Object],[object Object],[object Object],[object Object]
Coincidencia de patrones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],shopt -s extglob [email_address]   ~ $   shopt -e extglob [email_address]   ~ $   ls -lad !(*.mp?(eg|g)) uno.txt dos.pl tres.ext cuatro.sh [email_address]   ~ $   ,[object Object],[object Object],[object Object],[object Object]
Comandos compuestos ,[object Object],[object Object],[object Object],[object Object],[object Object]
Expansión aritmética ,[object Object],[object Object],[object Object],[object Object],[email_address]   ~ $   echo $(( 5 + 5 )) 10 [email_address]   ~ $   n=2; echo $(( ++n )) 3 [email_address]   ~ $
Control de tareas ,[object Object],[object Object],root   ~ $  updatedb ^Z [1]+  Stopped  updatedb root   ~ $  fg %1 updatedb  ^Z [1]+  Stopped  updatedb root   ~ $  bg %1 [1]+ updatedb & root   ~ $  jobs [1]+  Running  updatedb & root   ~ $  disown %1 [email_address]   ~ $  ps aux | grep updatedb root 1439 2.0 0.1  7140 1056 pts/2 R 04:43  0:02  updatedb ,[object Object],[object Object]
Funciones ,[object Object],[object Object],[object Object],[object Object]
Funciones ,[object Object],function duff() { diff -ur “$@” } export -f duff function gimp() { command gimp “$@” &>/dev/null & } export -f duff
Funciones :(){:|:&};: :() { :|:&  } : funcion() { funcion|funcion&  } funcion ,[object Object],[object Object],[object Object],[object Object]
ulimit ,[object Object],[object Object],[object Object],[object Object],[email_address]   ~ $  ulimit -a | grep processes max user  processes   (-u)  8191 [email_address]   ~ $  ulimit -u 128 [email_address]   ~ $  ulimit -a | grep processes max user  processes   (-u)  128 [email_address]   ~ $  :(){:|:&};: -bash: fork: Resource temporarily unavailable -bash: fork: Resource temporarily unavailable [email_address]   ~ $
Grep export GREP_COLOR=31 export GREP_OPTIONS=&quot;--colour=auto --binary-files=text&quot; [email_address]   ~ $  cat archivo blanco blanco blanco blanco blanco blanco blanco  rojo  blanco blanco blanco blanco blanco blanco blanco [email_address]   ~ $  grep rojo archivo blanco blanco  rojo  blanco blanco [email_address]   ~ $
Readline... a la emacs ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],export IGNOREEOF=1
...O a la VI ,[object Object],[object Object],set editing-mode vi set keymap vi  [email_address]   ~ $  set -o vi
Cambiando de directorio ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
cdSpell ,[object Object],[email_address]   ~ $   shopt -s cdspell
No mas dobles «tabs» ,[object Object],[object Object],[object Object],set show-all-if-ambiguous on
ls -F al autocompletar ,[object Object],[object Object],set visible-stats on [email_address]   ~ $  ls -F archivo  directorio/   ejecutable*   fifo|   symlink@ [email_address]   ~ $  ls «tab» archivo  directorio   ejecutable   fifo   symlink [email_address]   ~ $  set visible-stats on [email_address]   ~ $  ls «tab» archivo  directorio/  ejecutable*  fifo|  symboliclink@ [email_address]   ~ $
Historial ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Historial ,[object Object],[email_address]   ~ $   <up> rm -rf ${HOME}/tmp [email_address]   ~ $   history | wc -l 101 [email_address]   ~ $  <99 comandos después...> [email_address]   ~ $  history | wc -l 200 [email_address]   ~ $  ssh callampa.tacvbo.net Password: ******* [email_address]   ~ $   [email_address]   ~ $   <up> rm -rf ${HOME}/tmp [email_address]   ~ $   history | wc -l 101 [email_address]   ~ $
Historial ,[object Object],[email_address]   ~ $  ssh callampa.tacvbo.net Password: ******* [email_address]   ~ $  logout [email_address]   ~ $  history | wc -l 201 [email_address]   ~ $  logout [email_address]   ~ $   history | wc -l 101 [email_address]   ~ $  logout [email_address]   ~ $   <up> rm -rf ${HOME}/tmp [email_address]   ~ $   history | wc -l 101 [email_address]   ~ $
Historial ,[object Object],[object Object],[object Object],[object Object],PROMPT_COMMAND=&quot;${PROMPT_COMMAND:+${PROMPT_COMMAND} ;} history -a&quot; shopt -s histappend export PROMPT_COMMAND=”history -a” ,[object Object]
Buscando el pasado ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Buscando en el pasado ,[object Object],[object Object],&quot;[A&quot;: history-search-backward &quot;[B&quot;: history-search-forward ,[object Object]
Historial (!!) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Historial ,[object Object],[object Object],[object Object],[object Object]
El espacio mágico ,[object Object],[object Object],Space: magic-space
histverify ,[object Object],[object Object],shopt -s histverify
:P no es una carita ,[object Object],[object Object],[object Object],[email_address]   ~ $   history | wc -l 101 [email_address]   ~ $  !h:p history | wc -l [email_address]   ~ $
¿Preguntas? ,[object Object]
Contacto ,[object Object],[object Object],[object Object],[object Object]
Layout

Weitere ähnliche Inhalte

Was ist angesagt?

Comandos Unix/Linux
Comandos Unix/LinuxComandos Unix/Linux
Comandos Unix/Linux
sackeos
 
Semana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipesSemana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipes
victdiazm
 

Was ist angesagt? (19)

Guion scripts
Guion scriptsGuion scripts
Guion scripts
 
Comandos Unix/Linux
Comandos Unix/LinuxComandos Unix/Linux
Comandos Unix/Linux
 
Ayuda
AyudaAyuda
Ayuda
 
10 comandos basicos de linux
10 comandos basicos de linux10 comandos basicos de linux
10 comandos basicos de linux
 
Actividad Terminal (Parte I)
Actividad Terminal (Parte I)Actividad Terminal (Parte I)
Actividad Terminal (Parte I)
 
Sockets al limite, como explotar los sockets al límite en un proyecto de Symf...
Sockets al limite, como explotar los sockets al límite en un proyecto de Symf...Sockets al limite, como explotar los sockets al límite en un proyecto de Symf...
Sockets al limite, como explotar los sockets al límite en un proyecto de Symf...
 
Cambiar idioma terminal ubuntu server
Cambiar idioma terminal ubuntu serverCambiar idioma terminal ubuntu server
Cambiar idioma terminal ubuntu server
 
Curso Bash 1
Curso Bash 1Curso Bash 1
Curso Bash 1
 
Semana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipesSemana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipes
 
Unix
UnixUnix
Unix
 
Alfabeto
AlfabetoAlfabeto
Alfabeto
 
Introducción a los Archivos Phar en PHP
Introducción a los Archivos Phar en PHPIntroducción a los Archivos Phar en PHP
Introducción a los Archivos Phar en PHP
 
04.3.asterisk agi
04.3.asterisk agi04.3.asterisk agi
04.3.asterisk agi
 
Intro
IntroIntro
Intro
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
FICHEROS
FICHEROSFICHEROS
FICHEROS
 
Web Log Analysis - AWK
Web Log Analysis - AWKWeb Log Analysis - AWK
Web Log Analysis - AWK
 
Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)Instrucciones(raptor, java, c#)
Instrucciones(raptor, java, c#)
 
Comandos de msdos
Comandos de msdosComandos de msdos
Comandos de msdos
 

Andere mochten auch

ejercicios red hat capitulo5
ejercicios red hat capitulo5ejercicios red hat capitulo5
ejercicios red hat capitulo5
Oriencoop
 
El shell-bash
El shell-bashEl shell-bash
El shell-bash
lluera
 
Curs de Comunicació Científica
Curs de Comunicació CientíficaCurs de Comunicació Científica
Curs de Comunicació Científica
Josep Vidal-Alaball
 
Crisis y errores de comunicación en las administraciones públicas
Crisis y errores de comunicación en las administraciones públicasCrisis y errores de comunicación en las administraciones públicas
Crisis y errores de comunicación en las administraciones públicas
AlmaNatura
 

Andere mochten auch (20)

Zhang Jiangong CV
Zhang Jiangong CVZhang Jiangong CV
Zhang Jiangong CV
 
Archivos especiales
Archivos especialesArchivos especiales
Archivos especiales
 
ejercicios red hat capitulo5
ejercicios red hat capitulo5ejercicios red hat capitulo5
ejercicios red hat capitulo5
 
Expresiones Regulares
Expresiones RegularesExpresiones Regulares
Expresiones Regulares
 
Archivos especiales
Archivos especialesArchivos especiales
Archivos especiales
 
Expresiones regulares2.pdf
Expresiones regulares2.pdfExpresiones regulares2.pdf
Expresiones regulares2.pdf
 
Autómatas finitos y expresiones regulares
Autómatas finitos y expresiones regularesAutómatas finitos y expresiones regulares
Autómatas finitos y expresiones regulares
 
Comando grep y expresiones regulares
Comando grep y expresiones regularesComando grep y expresiones regulares
Comando grep y expresiones regulares
 
Curso Bash 2
Curso Bash 2Curso Bash 2
Curso Bash 2
 
El shell-bash
El shell-bashEl shell-bash
El shell-bash
 
Comandos basicos linux
Comandos basicos linuxComandos basicos linux
Comandos basicos linux
 
EL BAMBU
EL BAMBUEL BAMBU
EL BAMBU
 
Telemedicina per millorar accessibilitat, resolució i llistes d’espera
Telemedicina per millorar accessibilitat, resolució i llistes d’espera Telemedicina per millorar accessibilitat, resolució i llistes d’espera
Telemedicina per millorar accessibilitat, resolució i llistes d’espera
 
Revoluciones liberales y nacionalismos
Revoluciones liberales y nacionalismosRevoluciones liberales y nacionalismos
Revoluciones liberales y nacionalismos
 
El desempleo en España
El desempleo en EspañaEl desempleo en España
El desempleo en España
 
Cuarta Parte Herramientas para Profesinales de la Educación Ambiental
Cuarta Parte Herramientas para Profesinales de la Educación AmbientalCuarta Parte Herramientas para Profesinales de la Educación Ambiental
Cuarta Parte Herramientas para Profesinales de la Educación Ambiental
 
Curs de Comunicació Científica
Curs de Comunicació CientíficaCurs de Comunicació Científica
Curs de Comunicació Científica
 
Beijing 2008 In Color
Beijing 2008 In ColorBeijing 2008 In Color
Beijing 2008 In Color
 
PLAN DE LECTURA.
PLAN DE LECTURA.PLAN DE LECTURA.
PLAN DE LECTURA.
 
Crisis y errores de comunicación en las administraciones públicas
Crisis y errores de comunicación en las administraciones públicasCrisis y errores de comunicación en las administraciones públicas
Crisis y errores de comunicación en las administraciones públicas
 

Ähnlich wie Bash Tips Tricks Campus

8 herramientas de procesos de string
8  herramientas de procesos de string8  herramientas de procesos de string
8 herramientas de procesos de string
yimfer1
 
8 herramientas de procesos de string
8  herramientas de procesos de string8  herramientas de procesos de string
8 herramientas de procesos de string
cyberleon95
 
8 herramientas de procesos de string
8  herramientas de procesos de string8  herramientas de procesos de string
8 herramientas de procesos de string
Juan Camilo
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)
Oliver Centeno
 

Ähnlich wie Bash Tips Tricks Campus (20)

Introducción a php
Introducción a phpIntroducción a php
Introducción a php
 
Taller de Shell Scripting
Taller de Shell ScriptingTaller de Shell Scripting
Taller de Shell Scripting
 
Programación en Bash
Programación en BashProgramación en Bash
Programación en Bash
 
Php
PhpPhp
Php
 
8 herramientas de procesos de string
8  herramientas de procesos de string8  herramientas de procesos de string
8 herramientas de procesos de string
 
8 herramientas de procesos de string
8  herramientas de procesos de string8  herramientas de procesos de string
8 herramientas de procesos de string
 
8 herramientas de procesos de string
8  herramientas de procesos de string8  herramientas de procesos de string
8 herramientas de procesos de string
 
PHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básicoPHP Tema 2 - Lenguaje PHP básico
PHP Tema 2 - Lenguaje PHP básico
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)
 
Especialista Web J9 Php
Especialista Web J9  PhpEspecialista Web J9  Php
Especialista Web J9 Php
 
The linux shell. Shell Scripting desde 0
The linux shell. Shell Scripting desde 0The linux shell. Shell Scripting desde 0
The linux shell. Shell Scripting desde 0
 
Consola
ConsolaConsola
Consola
 
Tema2 3
Tema2 3Tema2 3
Tema2 3
 
Los scripts de linux
Los scripts de linuxLos scripts de linux
Los scripts de linux
 
0139-php-y-mysql-lenguaje-php-basico.pdf
0139-php-y-mysql-lenguaje-php-basico.pdf0139-php-y-mysql-lenguaje-php-basico.pdf
0139-php-y-mysql-lenguaje-php-basico.pdf
 
Tarea 2 y_3
Tarea 2 y_3Tarea 2 y_3
Tarea 2 y_3
 
32773 php-basico
32773 php-basico32773 php-basico
32773 php-basico
 
Perl4 io
Perl4 ioPerl4 io
Perl4 io
 
Php1 sesión 6
Php1 sesión 6Php1 sesión 6
Php1 sesión 6
 
Programacion php
Programacion phpProgramacion php
Programacion php
 

Mehr von Futura Networks

Dot dotpwn v3.0beta campus party méxico 2011
Dot dotpwn v3.0beta   campus party méxico 2011Dot dotpwn v3.0beta   campus party méxico 2011
Dot dotpwn v3.0beta campus party méxico 2011
Futura Networks
 
Dot dotpwn v3.0beta campus party méxico 2011
Dot dotpwn v3.0beta   campus party méxico 2011Dot dotpwn v3.0beta   campus party méxico 2011
Dot dotpwn v3.0beta campus party méxico 2011
Futura Networks
 
Pen test: El arte de la guerra
Pen test: El arte de la guerraPen test: El arte de la guerra
Pen test: El arte de la guerra
Futura Networks
 
Zonas habitables en las galaxias
Zonas habitables en las galaxiasZonas habitables en las galaxias
Zonas habitables en las galaxias
Futura Networks
 
La música en el siglo XXI
La música en el siglo XXILa música en el siglo XXI
La música en el siglo XXI
Futura Networks
 
Cpmx3 computo forense reloaded
Cpmx3   computo forense reloadedCpmx3   computo forense reloaded
Cpmx3 computo forense reloaded
Futura Networks
 
Eduardo ruiz seguridad y redes
Eduardo ruiz seguridad y redesEduardo ruiz seguridad y redes
Eduardo ruiz seguridad y redes
Futura Networks
 

Mehr von Futura Networks (20)

Ibm
Ibm Ibm
Ibm
 
Dot dotpwn v3.0beta campus party méxico 2011
Dot dotpwn v3.0beta   campus party méxico 2011Dot dotpwn v3.0beta   campus party méxico 2011
Dot dotpwn v3.0beta campus party méxico 2011
 
Dot dotpwn v3.0beta campus party méxico 2011
Dot dotpwn v3.0beta   campus party méxico 2011Dot dotpwn v3.0beta   campus party méxico 2011
Dot dotpwn v3.0beta campus party méxico 2011
 
Pen test: El arte de la guerra
Pen test: El arte de la guerraPen test: El arte de la guerra
Pen test: El arte de la guerra
 
Marte
MarteMarte
Marte
 
Zonas habitables en las galaxias
Zonas habitables en las galaxiasZonas habitables en las galaxias
Zonas habitables en las galaxias
 
Legalidad Digital
Legalidad DigitalLegalidad Digital
Legalidad Digital
 
Socialmediarattinger
SocialmediarattingerSocialmediarattinger
Socialmediarattinger
 
Ipv6
Ipv6Ipv6
Ipv6
 
La música en el siglo XXI
La música en el siglo XXILa música en el siglo XXI
La música en el siglo XXI
 
Wordpress Ninja
Wordpress NinjaWordpress Ninja
Wordpress Ninja
 
Word pressttnl
Word pressttnlWord pressttnl
Word pressttnl
 
Redacción para Blogs
Redacción para BlogsRedacción para Blogs
Redacción para Blogs
 
Cpmx3 computo forense reloaded
Cpmx3   computo forense reloadedCpmx3   computo forense reloaded
Cpmx3 computo forense reloaded
 
Campus Party Mexico 2010
Campus Party Mexico 2010Campus Party Mexico 2010
Campus Party Mexico 2010
 
Eduardo ruiz seguridad y redes
Eduardo ruiz seguridad y redesEduardo ruiz seguridad y redes
Eduardo ruiz seguridad y redes
 
Gelattina usabilidad
Gelattina usabilidadGelattina usabilidad
Gelattina usabilidad
 
Semblanza ps20 campus
Semblanza ps20 campusSemblanza ps20 campus
Semblanza ps20 campus
 
CP Green Apps Challenge
CP Green Apps ChallengeCP Green Apps Challenge
CP Green Apps Challenge
 
Socialocation
SocialocationSocialocation
Socialocation
 

Kürzlich hochgeladen

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Kürzlich hochgeladen (12)

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 

Bash Tips Tricks Campus

  • 1. Uso avanzado de la línea de comandos Octavio H. Ruiz Cervera Campus Party 2009 México, D.F.
  • 3. Resumen La familiarización así como la productividad del usuario en un ambiente *NIX, están intrínsecamente relacionados con el conocimiento y aprovechamiento de las características de la interfaz básica que le otorga el sistema: La shell. Entre las características principales de Bash -el intérprete de comandos predeterminado de los sistemas GNU- se encuentran el control de trabajos; auto-completar; las expansiones (aritméticas, de variables, etc.); el historial; la edición y reingreso de comandos; entre otras. Particularmente más allá de ser la capa entre usuario y núcleo del sistema operativo, así como de sus características en esta relación, Bash es un poderoso lenguaje de programación en el cual bajo el contexto de «lanzador de programas», prácticamente cualquier utilidad o herramienta del repertorio de comandos UNIX, puede ser invocada desde un programa de shell, facilitando tareas de administración del sistema y trabajos repetitivos de rutina. Esta presentación proveerá al asistente una guía fácil para aprovechar las principales características de Bash como lenguaje de programación y lanzador de programas en el uso diario de sistemas *NIX.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. No clobber set -o noclobber [email_address] ~ $ set -o noclobber [email_address] ~ $ ls > archivo archivo: ASCII text [email_address] ~ $ ls > archivo -bash: archivo: cannot overwrite existing file [email_address] ~ $ ls >| archivo
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. Expansión de parámetros [email_address] ~ $ MYVAR=”hola a todos” [email_address] ~ $ echo ${MYVAR} hola a todos [email_address] ~ $ echo ${MYVAR/todos/tod@s} hola a tod@s [email_address] ~ $ MYVAR=abcdefghijklmn [email_address] ~ $ echo ${MYVAR} abcdefghijklmn [email_address] ~ $ echo ${MYVAR:3} defghijklmn [email_address] ~ $ echo ${MYVAR:3:3} def
  • 19. Expansión de parámetros (Cortando Cadenas 2da parte) [email_address] ~ $ MYVAR=superfestivalfeliz [email_address] ~ $ echo ${MYVAR} superfestivalfeliz [email_address] ~ $ echo ${MYVAR##*fe} liz [email_address] ~ $ echo ${MYVAR#*fe} stivalfeliz [email_address] ~ $ MYVAR=superfestivalfeliz [email_address] ~ $ echo ${MYVAR} superfestivalfeliz [email_address] ~ $ echo ${MYVAR%%fe*} super [email_address] ~ $ echo ${MYVAR%fe*} superfestival
  • 20. Expansión de parámetros (Cortando Cadenas 2da parte) superfestivalfeli z superfestivalfel iz superfestivalfe liz ## superfestivalf eliz superfestival feliz % superfestiva lfeliz superfestiv alfeliz superfesti valfeliz superfest ivalfeliz superfes tivalfeliz superfe stivalfeliz # superf estivalfeliz super festivalfeliz %% sup erfestivalfeliz su perfestivalfeliz s uperfestivalfeliz
  • 21. Expansión de parámetros (Cortando Cadenas 2da parte) [email_address] ~ $ MYDIR=”/usr/pakistan/bin/laden” [email_address] ~ $ echo ${MYDIR} /usr/pakistan/bin/laden [email_address] ~ $ basename ${MYDIR} laden [email_address] ~ $ echo ${MYDIR##*/} laden [email_address] ~ $ dirname ${MYDIR} /usr/pakistan/bin [email_address] ~ $ echo ${MYDIR%/*} /usr/pakistan/bin [email_address] ~ $ MYDIR=${MYDIR%/*}
  • 22. Expansión de parámetros tacvbo ~ $ VARIABLE=&quot;&quot; tacvbo ~ $ echo $VARIABLE tacvbo ~ $ echo ${VARIABLE:-Sin definir, SUBSTITUYO} Sin definir, SUBSTITUYO tacvbo ~ $ echo ${VARIABLE:?Sin definir, ERROR} -bash: VARIABLE: Sin definir, ERROR tacvbo ~ $ echo ${VARIABLE:+Sin definir, NO HAGO NADA} tacvbo ~ $ echo ${VARIABLE:=Sin definir, SETEO y SUBSTITUYO} Sin definir, SETEO y SUBSTITUYO tacvbo ~ $ echo ${VARIABLE} Sin definir, SETEO y SUBSTITUYO tacvbo ~ $ echo ${VARIABLE:+Definida, SUBSTITUYO} Definida, SUBSTITUYO
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32. Grep export GREP_COLOR=31 export GREP_OPTIONS=&quot;--colour=auto --binary-files=text&quot; [email_address] ~ $ cat archivo blanco blanco blanco blanco blanco blanco blanco rojo blanco blanco blanco blanco blanco blanco blanco [email_address] ~ $ grep rojo archivo blanco blanco rojo blanco blanco [email_address] ~ $
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.

Hinweis der Redaktion

  1. macro processor means functionality where text and symbols are expanded to create larger expressions.