Cygwin y rxvt como terminal alternativa

En cualquier Windows que trabaje me gusta disponer de una terminal con los comandos y capacidades típicas de las shell de Linux, dado que en ocasiones para hacer ciertas tareas específicas puede ser de gran utilidad. Para ello disponemos de cygwin, herramienta que implementa la API POSIX (habitual de Unix) para permitir la compilación y ejecución de aplicaciones que han sido diseñadas para Linux.

En la instalación podremos escoger entre un gran número de comandos y herramientas que han sido portadas, personalmente suelo seleccionar al menos las siguientes:

  • zip y unzip: Compresores
  • sqlite3 y libsqlite3_0: BBDD en ficheros.
  • bzr, subversion, cvs, git y tig: Herramientas de control de versiones.
  • mutt y ssmtp: Cliente de correo (IMAP/POP) y envío de correos a través de una pasarela SMTP.
  • gcc y make: Herramientas de compilación.
  • ruby: Lenguaje de programación script.
  • mc: Navegador de disco.
  • vim: Editor de texto (recomendable editar ‘~/.vimrc’)
  • gpg y openssl: Cifrado
  • bc: Calculadora
  • corkscrew: Herramienta para realizar conexiones SSH a través de proxies.
  • ncftp: Cliente ftp
  • openssh: Cliente y servidor SSH
  • ping
  • stunnel: Herramienta para establecer tuneles cifrados.
  • netcat: Herramienta de red
  • chere: Shell here para explorer
  • rxvt: Terminal
  • procps: Comandos ps, top, vmstat, w, kill, free, slabtop y skill.
  • psmisc: Comandos fuser (identificar que procesos usan que ficheros), killall y pstree
  • grep y bool: Filtros
  • file: Informa sobre el contenido/formato de los archivos
  • screen: Permite tener diversas terminales en una. Se ejecuta mediante ‘screen -R’ (resumiendo la sesión anterior si existia): ctrl+a y c para crear una terminal, ctrl+a y n para saltar a la siguiente, ctrl+a y p para retroceder, ‘exit’ o ctrl+a y k para cerrar la terminal, ctrl+a y d para desligar la sesión de la terminal.
  • unison2.3: Sincronización de ficheros entre directorios (soporta directorios remotos por SSH)
  • links: Navegador web de consola
  • wget: Descarga de ficheros web con posibilidad de resumir (wget -c http://www….)

Por otra parte, si bien resulta muy útil disponer de todas estas herramientas, la terminal que proporciona Cygwin por defecto es un poco precaria. Por suerte podemos utilizar ‘rxvt’ como alternativa, la cual nos permitirá maximizar la ventana por completo, copiar/pegar al estilo Unix (únicamente con el ratón, aunque también podemos usar shift+insertar), etc. Para utilizarla debemos seguir los siguientes pasos:

  1. Instalar rxvt (aparece en el listado de herramientas en la propia instalación de cygwin). Si ya tenemos cygwin instalado, podemos descargar de nuevo el setup.exe y volver a ejecutarlo (así de paso nos actualizará las herramientas que tengamos obsoletas).
  2. Abrir cygwin y hacer un ‘echo $HOME’ para averiguar la ruta de nuestro directorio personal (sustituto del símbolo ~). Habitualmente es ‘c:\Documents and Settings\[usuario]\’.
  3. Editar/crear el fichero ‘~/.bash_profile’:
    source ~/.bashrc
    
  4. Editar/crear el fichero ‘~/.bashrc’:
    #export HTTP_PROXY=http://10.72.252.121:8080
    export INPUTRC=$HOME/.inputrc
    
    alias rm='rm -i'
    alias cp='cp -i'
    alias mv='mv -i'
    alias ln='ln -i'
    alias vi='TERM=rxvt-cygwin vi'
    alias ls='ls --color'
    
  5. Editar/crear el fichero ‘~/.Xdefaults’:
    rxvt*title:             Bash
    
    rxvt*foreground:        black
    rxvt*background:        white
    #rxvt*background:        gray75
    #rxvt*reverseVideo:      true
    
    rxvt*scrollBar_right:   true
    rxvt*colorBD:           1
    rxvt*font:              courier
    rxvt*saveLines:         10000
    
    rxvt*loginShell:        true
    rxvt*geometry:          100x30
    rxvt*font:              "Lucida Console-11"
    rxvt*termname:          rxvt
    rxvt*title:             rxvt-login
    rxvt*iconName:          rxvt-login
    rxvt*backspacekey:      ^?
    
  6. Editar/crear el fichero ‘~/.inputrc’:
    "\e[1~": beginning-of-line
    "\e[4~": end-of-line
    "\e[5~": beginning-of-history
    "\e[6~": end-of-history
    "\e[3~": delete-char
    "\e[2~": quoted-insert
    "\e[5C": forward-word
    "\e[5D": backward-word
    "\e\e[C": forward-word
    "\e\e[D": backward-word
    set completion-ignore-case On
    “\e[5~”: history-search-backward
    “\e[6~”: history-search-forward
    # Home in rxvt
    "\e[7~": beginning-of-line
    # End in rxvt
    "\e[8~": end-of-line
    
  7. Descargar la fuente luconP.ttf, abrir ‘Start – Settings – Fonts’ y arrastrar la fuente. Este paso es opcional, su única función es permitir que rxvt dibuje correctamente líneas como las de la herramienta ‘mc’.
  8. Editar ‘c:\cygwin\cygwin.bat’ y substituir ‘bash –login -i’ por:
    start rxvt -fn 'Lucida ConsoleP-13' -tn cygwin -e bash --login -i
    
  9. Cerramos y volver a abrir cygwin.

Adicionalmente, os dejo también mi configuración de vim del fichero ‘~/.vimrc’ (imprescindible para poder utilizar vim en condiciones):

" When editing a file, always jump to the last cursor position
autocmd BufReadPost *
     \  if line("'\"") > 0 && line ("'\"") <= line("$") |
     \    exe "normal g'\"" |
     \  endif

" sw -> espacios de la indentacion
set sw=4

" tabulacion
set tabstop=4
set smarttab

" ignore case en las busquedas
set ic

" highlight search, incsearch
set hls is

" Mostrar siempre la linea actual
set ruler

" Coloreado
syntax on

" Lineas
set number

"Sin beep ni aviso visual
"set vb t_vb=

"Sin beep
"set vb

" Reemplazar tabs con espacios
"set expandtab

" Configuracin del explorador de ficheros (":Explore")
"""""""""""""""""""""
" Al abrir un fichero, hacerlo en la ventana actual
let g:netrw_browse_split=0

" Activar la ocultacion de ficheros
let g:netrw_hide=1

" Lista de ficheros a ocultar (separar por comas)
let g:netrw_list_hide='^..*'

" Modo de lista larga (con detalles)
let g:netrw_longlist=1

" Ordenar por "name", "time", o "size"
let g:netrw_sort_by="name"

" Orden "normal" o "reverse"
let g:netrw_sort_direction="normal"
""""""""""""""""""

" Mostrar siempre la barra de tabs
set stal=2

" Remapeo de comandos
nmap :W :w
nmap :Q :q
nmap :WQ :wq

" Function Key Mappings
map <F2>        :w<C-M>

map <F4>        :set nowrap<C-M>
map <C-F4>       :set wrap<C-M>

" Pegar sin problemas
set pastetoggle=<F12>

" Habilitar/Deshabilitar uso de ratn
map <F8>  :set mouse=a<CR>
map <C-F8>  :set mouse=<CR>

" tab navigation
:nmap <C-p> :tabprevious<cr>
:nmap <C-n> :tabnext<cr>
:nmap <C-t> :tabnew<cr>
:map <C-c> :tabclose<cr>
map <C-S-F1> 1gt
map <C-S-F2> 2gt
map <C-S-F3> 3gt
map <C-S-F4> 4gt
map <C-S-F5> 5gt
map <C-S-F6> 6gt
map <C-S-F7> 7gt
map <C-S-F8> 8gt
map <C-S-F9> 9gt
map <C-S-F10> 10g

" No guardar fichero de backup *~
set nobackup

" Hack cygwin backspace
set backspace=indent,eol,start

Leave a Reply

Your email address will not be published.