Archivos de la categoría GNU/Linux

USO DE CONSOLA. LOGIN PROMPT Y SHELL

Una vez ya sabemos cómo se estructuran los ficheros en Linux podemos empezar a usar la consola en Linux, con el fin de movernos por la estructura y dar órdenes al sistema, para ello debemos tener claros tres conceptos, el login, el prompt y la shell.

consola

Login

El login y el password identifican nuestra cuenta. Nada más arrancar Linux, lo primero que nos pedirá será que introduzcamos nuestro nombre de usuario y la contraseña.

login

Prompt

El prompt es una línea de entrada de órdenes. Consiste en una serie de caracteres que nos muestran una información, generalmente acerca del cual es nuestra posición en el árbol de directorios. Seguido de esta línea, es donde podemos comenzar a introducir órdenes y parámetros.

La órdenes se escriben en el prompt y se introducen con la tecla intro. Cabe volver a destacar que Linux es un sistema Case sensitive y asume que nosotros sabemos qué es lo que estamos introduciendo, de manera que si no obtenemos el resultado deseado es porque algo hemos hecho mal.

En sistemas GNU/Linux, el prompt tiene el aspecto de:

  • usuario@máquina:~$ (Cuando el prompt acaba con “$” significa que estamos actuando como usuario sin privilegios).

  • root@máquina:~# (Cuando el prompt acaba con “#” significa que estamos actuando como superusuario con todos los privilegios).

Como podemos comprobar el prompt está compuesto por varias partes, vamos a explicar qué significa cada parte:

  • El nombre que aparece antes de la “@” hace referencia al nombre de usuario bajo el que estamos actuando.

    luismi@luismi-VirtualBox:~$

  • Luego, la parte posterior a la “@” hace referencia al nombre d ella máquina con la que estamos trabajando.

    luismi@luismi-VirtualBox:~$

  • Por último lugar tenemos el símbolo “~”. Éste significa el directorio raíz en donde estamos ubicados. Si estamos actuando como usuarios normales sin privilegios, el directorio raíz será /home. Sin embargo, Linux no nos lo mostrará a menos que se lo pidamos expresamente.

    luismi@luismi-VirtualBox:~$

Shell

El Shell es aquel programa que provee una interfaz de usuario para acceder a los servicios del sistema operativo. Esta puede ser gráfico o de texto simple, dependiendo del tipo de interfaz que empleen. Los shells están diseñados para facilitar la forma en que se invocan o ejecutan los distintos programas disponibles en el computador.

En el caso de Kubuntu, la shell que viene instalada por defecto es bash, aunque no es el único software que hay para esto. La más común es sh (llamada “Bourne shell“), csh (“C Shell“), Tcsh (“Tenex C shell“), ksh (“Korn shell“) y zsh (“Zero shell“). Generalmente, sus nombres coinciden con el nombre del ejecutable.

Gestión de ficheros y directorios

ls

Viene de list.

$ ls

Proporciona en pantalla un listado que nos muestra todos los archivos contenidos en el directorio en el que estemos. Algunas versiones o modos de conexión a Linux nos mostrarán esta información en distintos colores. Por defecto las listas vienen en orden alfabético (mayúsculas y números primero). Si obtenemos una lista que exceda de la pantalla, podemos usar Shift+RePag y Shift+AvPag para movernos por ella. Si lo usamos con la opción -l obtenemos mas información acerca de los ficheros, y con la opción -a se mostrarán los ficheros ocultos. Con man ls obtendremos una lista completa de opciones.

cd

Viene de change directory.

$ cd nombre__del_directorio

Es obvio ver que esta orden nos permitirá cambiar de directorio. Para ir al directorio padre, es decir, el que aloja al directorio actual, tecleamos:

$ cd ..

Es importante dejar el espacio entre la orden y el parámetro del nombre del fichero (en este

caso ..).

Ahora que podemos movernos por la estructura de directorios de todo el disco duro, es hora de aprender algunos conceptos especiales acerca de los directorios. Ya hemos visto que el carácter “~” era el carácter que nos indicaba que nos encontramos en nuestro directorio raíz o home. Usándolo del siguiente modo:

$ cd ~

