Archivos de la categoría Uso Terminal

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