Valkertown Blog

Redirección a el nuevo blog en 5 segundos...

jueves, diciembre 22, 2005

Pimp my Shell Parte 2



Vamos a continuar con algunos aspectos más básicos en cuanto al shell y por lo general descuidados.

  1. export PATH=$PATH:/another/dir/ Quiźa sea tonto añadir esto a la lista, pero es para asegurarme que queda claro que existe. Si alguien no sabe que es el PATH(camino) es la lista de directorios en la que bash o un shell busca los programas que corresponden al comando que acaba de teclear.

  2. ~/.bashrc ->(symlink) ~/.bash_profile Esto quizá parezca redundante pero es importante hacerlo para que en toda circunstancia quede toda la configuración del bash disponible.

    Para quienes no saben que son estos archivos, son los scripts que bash lee al iniciar su ejecución y en estos se coloca toda la configuración que se desee, sin embargo bashrc y bashprofile son accedidos bajo circunstancias diferentes dependiendo si es un bash login (p.e: agetty), o un bash spawn (p.e: xterm).

  3. alias cmd='anything' Disponer de alias(alias pseudónimo) que se ajusten a las necesidades propias, es muy importante para trabajar eficientemente en un shell. La sintaxis es la que tiene por titulo y debe ir en el .bashrc -> .bash_profile.

    Ejemplos:

    alias ls='ls -sh --color'
    alias lss='ls --sort=size -r'
    alias lse='ls --sort=extension'
    alias lst='ls --sort=time -r'
    alias rm='rm -iv'
    alias mv='mv -iv'
    alias cp='cp -iv'
    alias cd..='cd ..'
    alias 'vi=vim'
    alias g0='xgamma -gamma 1.0'
    alias g1='xgamma -gamma 1.9'
    alias g2='xgamma -gamma 2.9'
    alias 'createiso= mkisofs -R -J -iso-level 3 -allow-lowercase'
    alias 'burniso= cdrecord -v -speed=20 -dev=/dev/hdc'
    alias btt='bittorrent-curses --data_dir $HOME/.bittorrent/data/ --save_in $HOME/torrent/shares/ --check_hashes'

    Estos ejemplos suelen ser muy útiles para todos, y los ejemplos más complejos dan una idea de como se puede extender el shell a comandos nemotécnicos que encapsulan programas que necesitan un buen número de ARGumentos.

  4. shopt -s cdspell Esta pequeña opción de bash es una bendición pues cuando se escriben mal el nombre del directorio al que se quiere cambiar, bash tratara de "interpretar" a que directorio se refería y si lo encuentra hará la corrección necesaria.

  5. export HISTIGNORE="[bf]g:exit" El historial de comandos de bash es un recurso preciado que muchas veces se llena de comandos repetidos con frecuencia y que realmente no merecen ser listados. En el ejemplo bg,fg,exit.

  6. export CDPATH=./:$HOME El CDPATH es un recurso similar a CDARGS sin embargo este hace que todos los subdirectorios dentro del CDPATH queden en el primer nivel de busqueda al cambiar de directorios, sin importar el directorio de trabajo actual.

    Ejemplos:

    ~$ export CDPATH=./:$HOME
    ~$ ls $HOME
    work
    images
    mail
    ~ $ cd /tmp
    /tmp $ cd work
    ~/work $ _

    El orden en el que aparecen los directorios en el CDPATH implica la prioridad en el caso de nombres repetidos.

  7. .vimrc: syn on Esta linea del ~/.vimrc permite que vim haga syntax highlight

  8. top: ColoresPara colocarle colores a top, mientras se este ejecutando: teclee z,W.

  9. /etc/DIR_COLORS :Este archivo contiene la lista de colores que son utilizados por ls para los archivos. Es una lastima que las terminales no acepten una gran gama de colores para esta tarea.

    Ejemplos:

    NORMAL 00 # global default, although everything should be something.
    FILE 00 # normal file
    DIR 01;34 # directory
    LINK 01;36 # symbolic link
    FIFO 40;33 # pipe
    SOCK 01;35 # socket
    BLK 40;33;01 # block device driver
    CHR 40;33;01 # character device driver
    ORPHAN 40;31;01 # symlink to nonexistent file

    # This is for files with execute permission:
    EXEC 01;32

    # executables (bright green)
    .bat 01;32
    .BAT 01;32

    # archives or compressed (bright red)
    .arj 01;31
    .bz2 01;31
    .deb 01;31
    .gz 01;31

    # multimedia (video/image/sound) file formats
    .mov 01;35
    .MOV 01;35
    .mp3 01;35
    .MP3 01;35
    .mpeg 01;35
    .MPEG 01;35
    .mpg 01;35
    .MPG 01;35
    .ogg 01;35
    .OGG 01;35


  10. PS1, PS2 :El PS1,PS2 es el prompt que bash presenta para indicar que esta listo para recibir comandos, generalmente es algo pobre: $PWD $/#(root) ($PWD es la variable de entorno que representa el directorio de trabajo actual); sin embargo este puede tan informativo y colorido como se quiera. Se pueden obtener varias ideas se puede revisar este BASH-PROMPTS-HOWTO y una colección de prompts.





Como pueden ver y seguirán viendo en lo relacionado con la linea de comandos, la vida del usuario avanzado de bash y sus familiares esta llena de PEREZA (lo cual no quiere decir que no se disfrute de los otros pecados capitales). Rara vez escribimos nombres completos o nos aprendemos comandos de memoria, si existe memorización es por repetición. En los envios siguientes podrán apreciar los extremos de la pereza cuando hable de grep, sed, pipes(tuberías) y redirecciones en general, wget.

Otra cosa que suele suceder es cuando se vuelve a Windows se maldiga la falta de un shell decente. Es el único OS que conozco que no tiene un shell aceptable; espero que el dichoso shell que anunciaron sea realmente decente y eso que ya ni está en vista...

EOT