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:
- 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).
- 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]\’.
- Editar/crear el fichero ‘~/.bash_profile’:
source ~/.bashrc
- 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'
- 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: ^?
- 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
- 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’.
- Editar ‘c:\cygwin\cygwin.bat’ y substituir ‘bash –login -i’ por:
start rxvt -fn 'Lucida ConsoleP-13' -tn cygwin -e bash --login -i
- 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