Da igual en qué directorio nos encontremos, seremos trasladados a nuestro directorio home. Otra forma de hacer esto es usando simplemente la orden sin ningún modificador.

pwd

Viene de Print Working Directory.

$ pwd

Esta orden nos indica la ruta o path del directorio en el que nos encontramos. La utilidad radica en que en ocasiones no observamos toda la ruta actual.

mkdir

Viene de make directory.

$ mkdir nombre_del__directorio

Hemos creado un directorio. Podemos entrar y crear otro directorio y obtener un árbol, o llenarlo de ficheros.

Para crear un directorio directamente dentro de otro que todavía no existe en uno solo tenemos la opción -p que crea directorios en cadena.

$ mkdir -p musica/bandas_sonoras/closer creará el directorio musica dentro del actual, y el directorio bandas_sonoras dentro de musica y el directorio closer dentro bandas_sonoras.

rm

Viene de Remove.

$ rm nombre_del_fichero

Este comando elimina ficheros.

También se puede usar para eliminar directorios y todo lo que contengan con el parámetro -r. Con el parámetro -f forzamos que no pregunte antes de borrar.

Ejemplo:

$ rm -rf nombre_de_fichero

MUCHO OJO con:

$rm ~rf / o $rm ~rf

La aplicación de este comando concreto, sin especificar fichero y con los modificadores -r y -f borrará todo lo que tenga el sistema. Es decir, nos lo cargamos. Ejemplo.

rmdir

Viene de Remove Directory.

$ rmdir nombre_del_directorio

Este comando se encarga de borrar directorios. Sólo puede borrar directorios que estén vacíos. El sistema nos preguntará si estamos seguros de querer borrar ese directorio o nos avisará si no podemos borrarlo porque no está vacío. Para borrar los directorios que contenga podemos escribir su ruta y referirnos a todos ellos mediante el comodín * que sustituya el nombre de todos:

