Comandos básicos en linux para usar el terminal

Aunque linux posee cada vez más y mejores entornos gráficos para usar y gestionar el sistema operativo, saber utilizar el terminal de comandos nos puede salvar fácilmente de algunas situaciones complicadas. Vamos a repasar algunos de los comandos básicos del sistema operativo del pingüino:

ls

Empecemos por el más básico: “ls” (list). Nos permite “listar” el contenido del directorio actual o de la ruta que le indiquemos.


$ ls /var/www/vhost1

En el ejemplo nos mostrará los archivos y directorios contenidos en la ruta indicada. Si no le indicamos ruta nos mostrará el contenido del directorio en el que nos encontremos en ese momento.

Podemos añadirle opciones:


$ ls -hail /var/www/vhost1

-a nos mostrará los archivos ocultos
-l nos ampliará la información con el usuario, los permisos y la fecha de los archivos
-h nos indicará el tamaño de manera legible (en MB, GB,  etc.)
-i nos mostrará el número de i-nodes

cd

Otro de los comandos básicos es “cd” que nos permite movernos por los directorios.


$ cd /var/www/vhost1

En el ejemplo nos moveremos al directorio que indiquemos en la ruta.

Podemos subir al directorio superior poniendo:


$ cd ..

Igualmente podremos ir a directorio raíz poniendo:


$ cd /

mkdir

Este comando nos permite crear nuevos directorios. Su uso es sencillo: “mkdir /ruta/al/nuevo/directorio/nuevo_directorio”:


$ mkdir /var/www/nuevodirectorio

En el ejemplo, crearemos el directorio “nuevodirectorio” dentro de la ruta “/var/www/”

Si no indicamos la ruta nos creará el directorio dentro de la ruta actual en la que nos encontremos


$ mkdir nuevodirectorio

cp

Nos permite copiar un archivo o directorio:


$ cp /var/www/vhost1/index.html /var/www/vhost1/index_copia.html

Primero ponemos la ruta del archivo a copiar  seguido de la ruta del archivo nuevo que contentrá la copia del primero.

Para copiar directorios con todo su contenido tenemos que utilizar la opción -r (recursive)


$ cp -r /var/www/vhost1/directorio_antiguo /var/www/vhost1/directorio_nuevo

mv

Este comando es muy parecido al anterior, nos permite mover un archivo de un directorio a otro.


$ cp /var/www/vhost1/index.html /var/www/vhost2/

En el ejemplo mueve el archivo index.html desde el directorio vhost1 al directorio vhost2.

rm

Con rm podemos borrar archivos, directorios y grupos de archivos. Su sintaxis es la siguiente:


$ rm nombre_de_archivo.txt

Para borrar un directorio y todo su contenido utilizamos la opción -r “recursive”:


$ rm -r /nombre_de_directorio/

También podemos borrar los archivos por grupos con * :


$ rm *.txt

En el ejemplo se borrarán todos los archivos que con la extensión “.txt”. O por ejemplo:


$ rm  a*

Aquí se borrarán todos los archivos que comiencen por “a” independientemente de su extensión.

Otra opción es -f “force”, que borrará sin pedir confirmación:


$ rm -rf /nombre_de_directorio/

En el ejemplo ser borrará el directorio y todo su contenido sin pedir confirmación. Ojo a la utilización de este comando, como veis es peligroso usarlo sin entender qué estamos haciendo.

touch

Gracias a este comando podemos crear un archivo nuevo en blanco:


$ touch prueba.txt

clear

Comando tan básico como útil: nos permite borrar la pantalla del terminal.


$ clear

Consulta SQL que muestre datos aleatorios (MySQL)

Para sacar de una tabla los resultados ordenados de manera aleatoria se utiliza “RAND()”.

Pongamos el caso que de una tabla que tiene 550 registros queremos sacar 20 de manera aleatoria. La consulta quedaría así:


SELECT * FROM nombre_tabla ORDER BY RAND() LIMIT 20;

Cada vez que realicemos la consulta sacaremos 20 registros aleatorios de los 550 que tiene la tabla “nombre_tabla”.

Redondear los bordes con CSS

