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 filename Open filename for edition
:w Save file
:q Exit Vim
:q! Quit without saving
:x Write file (if changes has been made) and exit
:sav filename Saves 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 Arrow move the cursor up one line
j or Down Arrow move the cursor down one line
e move the cursor to the end of the word
b move the cursor to the begining of the word
0 move the cursor to the begining of the line
G move the cursor to the end of the file
gg move the cursor to the begining of the file
L move the cursor to the bottom of the screen
:59 move 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

y Copy the selected text to clipboard
p Paste clipboard contents
dd Cut current line
yw Yank word
yy Copy current line
y$ Copy to end of line
D Cut to end of line

SEARCH

/word Search word from top to bottom
?word Search word from bottom to top
* Search the word under cursor
/\cstring Search STRING or string, case insensitive
/jo[ha]n Search john or joan
/\< the Search 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\|joe Search 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/g Search something in all the open buffers and replace it with somethingelse

REPLACE

:%s/old/new/g Replace all occurences of old by new in file
:%s/onward/forward/gi Replace onward by forward, case unsensitive
:%s/old/new/gc Replace all occurences with confirmation
:2,35s/old/new/g Replace all occurences between lines 2 and 35
:5,$s/old/new/g Replace all occurences from line 5 to EOF
:%s/^/hello/g Replace the begining of each line by hello
:%s/$/Harry/g Replace the end of each line by Harry
:%s/onward/forward/gi Replace onward by forward, case unsensitive
:%s/ *$//g Delete all white spaces
:g/string/d Delete all lines containing string
:v/string/d Delete 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/g Replace Bill by Steve in current line
:%s/Bill/Steve/g Replace Bill by Steve in all the file
:%s/^M//g Delete DOS carriage returns (^M)
:%s/\r/\r/g Transform DOS carriage returns in returns
:%s#<[^>]\+>##g Delete HTML tags but keeps text
:%s/^\(.*\)\n\1$/\1/ Delete lines which appears twice
Ctrl+a Increment number under the cursor
Ctrl+x Decrement number under cursor
ggVGg? Change text to Rot13

CASE

Vu Lowercase line
VU Uppercase line
g~~ Invert case
vEU Switch word to uppercase
vE~ Modify word case
ggguG Set all text to lowercase
gggUG Set all text to uppercase
:set ignorecase Ignore case in searches
:set smartcase Ignore case in searches excepted if an uppercase letter is used
:%s/\<./\u&/g Sets first letter of each word to uppercase
:%s/\<./\l&/g Sets 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 outfile Saves lines 1 to 10 in outfile
:1,10 w >> outfile Appends lines 1 to 10 to outfile
:r infile Insert the content of infile
:23r infile Insert the content of infile under line 23

FILE EXPLORER

:e . Open integrated file explorer
:Sex Split window and open integrated file explorer
:Sex! Same as :Sex but split window vertically
:browse e Graphical file explorer
:ls List buffers
:cd .. Move to parent directory
:args List files
:args *.php Open file list
:grep expression *.php Returns a list of .php files contening expression
gf Open file name under cursor

INTERACT WITH UNIX

:!pwd Execute the pwd unix command, then returns to Vi
!!pwd Execute the pwd unix command and insert output in file
:sh Temporary returns to Unix
$exit Retourns to Vi

ALIGNMENT

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

TABS/WINDOWS

:tabnew Creates a new tab
gt Show next tab
:tabfirst Show first tab
:tablast Show last tab
:tabm n(position) Rearrange tabs
:tabdo %s/foo/bar/g Execute a command in all tabs
:tab ball Puts all open files in tabs
:new abc.txt Edit abc.txt in new window

WINDOW SPLITING

:e filename Edit filename in current window
:split filename Split the window and open filename
ctrl-w up arrow Puts cursor in top window
ctrl-w ctrl-w Puts 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 file Split window vertically
:sview file Same as :split in readonly mode
:hide Close current window
:­nly Close all windows, excepted current
:b 2 Open #2 in this window

AUTO-COMPLETION

Ctrl+n Ctrl+p (in insert mode) Complete word
Ctrl+x Ctrl+l Complete line
:set dictionary=dict Define dict as a dictionnary
Ctrl+x Ctrl+k Complete 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 [email protected] Define mail as abbreviation of [email protected]

TEXT INDENT

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

SYNTAX HIGHLIGHTING

:syntax on Turn on syntax highlighting
:syntax off Turn off syntax highlighting
:set syntax=perl Force 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

¡Este es el servidor virtual de REGOREMOR!

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

Hola Mundo desde mi dominio.com

Esto es una página de prueba

Creamos y configuramos el VirtualHost

nano /etc/apache2/sites-available/dominio.com
    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

    
    Options Indexes FollowSymLinks MultiViews ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    

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().


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 [email protected], así como [email protected]:

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/