$ rmdir nombre_del_directorio/*

file

$ file nombre_de_fichero

Muestra el tipo de fichero.

mv

Viene de Move.

$ mv ruta_origen ruta__destino

Este comando moverá un fichero desde el lugar que indiquemos como origen hasta el lugar que indiquemos como destino. Si no indicamos ruta de origen, se supondrá que el archivo a mover se encuentra en el directorio en el que estamos. En cuanto al directorio de salida, si no indicamos nada dejará el fichero donde está, sin embargo, si cambiásemos el nombre de destino del fichero, lo renombraría simplemente. (Es una buena manera de renombrar archivos).

cp

Viene de Copy.

$ cp ruta_origen ruta_destino

La orden cp mantiene el origen en su lugar mientras que la orden mv elimina el archivo origen.

du

Se usa para saber el tamaño de los directorios/ficheros.

$ du -sh *

5,7M lawn5z2g.pdf

Con el modificador -s lo que hacemos que excluya los subdirectorios, y con el modificador -h le decimos que nos imprima el tamaño del archivo en un formato que el ser humano pueda entender. Además con el * le estamos diciendo que liste todos los ficheros contenidos.

ln

Utilizamos este comando para crear enlaces duros y simbólicos a algún fichero.

$ ln nombre_del_fichero Nombre_del_enlace (El nombre del enlace puede estar inserto dentro de una ruta concreta, p.e. /home/usuario/Nombre_del_enlace).

Los enlaces ofrecen la posibilidad de dar a un único fichero múltiples nombres. Estos ficheros van a ser identificados mediante el sistema operativo por su numero de inodo, el cual se genera de forma semialeatoria. Solo para ficheros y sólo en particiones Linux.

Un inodo es un enlace que resulta el único identificador del fichero para el sistema de ficheros. Un directorio, por tanto, será una lista de números de inodo con sus correspondientes nombres de fichero. Cada nombre de fichero en un directorio es un enlace a un inodo particular.

  • Enlaces duros: Estos enlaces se denominan enlaces duros (hard links) porque directamente crean el enlace al inodo1. También hay que tener en cuenta que solamente podremos crear enlaces duros entre ficheros del mismo sistema de ficheros; los enlaces simbólicos no tendrán este tipo de restricciones. Recordad que podíamos ver el número de enlaces duros que tenía un archivo usando el comando ls y el modificador -l. (Es la segunda columna :D)

  • Enlaces simbólicos: permite dar a un fichero el nombre de otro, pero no enlaza el fichero con un inodo, es decir, en realidad lo que hacemos es enlazar directamente al nombre del fichero. Esto podría parecerse bastante a lo que Windows nos tiene acostumbrados.

    Con la orden ln -s creamos un enlace simbólico a un fichero. Por ejemplo:

    $ ln -s archivo archivo2.

    Hay que tener en cuenta que el nombre del enlace simbólico no soporta rutas completas, por lo que para crearlo, será imprescindible situarse dentro del directorio en el que queramos que quede colocado dicho enlace.

chmod

Viene de change mode. Cambia los permisos de los archivos.

$ chmod 754 archivo1

$ chmod u+x archivo2

$ chmod o-w archivo3

En el primer ejemplo, como recordaréis por la 2ª parte del curso, estamos dando permisos al archivo1 de:

  • Total libertad de ejecución, lectura y escritura al dueño del archivo.

  • Permisos de lectura y ejecución al grupo al que pertenece el archivo.

  • Permiso de lectura al resto de usuarios que NO están en el grupo.

En el segundo ejemplo, vemos una forma diferente de otorgar permisos, ya que podemos otorgar permisos de forma más sencilla que con la codificación octal que hemos visto anteriormente. Podemos otorgar permisos al dueño, al grupo, a otros usuarios incluso a todos a la vez con los modificadores siguientes:

u – dueño: dueño del archivo o directorio

g – grupo: grupo al que pertenece el archivo

o – otros: todos los demás usuarios que no son el dueño ni del grupo

a – todos: incluye al dueño, al grupo y a otros

Luego, con los modificadores siguientes podemos otorgar o quitar permisos a cada uno de los actores que hemos mencionado:

  • r: permisos de lectura.

  • w: permisos de escritura.

  • x: permisos de ejecución.

Así pues en el ejemplo 2, vemos que se le han otorgado permisos de ejecución al dueño del archivo en cuestión. Así como en el ejemplo 3 hemos quitado permisos de escritura al resto de usuarios. Como habréis supuesto, para otorgar permisos usamos el símbolo de adición “+” y para quitarlos o revocarlos usamos el símbolo se sustracción “-”.

chown

Viene de “change owner”. Cambia el propietario del archivo.

# chown kuasar /home/kuasar/documento1.txt

Notar que en vez del símbolo del dólar “$”, hemos puesto la almohadilla “#” indicando así que sólo podemos cambiar este aspecto siendo root/superusuario. La nomenclatura de este es la siguiente:

  • # chown kuasar /home/kuasar/documento1.txt (en negrita nombre del usuario nuevo)

  • # chown kuasar /home/kuasar/documento1.txt (en negrita la ruta y el nombre del archivo a cambiar los permisos)

Si en vez de especificar un archivo en concreto, especificáramos tan sólo un directorio más el modificador -R, lo que haríamos es cambiar el propietario a todos los archivos y subdirectorios que se hallan en ese directorio.

# chown kuasar -R /home/kuasar/

chgrp

Viene de change group. Cambia el grupo del archivo.

# chgrp kuasar /home/kuasar/documento1.txt

Como podéis observar la nomenclatura es la misma que para chown, así que no vamos a incidir mas en ella.

Gestión de usuarios

useradd

Añade nuevo usuario al sistema Linux, con el nombre de usuario especificado.

#useradd inisig

Podemos añadir modificadores que se pondrán delante del nombre del nuevo usuario, por ejemplo:

#useradd -p 12345 inisig

En este ejemplo hemos especificado la contraseña del usuario inisig como 12345.

userdel

Lo usamos para borrar usuarios.

#userdel inisig

usermod

Nos permite modificar aspectos de las cuentas de los usuarios del sistema, como su home, poner tiempos de expiración a las cuentas, entre otras. Este comando no se puede usar si no es con modificadores, ya que cuando modificamos un usuario lo hacemos en alguno de sus aspectos. Veamos algún ejemplo:

#usermod -p 1234567 -l pepito inisig

En este caso lo que hemos hecho ha sido modificar la contraseña con el modificador -p a 1234567 y cambiar el nombre del usuario por pepito. Notad que el nombre del usuario al que estamos modificando se coloca al final.

passwd

Lo usamos para asignar o cambiar la contraseña de un usuario concreto.

#passwd inisig

groups

Este comando se usa para mostrar los grupos a los que pertenece el usuario en cuestión.

$groups inisig

Fijaos que ahora en vez del símbolo de almohadilla #, hemos usado el de dólar $, puesto que esta orden se puede ejecutar siendo usuario sin privilegios.

gpasswd

Este comando sirve para administrar grupos.

$gpasswd -a inisig sambashare

Con este comando lo que hemos hecho es añadir el usuario inisig al grupo sambashare, gracias al modificador -a.

Administración del Sistema

sudo

Es el acrónimo de “Super User DO”. Nos va a servir para ejecutar comandos que solamente pueda ejecutar un superusuario/root mientras estamos logueados como usuarios sin privilegios. Por ello lo usaremos cuando en el prompt veamos el símbolo del dólar “$”.

$sudo usermod -p 1234567 -l pepito inisig

Notad que es el mismo ejemplo que el comando usermod, sin embargo estamos logueados como usurarios sin privilegios, y podemos, gracias a sudo, ejecutar esta modificación sin necesidad de entrar como root.

top

Muestra una lista de los procesos en uso del servidor para conocer el uso de CPU, Memoria, PID del proceso, etc.

$top

kill

Con este comando podemos eliminar un proceso activo. Podemos a su vez mandar señales distintas en función de nuestras necesidades, estas distintas señales vienen dadas por los modificadores, los cuales en esta ocasión serán números.

$kill -9 2234

En el ejemplo le estamos diciendo al Sistema Operativo que queremos matar el proceso que tiene el PID=2234. ¿Cómo averiguamos el Identificador de Proceso? Con el comando top que hemos visto previo a este. El modificador -9 le dice al proceso que ha de acabar si o si.

|

Este símbolo “|” se le conoce como tubería, “pipe” en inglés, y nos va a servir para concatenar órdenes/comandos. Por ejemplo, si quisiéramos terminar un proceso que se ha quedado colgado e iniciarlo después, escribimos lo siguiente:

$kill -9 3863|bluefish

Como podéis observar hemos matado el proceso que tenía de ID 3863 y acto seguido hemos invocado al software que queríamos “bluefish”. Todo gracias a las tuberías. Bien usada, esta herramienta puede ser muy poderosa, ya que podemos concatenar muchos comandos a la vez, no solamente dos. (Recordad este símbolo “|” se pone apretando “Alt Gr+1”).

Compresores

tar

Empaquetar

$tar cvf archivo.tar /archivo/mayo/*

Desempaquetar:

$tar xvf archivo.tar

Ver el contenido (sin extraer)

$tar tvf archivo.tar

gzip

Comprimir, el archivo lo comprime y lo renombra como “archivo.gz”

$gzip archivo

Descomprimir, el archivo lo descomprime y lo deja como “archivo”

$gzip -d archivo.gz

Nota: gzip solo comprime archivos, no directorios

rar

Comprimir:

$rar -a archivo.rar /mayo/archivos

Descomprimir:

$rar -x archivo.rar

Ver contenido:

$rar -v archivo.rar

$rar -l archivo.rar

zip

Comprimir:

$zip archivo.zip /mayo/archivos

Descomprimir:

unzip archivo.zip

Ver contenido:

unzip -v archivo.zip

Repositorios

En primer lugar deberíamos saber qué es un repositorio. Un repositorio no es más que un almacén informático donde hay guardados muchos archivos. Estos paquetes están organizados de acuerdo con una serie de características, de tal manera que podemos obtener un patrón de rastreo para encontrar los paquetes que nos interesan. Estos repositorios pueden ser de acceso público o estar protegidos y necesitar de una autenticación previa.

Linux tiene tiene diferentes repositorios, en función de la distribución. Cada una de ellas tiene su forma de clasificarlos, y básicamente funcionan muy parecido, existe un programa en consola y también en modo gráfico que se encarga de descargar y de instalar los paquetes, todo de modo automático y mucho mas fácil.

¿Cómo podemos gestionar los repositorios de GNU/Linux?

Los repositorios los podemos controlar de dos maneras diferentes, por un lado podemos hacerlo a través de comandos y por otro lado podemos realizarlo por mediación de algún programa especializado. Pero veamos primero como se pueden realizar estas tareas a través de comandos en consola.

Los repositorios en Ubuntu/Kubuntu se guardan en archivo llamado sources.list. La manera en que podemos editar este fichero son varias:

  • En primer lugar podemos añadir líneas al fichero mediante el siguiente comando:

    $sudo add-apt-repository ppa:[nombre del repositorio]

Los nombres de los repositorios serán de este estilo “deb http://archive.ubuntu.com/ubuntu edgy-backports main restricted universe multiverse, deb-src http://archive.ubuntu.com/ubuntu edgy-backports main restricted universe multiverse”

  • Otra manera de gestionar este archivo sería mediante editores de textos, recordemos que habíamos visto el editor de texto nano, podemos editar el archivo con este mismo archivo.

    $sudo nano /etc/apt/sources.list

    Y poder añadir o quitar líneas al archivo manualmente. No obstante, si no queremos usar el editor de texto por consola, podemos editar nuestro archivo con kate, (si nos hallamos en la distro de Kubuntu). Kate no es más que un editor de texto gráfico con el que podemos interactuar con él como un editor de texto al que estamos más acostumbrados.

    $sudo kate /etc/apt/sources.list

kate

  • Una tercera manera de gestionar este archivos es mediante Synaptic1. (Siempre y cuando estemos en distro basada en Debian). Este software nos va a ayudar a gestionar los paquetes de los repositorios, así como también los repositorios en si mismos. Gestionar estos, es tan sencillo como acceder al menú “Configuración” y luego la opción “Repositorios”. Como podemos apreciar en la imagen a continuación.

synaptic

Nota:
Cada vez que cambiemos algo en el archivo de repositorios, debemos actualizar la información del mismo con la siguiente orden:
$sudo apt-get update

O bien con el botón recargar del software Synaptic

1Este programa lo podemos encontrar en Kubuntu en el menú de Inicio–>Aplicaciones–>Sistema–>Gestor de paquetes Synaptic.

Consola (apt-get)

El comando apt es un acrónimo de las palabras inglesas Advanced Packaging Tool, (Herramienta Avanzada de empaquetado). Esta herramienta nos va a ayudar a gestionar la instalación y la desinstalación de paquetes/programas en nuestro sistema Kubuntu. En principio fue creado por el proyecto Debian, pero se ha ido adaptando a otras distribuciones, incluyendo a aquellas que se basan en Debian, como Kubuntu. APT es una biblioteca de funciones C++1 que se emplea por varios programas de línea de comandos para distribuir paquetes.

El comando apt-get precisa de permisos de superusuario, de tal manera que o bien actuamos como root (#) o bien ponemos sudo antes de dar la orden apt-get.

A continuación vamos a ver algunas de las tareas que podemos desempeñar con apt-get:

  • Instalar paquetes: La instalación de paquetes usando el comando apt-get es bastante simple. Por ejemplo, para instalar el programa Qgis, sólo debemos escribir en consola lo siguiente:

    $sudo apt-get install qgis

  • Desinstalar paquetes: La desinstalación de paquetes es también un sencillo proceso. Para quitar el programa en el ejemplo anterior simplemente debemos escribir lo siguiente:

    $sudo apt-get remove qgis

Nota:
Podemos instalar o desinstalar varios paquetes a la vez si los escribimos todos separados por espacios.
$sudo apt-get install nombre_paquete_1 nombre_paquete_2

Como hemos visto en el apartado anterior, podemos actualizar la lista de repositorios mediante la orden:

$apt-get update.


Esta actualización no solamente nos pondrá en la lista nuevas direcciones de repositorios, si no que además chequeará las actualizaciones que se hayan llevado a cabo desde la última actualización en los repositorios.

$sudo apt-get update

Con apt-get también podemos instalar todas las actualizaciones que nos indica el apartado anterior. Para ello sólo tenemos que escribir lo siguiente:
$sudo apt-get upgrade

1C++ es un lenguaje de programación informático.

Paquetes Deb

Los paquetes .deb son archivos que contienen programas para la distribución de GNU/Linux Debian y sus derivadas (por ejemplo, Kubuntu).

La forma de instalación de estos programas como de costumbre se puede realizar de dos maneras diferentes, de forma gráfica o bien por comandos. Así que vamos a ver ambos modos.

  • Desde consola podemos instalar los paquetes .deb con el comando dpkg, veamos un ejemplo:

    dpkg -i paquete.deb

    Como vemos, el comando principal es dpkg, con el modificador -i le estamos diciendo que instale el paquete que a continuación se especifica paquete.deb. El problema de esta manera de instalar los paquetes .deb es que si dicho paquete depende de otros, la instalación se detendrá a menos que le indiquemos lo contrario con el modificador –ignore-depends, lo cual puede llevarnos a una incorrecta instalación del mismo y obtener resultados no deseables.

  • Otra manera de instalar paquetes .deb es a través de programa QApt, el cual, si al instalar el paquete encuentra de que necesita de otros paquetes para el correcto funcionamiento del mismo, los busca y los instala previamente al paquete para el que estamos solicitando la instalación. Algo que nos ayuda muchísimo a la hora de instalar programas que se distribuyen bajo esta forma.

En esta captura vemos el software QApt. Si nos fijamos nos indica el nombre del paquete a instalar, así como su estado. En caso de no tener todas las dependencias satisfechas nos lo indicaría, así como también su número.

Archivos .bin, .run y .sh

Los archivos .bin y .run son instaladores de programas. La particularidad de estos ficheros es que pueden ser instalados en cualquier distribución Linux. Los archivos .sh son un guión o script o fichero de texto que contiene una serie de instrucciones que se pueden ejecutar en la línea de órdenes, y que se ejecutarán seguidas, con el objetivo de instalar paquetes.

Estos tres tipos de ficheros tienen un procedimiento semejante a la hora de ser instalados en nuestro sistema. El cual detallamos a continuación:

  1. El primer paso que debemos hacer para cualquiera de estos tipos es darle permisos de ejecución. (Recordad el punto 3.1, el apartado de comandos básicos y el comando chmod).

    Este paso también puede hacerse de forma gráfica. Accedemos al fichero mediante el navegador de archivos. Hacemos click con el botón derecho encima del mismo y accedemos a sus “Propiedades”, nos vamos al menú “Permisos”, una vez allí le marcamos “es ejecutable”.

ejecutable

  1. Una vez realizado este paso tan sólo debemos ejecutar el instalador. Para ello simplemente debemos ingresar en la consola y acceder al directorio en cuestión. Con el fichero en cuestión identificado, tan sólo debemos escribir en consola lo siguiente para que el fichero se ejecute:

    $ sudo ./nombre_del_fichero_bin

Como podéis comprobar para poder instalar estos ficheros debemos tener permisos de superusuario o root.

Compilación de paquetes

La compilación de paquetes es un proceso de traducción de un código fuente (escrito en un lenguaje de programación de alto nivel) a lenguaje máquina (código objeto) para que pueda ser ejecutado por la computadora. Las computadoras sólo entienden el lenguaje máquina. La aplicación o la herramienta encargada de la traducción se llama compilador.

Dejar claro que la mayoría de paquetes que vamos a necesitar en Kubuntu ya vienen en Synaptic, no obstante, es bueno que conozcamos el proceso, por si acaso nos encontrásemos algún día con la necesidad de compilar algún paquete.

Para compilar en Kubuntu necesitamos de una serie de herramientas que podemos instalar con el comando que ya hemos visto anteriormente, apt-get, estas herramientas se llaman build-essential.

$sudo apt-get install build-essential

Nota:
La desventaja que supone compilar reside en que si lo que vamos a instalar depende de otros paquetes, tendremos que instalar estos manualmente, tantos como sea necesario.
La ventaja reside en que este tipo de paquetes los podemos instalar en cualquier máquina GNU/Linux.

Una vez instalada la herramienta vamos a descargar un código fuente que podamos compilar. Una vez descargado el código fuente, lo descomprimimos y accedemos a su carpeta con la terminal y seguidamente insertamos las siguientes órdenes de forma consecutiva.

$./configure

#make

#make install

MATERIAL DE REFUERZO