Actualmente todos los navegadores reconocen el comando CSS “border-radius” que nos permite redondear las esquinas de los bordes de casi cualquier etiqueta (div, p, etc.) o imagen.

Su uso es sencillo:

<style>

.caja{border:1px solid #000;width:200px;height:200px;}
.redondea { border-radius: 5px;}

</style>

<div class="caja redondea">Cualquier contenido</div>

En el ejemplo hemos creado un div de 200x200px con un borde negro de 1px. Gracias a la clase “redondea”, el borde se redondea en las 4 esquinas en 5px de radio.

Podemos redondear cada una de las 4 esquinas de manera independiente:


.redondea {border-radius: 5px 2px 7px 9px;}

El primer valor se corresponde con la esquina superior izquierda y va avanzando en el sentido de las agujas del reloj:

  1. Esquina superior izquierda
  2. Esquina superior derecha
  3. Esquina inferior derecha
  4. Esquina inferior izquierda

Redondeando hasta formar un círculo

Si queremos redondear las esquinas hasta hacer un círculo podemos hacerlo así:


.redondea {border-radius: 50%;}

Esto es muy utilizado en fotos de perfil de las redes sociales, por ejemplo. El único requisito para que nos quede un círculo perfecto es que la imagen o contenedor (div, p, etc.) sea cuadrado, o sea, tenga el mismo ancho que alto.

Buscando mayor compatibilidad

Aunque como decía al principio en la actualidad todos los navegadores reconocen la instrucción border-radius de CSS, podemos buscar una mayor compatibilidad añadiendo lo siguiente:


.redondea {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}

Donde las dos primeras líneas añaden compatibilidad a los navegadores antiguos de mozilla (firefox) y webkit (chrome, safari)

Ver el espacio en disco y el tamaño de un directorio en Linux (por consola)

Aunque linux ya cuenta en todas sus distros con opción gráfica, a veces es muy interesante conocer el espacio en disco por consola de comandos. Es posible que queramos montar un servidor sin entorno gráfico para ahorrar recursos, o bien, que por algún error no cargue el entorno gráfico y tengamos que hacer las cosas mediante la consola.

Espacio en disco

Para poder ver el espacio en todos los discos y particiones que hayamos creado utilizaremos el comando “df” con los parámetros “-Th”:

# df -Th

Los parámetros

-h o “human” nos devuelve los datos en un formato más comprensible: Megas, Gigas, etc.

-T nos añade el sistema de ficheros que tiene cada partición o disco (ext3, ext4, etc.)

Tamaño de un directorio

Para conocer cuanto ocupa un directorio en linux el comando más utilizado en “du” (disk used) con los parámetros -bsh:

$ du -bsh /nombre-del-directorio

Los parámetros

-b muestra el tamaño del directorio en bytes

-s agrupa los tamaños de todo el contenido de la carpeta y nos devuelve un único valor

-h igual que en el comando anterior, este parámetro nos convierte el resultado en un formato más fácilmente entendible.

Forzar la descarga de una archivo en HTML5

En HTML5 podemos forzar la descarga de una imagen, un documento o cualquier archivo que añadamos en un enlace evitado que se abra en el programa que por defecto esté configurado.

El código es el siguiente:


<p><a href="nombre-imagen.jpg">Ver imagen</a></p>

<p><a href="nombre-imagen.jpg" download="nombre-nuevo-imagen.jpg">Descargar imagen</a>

Simplemente tenemos que añadir el atributo download a la etiqueta <a> con el valor del nuevo nombre que le queremos que tenga el archivo al ser descargado (puede ser el mismo que tiene).

Crear un acceso directo en linux

Linux permite crear enlaces simbólicos (Symbolic link) que, para los usuarios que trabajen con windows, es el equivalente a los acceso directos. Podemos crear enlaces simbólicos tanto a archivos (scripts, programas, etc.) como a carpetas. Si borramos estos enlaces no afectaremos al contenido de la carpeta o al archivo.

enlace-simbolico

Enlace simbólico en linux

Para crear un enlace simbólico utilizamos el comando ln con el parámetro -s que indica que dicho enlace es simbólico. Veamos un ejemplo:


ln -s /var/www/web1/carpeta /var/www/web2/carpeta

Como hemos visto antes utilizamos ln -s para indicar que queremos crear un enlace simbólico (o acceso directo) seguido de la ruta a la carpeta (o archivo) al que queremos hacer el enlace y la ruta donde estará el enlace. En el ejemplo el directorio /carpeta/ localizado en /var/www/web1/ tendrá un “acceso directo” desde /var/www/web2/carpeta


ln -s [ruta del archivo o directorio] [ruta del enlace simbólico]

Actualizar wordpress sin ftp

Por defecto las actualizaciones de wordpress desde el escritorio se realizan por FTP, pero podemos configurarlo para que estás actualizaciones se realicen directamente desde el escritorio sin tener que meter continuamente los datos de conexión FTP.

Para ello debemos añadir al final de archivo wp-config.php la siguiente línea:


/*para actualizar wordpress sin ftp*/
define('FS_METHOD','direct');

Una vez subamos el archivo wp-config.php modificado podremos actualizar cualquier componente de wordpress (Themes, plugins, etc..) así como realizar nuevas instalaciones directamente desde el escritorio sin que pida los datos de conexión FTP.

Es importante comprobar que tenemos permisos de escritura en el directorio /wp-content/ y sus subdirectorios para que funcione correctamente

Comprobar si un valor existe en un array (PHP)

Si tenemos un array y queremos saber si hay un valor determinado dentro de él sin tener que recorrerlo en PHP existe la función in_array, que busca dentro del array y devuelve un TRUE o FALSE.

in_array(VALOR_A_BUSCAR, $NOMBRE_DEL_ARRAY)

Ejemplo:


//Creamos el array colores
$colores = array("rojo", "azul", "verde", "amarillo");
if (in_array("verde", $colores)) {
echo "El color verde está en el array";
}else{
echo "Lo siento, el color verde NO está en el array";
}

Conectar a una base de datos MySQL con PHP

Una de las cosas más interesantes para nuestras páginas PHP es comunicarlas con una base de datos, aumentando muchísimo las posibilidades de creación de nuevas funcionalidades en nuestros sitios web.

La base de datos más extendida para el uso junto a PHP es MySQL. Para comunicar la base de datos bastan las líneas siguientes:


//Definimos las variables
$host="localhost";
$user="nombre_usuario";
$pass="contraseña";
$dbname="nombre_base_datos";

//Abrimos la conexión
$conexion=mysqli_connect($host,$user,$pass);
//Seleccionamos la base de datos con la que trabajar
mysqli_select_db($dbname,$conexion);

 

Básicamente son 4 parámetros los que necesitamos definir:

$host es la localización de MySQL, si está en el mismo servidor que Apache basta con poner “localhost”, que indica que se encuentra en la misma máquina. Si está en otro servidor deberemos poner la IP en la que se encuentra. (Por ejemplo: 192.168.0.22)

$user, en esta variable definimos el usuario con permisos para iniciar sesión en la base de datos.

$pass, al igual que $user, aquí definimos la contraseña de acceso.

Y por último, ya que podemos tener varias bases de datos dentro del mismo MySQL, en $dbname definimos el nombre de la base de datos con la que vamos a trabajar en esta conexión.

 

Convertir una dirección IP a formato numérico decimal con Php

Para poder trabajar de una manera más sencilla con rangos de IPs (por ejemplo para la geolocalización de una IP) es necesario convertir la dirección IP en número decimal:

IP                            Decimal
209.85.195.104 -> 3512058728

Podéis acceder a un conversor de IP a decimal aquí

Si queréis hacer dicha conversión en PHP basta con utilizar la siguiente función:


<?php

function IPaDecimal($ip){
$ipArr = explode('.',$ip);
$ipdec = $ipArr[0] * 0x1000000
+ $ipArr[1] * 0x10000
+ $ipArr[2] * 0x100
+ $ipArr[3]
;
return $ipdec;
}

?>

Y llamar a la función pasándole la IP a convertir:


<?php

$ipDecimal = IPaDecimal("209.85.195.104");

echo($ipDecimal);

?>

El resultado de sacar por pantalla la variable $ipDecimal será 3512058728.