Browse Category: Linux

Informaciones, aplicaciones, guías y sugerencia relacionada con la plataforma de Linux

La chuleta definitiva para usuarios de Vim en Linux

Desde la década de 1970, Vi y Vim son populares entre los desarrolladores y están presentes en la mayoría de los servidores basados en UNIX. Esos editores de texto libre y de código abierto puede ser un poco difícil de usar al principio, pero son extremadamente poderosos. Aquí está una lista de más de 130 comandos para impulsar el potencial de su codificación con Vi / Vim.

BASICS

:e filenameOpen filename for edition
:wSave file
:qExit Vim
:q!Quit without saving
:xWrite file (if changes has been made) and exit
:sav filenameSaves file as filename
.Repeats the last change made in normal mode
5.Repeats 5 times the last change made in normal mode

MOVING IN THE FILE

k or Up Arrowmove the cursor up one line
j or Down Arrowmove the cursor down one line
emove the cursor to the end of the word
bmove the cursor to the begining of the word
0move the cursor to the begining of the line
Gmove the cursor to the end of the file
ggmove the cursor to the begining of the file
Lmove the cursor to the bottom of the screen
:59move cursor to line 59. Replace 59 by the desired line number.
20|move cursor to column 20.
%Move cursor to matching parenthesis
[[Jump to function start
[{Jump to block start

CUT, COPY & PASTE

yCopy the selected text to clipboard
pPaste clipboard contents
ddCut current line
ywYank word
yyCopy current line
y$Copy to end of line
DCut to end of line

SEARCH

/wordSearch word from top to bottom
?wordSearch word from bottom to top
*Search the word under cursor
/\cstringSearch STRING or string, case insensitive
/jo[ha]nSearch john or joan
/\< theSearch the, theatre or then
/the\>Search the or breathe
/\< the\>Search the
/\< ¦.\>Search all words of 4 letters
/\/Search fred but not alfred or frederick
/fred\|joeSearch fred or joe
/\<\d\d\d\d\>Search exactly 4 digits
/^\n\{3}Find 3 empty lines
:bufdo /searchstr/Search in all open files
bufdo %s/something/somethingelse/gSearch something in all the open buffers and replace it with somethingelse

REPLACE

:%s/old/new/gReplace all occurences of old by new in file
:%s/onward/forward/giReplace onward by forward, case unsensitive
:%s/old/new/gcReplace all occurences with confirmation
:2,35s/old/new/gReplace all occurences between lines 2 and 35
:5,$s/old/new/gReplace all occurences from line 5 to EOF
:%s/^/hello/gReplace the begining of each line by hello
:%s/$/Harry/gReplace the end of each line by Harry
:%s/onward/forward/giReplace onward by forward, case unsensitive
:%s/ *$//gDelete all white spaces
:g/string/dDelete all lines containing string
:v/string/dDelete all lines containing which didn’t contain string
:s/Bill/Steve/Replace the first occurence of Bill by Steve in current line
:s/Bill/Steve/gReplace Bill by Steve in current line
:%s/Bill/Steve/gReplace Bill by Steve in all the file
:%s/^M//gDelete DOS carriage returns (^M)
:%s/\r/\r/gTransform DOS carriage returns in returns
:%s#<[^>]\+>##gDelete HTML tags but keeps text
:%s/^\(.*\)\n\1$/\1/Delete lines which appears twice
Ctrl+aIncrement number under the cursor
Ctrl+xDecrement number under cursor
ggVGg?Change text to Rot13

CASE

VuLowercase line
VUUppercase line
g~~Invert case
vEUSwitch word to uppercase
vE~Modify word case
ggguGSet all text to lowercase
gggUGSet all text to uppercase
:set ignorecaseIgnore case in searches
:set smartcaseIgnore case in searches excepted if an uppercase letter is used
:%s/\<./\u&/gSets first letter of each word to uppercase
:%s/\<./\l&/gSets first letter of each word to lowercase
:%s/.*/\u&Sets first letter of each line to uppercase
:%s/.*/\l&Sets first letter of each line to lowercase

READ/WRITE FILES

:1,10 w outfileSaves lines 1 to 10 in outfile
:1,10 w >> outfileAppends lines 1 to 10 to outfile
:r infileInsert the content of infile
:23r infileInsert the content of infile under line 23

FILE EXPLORER

:e .Open integrated file explorer
:SexSplit window and open integrated file explorer
:Sex!Same as :Sex but split window vertically
:browse eGraphical file explorer
:lsList buffers
:cd ..Move to parent directory
:argsList files
:args *.phpOpen file list
:grep expression *.phpReturns a list of .php files contening expression
gfOpen file name under cursor

INTERACT WITH UNIX

:!pwdExecute the pwd unix command, then returns to Vi
!!pwdExecute the pwd unix command and insert output in file
:shTemporary returns to Unix
$exitRetourns to Vi

ALIGNMENT

:%!fmtAlign all lines
!}fmtAlign all lines at the current position
5!!fmtAlign the next 5 lines

TABS/WINDOWS

:tabnewCreates a new tab
gtShow next tab
:tabfirstShow first tab
:tablastShow last tab
:tabm n(position)Rearrange tabs
:tabdo %s/foo/bar/gExecute a command in all tabs
:tab ballPuts all open files in tabs
:new abc.txtEdit abc.txt in new window

WINDOW SPLITING

:e filenameEdit filename in current window
:split filenameSplit the window and open filename
ctrl-w up arrowPuts cursor in top window
ctrl-w ctrl-wPuts cursor in next window
ctrl-w_Maximize current window vertically
ctrl-w|Maximize current window horizontally
ctrl-w=Gives the same size to all windows
10 ctrl-w+Add 10 lines to current window
:vsplit fileSplit window vertically
:sview fileSame as :split in readonly mode
:hideClose current window
:­nlyClose all windows, excepted current
:b 2Open #2 in this window

AUTO-COMPLETION

Ctrl+n Ctrl+p (in insert mode)Complete word
Ctrl+x Ctrl+lComplete line
:set dictionary=dictDefine dict as a dictionnary
Ctrl+x Ctrl+kComplete with dictionnary

MARKS

m {a-z}Marks current position as {a-z}
‘ {a-z}Move to position {a-z}
Move to previous position

ABBREVIATIONS

:ab mail mail@provider.orgDefine mail as abbreviation of mail@provider.org

TEXT INDENT

:set autoindentTurn on auto-indent
:set smartindentTurn on intelligent auto-indent
:set shiftwidth=4Defines 4 spaces as indent size
ctrl-t, ctrl-dIndent/un-indent in insert mode
>>Indent
<<Un-indent
=%Indent the code between parenthesis
1GVG=Indent the whole file

SYNTAX HIGHLIGHTING

:syntax onTurn on syntax highlighting
:syntax offTurn off syntax highlighting
:set syntax=perlForce syntax highlighting

Fuente: CATS WHO CODE

Cómo aumentar la Memoria de Java en Openfire instalado en Debian Squeeze

Propiedades del Servidor Openfire

Openfire es un sistema de mensajería instantánea GPL y hecho en java. Utiliza el protocolo XMPP con el que podrás tener tu propio servidor de mensajería, privado o corporativo. Puedes administrar a tus usuarios, compartir archivos, auditar mensajes, mensajes offline, mensajes broadcast, grupos, etc y además contiene plugins gratuitos con diferentes funciones extras.

Puede darse el caso que sea necesario aumentar la Memoria de Java que se configura por default al realizar la instalación de Openfire, esto se debe al incrementarse el número de clientes conectados al sistema de mensajería o el uso de plugins extras instalados para mejorar las funcionalidades del servicio.

Editando el fichero /etc/default/openfire podemos añadir la siguiente línea DAEMON_OPTS=”-Xms128m -Xmx1024m” cómo se muestra a continuación:

# Defaults for openfire initscript
# sourced by /etc/init.d/openfire
# installed at /etc/default/openfire by the maintainer scripts
 
#
# This is a POSIX shell fragment
#
 
# Additional options that are passed to the Daemon.
#DAEMON_OPTS=""
DAEMON_OPTS="-Xms128m -Xmx1024m"

Reiniciamos el servicio Openfire

invoke-rc.d openfire restart

Podemos comprobar la nueva configuración ejecutando el siguiente comando

ps aux|grep openfire

Entre las lineas mostradas debe aparecer

/usr/lib/jvm/java-6-sun/bin/java -Xms128m -Xmx1024m

Los valores de Xms y Xmx pueden variar según sus necesidades y disponibilidad de memoria RAM en el servidor, en este caso 128m es la memoria mínima y 1024m es la memoria máxima que se usara en nuestro servidor de mensajería instantánea Openfire.

Enlaces

Openfire: http://www.igniterealtime.org/projects/openfire

Configuración de VirtualHost en Linux Debian con Apache2

Tras la actualización del último post “Instalación de Apache2 con PHP5 y MySQL en Debian Squeeze” traigo el tema de cómo configurar sitios web o servidores dinámicos con estas tecnologías.

El término VirtualHost (Hosting Virtual) se refiere a hacer funcionar más de un sitio web en una sola máquina. Los sitios web virtuales pueden estar “basados en direcciones IP“, lo que significa que cada sitio web tiene una dirección IP diferente, o “basados en nombres diferentes“, lo que significa que con una sola dirección IP están funcionando sitios web con diferentes nombres de dominios. El hecho de que estén funcionando en la misma máquina física pasa completamente desapercibido para el usuario que el sitio que visita esté conviviendo con otros.

Nota preliminar

En guía se utiliza la dirección IP 192.168.1.5. Estos ajustes podrían ser diferentes para usted, así que debes sustituirlos en caso necesario.

Por defecto el directorio raíz del Apache2 en Linux Debian es /var/www y tras la instalación se crea también un fichero index.html. Este directorio es accesible desde la dirección IP con la que está configurada la maquina o servidor a través de la configuración creada en el virtualhost por defecto (default) que se encuentra en /etc/apache2/sites-available.

Modificaremos esta configuración creada por defecto tras la instalación de Apache2 para evitar que puedan ser accesibles otros directorios creados en /var/www que utilizaremos para hospedar los sitios web.

Modificar el directorio raíz por defecto del virtualhost default

Creamos el directorio default

mkdir /var/www/default

Movemos el fichero index.html para nuevo directorio creado

mv /var/www/index.html /var/www/default/

Nota: El fichero index.html puede ser modificado también para mostrar un mensaje personalizado cuando se acceda directamente al servidor a través de la IP, para ello necesitaremos editar el HTML.

nano /var/www/default/index.html
<h1>¡Este es el servidor virtual de REGOREMOR!</h1>
 
Esta es la página web predeterminada para este servidor.
 
El software del servidor Web se está ejecutando.

Ahora modificamos la configuración del virtualhost default

nano /etc/apache2/sites-available/default

Solo modificamos las las rutas al directorio raíz

DocumentRoot /var/www/default
...

Debemos reiniciar Apache después:

invoke-rc.d apache2 restart

Ahora dirige tu navegador a http://192.168.1.5 y usted debería ver una página con el texto modificado del fichero index.html

it-works-personalizado

Configuración básica del VirtualHost

Primero que todo en los DNS públicos o privados deben estar registrados los dominios y/o alias que apuntarán a la IP del servidor en este caso (192.168.1.5).

dominio.com     A     192.168.1.5
www.dominio.com    A     192.168.1.5

Crearemos el directorio donde hospedaremos el sitio web que posteriormente configuraremos el DocumentRoot & Directory en el VirtualHost.

Podemos darle como nombre del directorio el nombre del dominio que apunta a este sitio (dominio.com).

mkdir /var/www/dominio.com

Creamos un fichero de prueba

nano /var/www/dominio.com/index.php
<h1>Hola Mundo desde mi dominio.com</h1>
Esto es una página de prueba

Creamos y configuramos el VirtualHost

nano /etc/apache2/sites-available/dominio.com
<VirtualHost *:80>
    ServerName dominio.com
    ServerAlias www.dominio.com
 
    DocumentRoot /var/www/dominio.com/
 
    ServerSignature On
 
    ErrorLog /var/log/apache2/dominio.com-error.log
 
    LogLevel warn
 
    CustomLog /var/log/apache2/dominio.com-access.log combined
 
    <Directory "/var/www/dominio.com/">
    Options Indexes FollowSymLinks MultiViews ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Habilitamos el VirtualHost en el Apache

cd /etc/apache2/sites-available/
a2ensite dominio.com

Debemos reiniciar Apache después

invoke-rc.d apache2 restart

Dirija su navegador a http://dominio.com o http://www.dominio.com y usted debería ver una página con el texto del fichero de prueba.

hola-mundo-test

Post relacionado

Configuración del módulo ProxyPass de Apache

Enlaces

Apache: http://httpd.apache.org/docs/2.0/vhosts/

Instalación de Apache2 con PHP5 y MySQL en Debian Squeeze

En esta guía mostraremos como instalar un servidor LAMP acrónimo de la unión de las  tecnologías Linux, Apache, MySQL y Perl, PHP o Python. La combinación de estas tecnologías proporciona un conjunto de subsistemas de software necesarios para alcanzar una solución global, en este caso configurar sitios web o servidores dinámicos con un esfuerzo reducido, utilizando un paradigma de programación para el desarrollo.

GNU/Linux

Linux es un núcleo de sistema operativo libre tipo Unix.

Apache HTTP Server

El servidor HTTP Apache es un servidor web libre y de código abierto, el más popular en cuanto a uso, sirviendo de facto como plataforma de referencia para el diseño y evaluación de otros servidores web.

MySQL

MySQL es un Sistema de Gestión de Bases de Datos relacional, que por lo tanto utiliza SQL, multihilo y multiusuario del que se estiman más de un millón de instalaciones.

PHP

PHP (acrónimo recursivo de “PHP: Hypertext Preprocessor”) es un lenguaje de programación diseñado para producir sitios web dinámicos. PHP es utilizado en aplicaciones del lado del servidor, aunque puede ser usado también desde una interfaz de línea de comandos o como aplicación de escritorio.

Debian

Debian GNU/Linux ofrece más que un S.O. puro; viene con 29000 paquetes, programas precompilados distribuidos en un formato que hace más fácil la instalación

Liberada la versión 6.0 de Linux Debian Squeeze hicimos una revisión y actualización del de la guía anterior basada en Debian Lenny

Nota preliminar

En guía se utiliza la dirección IP 192.168.100.25. Estos ajustes podrían ser diferentes para usted, así que debes sustituirlos en caso necesario.

Configurar los repositorios de Debian Squeeze

Primero asegúrese de que el archivo /etc/apt/sources.list contiene squeeze-updates como repositorios de actualizaciones.

nano /etc/apt/sources.list

Agregar al fichero /etc/apt/sources.list

deb http://ftp.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

Ejecutar update para actualizar la base de datos de paquetes

aptitude update

Ejecutar upgrade para instalar las actualizaciones más recientes (si los hay).

aptitude upgrade

Instalación de Apache2

Apache2 está disponible como un paquete de Debian, por lo que se puede instalar directamente desde cualquier repositorio oficial o DVD de Debian Squeeze de la siguiente manera:

aptitude install apache2

Ahora dirige tu navegador a http://192.168.100.25 y usted debería ver una página en blanco con el texto It works!.

It Works

Por defecto el directorio raíz del Apache en Debian es /var/www y el archivo de configuración /etc/apache2/apache2.conf. Configuraciones adicionales se almacenan en los subdirectorios de /etc/apache2 como /etc/apache2/mods-available (para los módulos) y /etc/apache2/sites-available (para los hosts virtuales).

Instalación de PHP5

Podemos instalar PHP5 y el módulo de Apache PHP5 como sigue:

aptitude install php5 libapache2-mod-php5

Debemos reiniciar Apache después:

invoke-rc.d apache2 restart

Obtener información sobre la instalación de PHP5

En el directorio raíz del Apache /var/www creamos un archivo info.php

nano /var/www/info.php

Insertamos la siguiente función nativa de PHP phpinfo().

<?php phpinfo(); ?>

Llamamos este archivo a través de un navegador http://192.168.100.25/info.php y mostrará un montón de detalles útiles sobre nuestra instalación de PHP incluida la versión instalada.

phpinfo

Instalación de MySQL 5

Instalamos MySQL 5 de la siguiente manera:

aptitude install mysql-server mysql-client

Se le pedirá que proporcione una contraseña para el usuario root de MySQL – Esta contraseña es válida para el usuario root@localhost, así como root@server.dominio.com:

New password for the MySQL "root" user: -- contraseñaparausuarioroot
Repeat password for the MySQL "root" user: -- contraseñaparausuarioroot

Soporte MySQL en PHP5

Para obtener soporte MySQL en PHP5, debemos instalar el paquete php5-mysql. Será necesario instalar otros módulos de PHP5 para un correcto funcionamiento de sus aplicaciones. Puede buscar módulos de PHP5 que estén disponibles el repositorio o DVD de Debian de esta manera:

aptitude search php5

Escoja los que necesite y los instala de la siguiente manera:

aptitude install php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json

Debemos reiniciar Apache después:

invoke-rc.d apache2 restart

Recargue su navegado en la página http://192.168.100.25/info.php ahora debe encontrar gran cantidad de módulos nuevos, incluido el módulo de MySQL:

mysqlinfo

phpMyAdmin

phpMyAdmin es una interfaz web a través de la cual puede administrar sus bases de datos MySQL. Puede instalar esta aplicación de la siguiente manera:

aptitude install phpmyadmin

Verá la siguiente pregunta:

pmaconfig-1

pmaconfig-2

Posteriormente, puede acceder a phpMyAdmin en http://192.168.100.25/phpmyadmin/:

pmafront

Resumen

aptitude install apache2 php5 libapache2-mod-php5 mysql-server mysql-client php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json phpmyadmin

Responder a las preguntas necesarias y listo.

Enlaces

Apache: http://httpd.apache.org/
PHP: http://www.php.net/
MySQL: http://www.mysql.com/
Debian: http://www.debian.org/
phpMyAdmin: http://www.phpmyadmin.net/

Empaquetar, comprimir y descomprimir desde la consola de comandos en Linux

Muchas veces necesitamos trasladar grandes volúmenes de informaciones desde un servidor a otro o quizás a un dispositivo USB externo. Al realizar esta copia, en ocasiones se vuelve tedioso el tiempo de espera, ya que en la mayoría de los casos son miles o millones de ficheros copiándose de un lado para otro y la velocidad de la transferencia varía en dependencia de muchos factores.

En la práctica podemos lograr que al copiar estos ficheros la velocidad de transferencia sea un poco más estable y rápida, logrando así un menor tiempo en la espera de este proceso.

¿Cómo lo logramos?

Empaquetando todos los ficheros en uno solo, increíblemente es mucho más práctico, se lo aseguro. Este proceso de empaquetado lo haremos mediante el formato de archivo más usado en entornos UNIX, identificado con la extensión .tar.

Ejemplos de opciones más usados

Empaquetar:

tar cvf archivo.tar /directorio/*

Empaquetara todo el contenido del directorio

Desempaquetar:

 tar xvf archivo.tar

Extraerá todo el contenido del fichero archivo.tar

Visualizar:

 tar tvf archivo.tar

Se podrá ver el contenido sin extraer del fichero archivo.tar

Es importante aclarar que la orden del TAR no comprime, solo almacena archivos y directorios en un solo fichero, por lo que no reduce el tamaño de los archivos. Sin embargo se puede combinar la funcionalidad de los archivos .tar con una compresión de datos que disminuya su tamaño final.

Métodos de comprensión existen muchos, los más usados en sistemas Unix son gz y bz, estos tienen un problema, solo comprimen archivos, no directorios, es por ello que antes hay que empaquetar todo los archivos.

¿Cómo Empaquetar, Comprimir y Descomprimir?

.tar.gz – .tar.z – .tgz (tar con gzip)

Empaquetar y comprimir:        tar czvf archivo.tar.gz /directorio/*
Desempaquetar y descomprimir:  tar xzvf archivo.tar.gz
Ver el contenido sin extraer:  tar tzvf archivo.tar.gz

.tar.bz2 (tar con bzip2)

Empaquetar y comprimir:        tar -c /directorio/* | bzip2 &gt; archivo.tar.bz2
Desempaquetar y descomprimir:  bzip2 -dc archivo.tar.bz2 | tar -xv
Ver el contenido sin extraer:  bzip2 -dc archivo.tar.bz2 | tar -tv

Otras opciones para Comprimir y Descomprimir

.gz (gzip)

Comprimir:      gzip -q archivo
Descomprimir:   gzip -d archivo.gz

.bz2 (bzip2)

Comprimir:      bzip2 archivo
Descomprimir:   bzip2 -d archivo.bz2

.zip (zip)

Comprimir:      zip archivo.zip /directorio/fichero
Descomprimir:   unzip archivo.zip
Ver contenido:  unzip -v archivo.zip

.rar (rar)

Comprimir:      rar -a archivo.rar /directorio/fichero
Descomprimir:   rar -x archivo.rar
Ver contenido:  rar -v archivo.rar
                rar -l archivo.rar

.lha (lha)

Comprimir:      lha archivo.lha /directorio/fichero
Descomprimir:   lha -x archivo.lha
Ver contenido:  lha -v archivo.lha
                lha -l archivo.lha

.zoo (zoo)

Comprimir:      zoo -a archivo.zoo /directorio/fichero
Descomprimir:   zoo -x archivo.zoo
Ver contenido:  zoo -v archivo.zoo
                zoo -L archivo.zoo

.arj (arj)

Comprimir:      arj a archivo.arj /directorio/fichero
Descomprimir:   arj -x archivo.arj
Ver contenido:  arj -v archivo.arj
                arj -l archivo.arj

Nota: Intentar no usar RAR o ARJ que usan formatos propietarios.

Enlaces

Wikipedia: http://es.wikipedia.org/wiki/Tar
One kind of Life: http://doutdex.wordpress.com/2008/04/28/comprimir-y-descomprimir-rargzipziptartargzbz2-lha-zoo-en-linux-comando-consola/