Nothing Special   »   [go: up one dir, main page]

4 Comandos Básicos Linux

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 21

Lic. David Escalera C.

ESTRUCUTURA GENERAL DEL SISTEMA DE ARCHIVOS

INTRODUCCION
Linux es un sistema operativo de la familia Unix, gratuito, creado mediante la política de
“código abierto” [viii]. Estas características implican un gran ahorro en los costes de
instalación de los equipos, pero también una mayor especialización por parte del personal
informático. En todo sistema Unix existe un usuario administrador (root), que controla el
funcionamiento completo del sistema, tiene acceso universal y puede realizar cualquier
operación con los datos y los dispositivos de la máquina.

El administrador de cualquier tipo de servidor debe ser una persona especializada, que
conozca lo mejor posible sus equipos, sus aplicaciones y sus usuarios; manteniéndose al
día en los avances tecnológicos, en las revisiones y parches de los programas instalados
y en las necesidades de su empresa

SISTEMA DE ARCHIVOS

La parte del sistema operativo que fija como los archivos son estructurados, nombrados,
accedidos, usados, protegidos e implementados se conoce como "Sistema de Archivos".

Desde el punto de vista del usuario, el aspecto mas importante de un sistema de archivos
es la estructura que refleja el sistema de archivos, que constituye un archivo, como los
archivos se nombran y se protegen, que operaciones están permitidas sobre los archivos,
etc.

INODO
Cada archivo está representado por una estructura llamada inodo. Cada ánodo contiene la
descripción de un archivo: el tipo de archivo, los derechos de acceso, los dueños, los
tiempos registrados, el tamaño, punteros a bloques de datos. Las direcciones de los
bloques de datos que alojan a un archivo, son almacenadas en su ánodo.

Cuando un usuario hace una petición de E/S sobre el archivo, el código del kernel
convierte el desplazamiento actual a un número de bloque, usa este número como un
índice en la tabla de direcciones de bloque y lee o escribe el bloque físico. La figura
siguiente representa la estructura de un inodo.

Estructura de un inodo

NOMBRES DE ARCHIVOS

Las reglas exactas para nombrar archivos, varían de sistema en sistema. En el caso de
Linux es posible tener nombres de archivos de hasta 255 caracteres. Por lo tanto los
siguientes nombres son totalmente validos:

Tony, reporte, README.TXT, ls, cp, Resultados de la primera Fecha - Basket


Lic. David Escalera C. 2

Una característica importante a tener en cuenta es que en Unix/Linux cae en la categoría


de sistemas que distinguen entre letras minúsculas y letras mayúsculas, es decir que es
"case-sensitive". Por lo tanto se consideraran como archivos distintos los siguientes
nombres:

tony, Tony, TONY, tONY

En Linux la extensión es opcional y puede tener la cantidad de caracteres que el usuario


quiera. Asimismo es posible definir archivos con dos o más extensiones. Ejemplos:

README.linux, linux-2.2.5.tar.gz

DIRECTORIOS

Los directorios están representados en una estructura de árbol jerárquica. Cada directorio
puede contener archivos y subdirectorios.

Los directorios están implementados como un tipo especial de archivos. Realmente, un


directorio es un archivo que contiene una lista de entradas. Cada entrada contiene un
número de inodo y un nombre de archivo. Cuando un proceso usa un el nombre de un
camino (pathname), el código del kernel busca en los directorios para encontrar el número
de inodo correspondiente. Después que el nombre se ha convertido a un número de inodo,
el inodo es cargado en memoria para ser usado en peticiones posteriores. La siguiente
figura representa un directorio:

Estructura de un directorio

ESTRUCTURA DEL SISTEMA DE ARCHIVOS

Linux utiliza el concepto de partición raíz y sistemas de archivos montados sobre la


partición raíz. Esto significa que todas las unidades utilizaran una estructura de directorios
común. Así no existirán varias unidades y una estructura de directorios por unidad, sino
que existirá una única estructura de directorios y sobre ella se acomodaran las distintas
unidades, inclusive las que se comparten en redes.

La partición raíz es llamada "/" y es el directorio principal de la estructura. Las unidades,


antes de poder ser usadas, deben ser montadas en el sistema de archivos. Para ello debe
existir un "punto de montaje" donde alojar la información de la unidad. Un punto de
montaje no es más que un directorio cualquiera dentro del sistema de archivos, que debe
encontrarse vacío.

TIPOS DE ARCHIVOS

Existen tres tipos de archivos


 Archivos normales
 Enlaces
Lic. David Escalera C. 3

 Archivos especiales

Archivos normales:
Son los que se trabaja la mayor parte del tiempo pueden contener texto código fuente
archivos de ordenes shell(interprete de comando). Los archivos ejecutables pueden ser
ejecutados directamente en caso que se les asigne el permiso de ejecución.
Archivo de directorio: los directorios son archivos que contienen los nombres de archivos
y subdirectorios así como punteros hacia esos archivos y subdirectorio. Los archivos de
directorio son el único sitio donde linux almacena nombre de archivos.

Enlaces Los enlaces normales no son archivos en absoluto si no simplemente entradas de


directorio que señalan al mismo INODO La tabla de inodos sigue la pista de todos los
enlaces que hay con un archivo y solo cuando se suprime la ultima entrada de directorio
se deja libre el INODO para situarlo en el conjunto de inodos disponibles.

Archivos especiales: En el sistema de archivos se representa todos los archivos físicos


asociados con linux incluyendo terminales, discos, impresoras la mayoría de los
dispositivos están ubicados en el directorio /dev ( los discos almacenan en bloques )

Un guion representa un archivo normal


b es un archivo especial por bloques
c archivo especial por caracteres
d es un directorio
l es un enlace simbólico

Comandos Básicos

Su
El programa su permite usar el intérprete de comandos de otro usuario
sin necesidad de cerrar la sesión actual. Comúnmente se usa para obtener
permisos de root para operaciones administrativas sin tener que salir y
reentrar al sistema. Algunos entornos de escritorio, entre ellos GNOME y
KDE, tienen programas que piden gráficamente una contraseña antes de
permitir al usuario ejecutar un comando que usualmente requeriría tal
acceso.

El nombre su proviene del inglés substitute user (usuario substituto).


También hay quien lo hace derivar de superuser (super-usuario, es decir,
el usuario root o administrador) ya que habitualmente se utiliza para
adoptar el rol de administrador del sistema.

Cuando se ejecuta, su pide la contraseña de la cuenta a la se quiere


acceder, y si es aceptada, da acceso a dicha cuenta.

Al no poner un usuario, se accede como administrador. Sin embargo,


también es posible pasar como parámetro otro nombre de usuario.
Lic. David Escalera C. 4

Una vez introducida la contraseña, podemos ejecutar los comandos como


si fuésemos el otro usuario. Al escribir exit, volvemos a nuestro usuario.

Sudo
Un comando relacionado, llamado sudo, ejecuta un comando como otro
usuario, pero respetando una serie de restricciones sobre qué usuarios
pueden ejecutar qué comandos en nombre de qué otros usuarios
(usualmente especificadas en el archivo /etc/sudoers).

Por otro lado, a diferencia de su, sudo pide a los usuarios su propia
contraseña en lugar de la del usuario requerido; esto permite la
delegación de comandos a usuarios en otras máquinas sin tener que
compartir contraseñas, reduciendo el riesgo de dejar terminales
desatendidas.

Algunos ven como una brecha de seguridad el hecho de


que sudo otorgue un “período de gracia” que permita al usuario
ejecutar comandos como otro usuario sin la necesidad de tener
que ingresar una y otra vez sudo delante del comando y la
contraseña luego de ejecutarlo. Pasado ese “período de
gracia”, sudo volverá a preguntarnos la clave.

Esto es “malo”, esencialmente porque alguien podría apoderarse de


nuestra compu luego de haber ingresado la contraseña de sudo y mientras
el “período de gracia” está activo hacer un DESASTRE.

Afortunadamente, es posible deshabilitar el “período de gracia”, lo que


va a mejorar la seguridad de tu sistema. Sólo hay que agregar una línea
en el archivo /etc/sudoers:

sudo nano /etc/sudoers


Y agregá la siguiente línea al final del archivo:
Lic. David Escalera C. 5

Defaults:ALL timestamp_timeout=0
El cambio tiene efecto en forma inmediata, sin necesidad de reiniciar el
sistema.

FICHEROS Y DIRECTORIOS

Cambiar de directorio: (CD)

Cuando hacemos login en linux, iremos al directorio base del usuario con el que hagamos
login, por ejemplo, si lo hacemos como " root " iremos a /root , si lo hacemos como " jose
" iremos al directorio /home/jose ... en ese direcctorio base es en el que debemos instalar
nuestros programas, compilar, editar archivos... Para cambiar de directorio, lo hacemos
al igual que en ms-dos, con el comando " cd ".

Si no introducimos ningún nombre de directorio, el mandato cd sin argumentos vuelve a


nuestro directorio de trabajo. Si queremos volver al directorio de nivel superior basta con
utilizar cd ..

En este punto cabe destacar que, al igual que vimos en Windows, en Linux también
podemos hacer referencia a los ficheros y directorios de 2 maneras:

 Rutas absolutas. Se forman empezando en el directorio raíz y acabando en el


punto al que queremos hacer referencia. Por ejemplo, si nuestro usuario se llama
pepito y queremos hacer referencia a su directorio personal, la ruta absoluta
sería /home/pepito.
 Rutas relativas. Se forman usando los directorios especiales . y .. y empiezan
siempre en el directorio actual. Como recordaréis, el directorio especial . hace
referencia al directorio actual y el directorio especial .. hace referencia al directorio
padre del actual. Así, si por ejemplo estamos situados en el directorio /etc y
queremos ir al directorio personal de pepito, la ruta relativa
sería ../home/pepito.

Ejemplo:

Si queremos consultar el contenido del fichero passwd podemos acceder a él a través de


su camino absoluto:
$ cat /etc/passwd

o a través del relativo:

$ cd /etc

$ cat passwd

Para volver al directorio padre, ponemos " cd .. " y para ir al raiz, ponemos " cd / ".

NOTA: En linux, como se verá mas adelante, existen los llamados permisos, que filtran
el uso de ficheros o directorios por parte de usuarios. El dueño del fichero y el root,
pueden definir estos permisos a su antojo, con la única salvedad de que para el root no
existen permisos, el puede leer cualquier cosa que haya en el sistema... si, incluso tu e-
mail personal, por tanto el root, no puede ser cualquier persona, sino alguien con
responsabilidad y respeto por los demás usuarios.

Ver la ruta donde nos encontramos:


Lic. David Escalera C. 6

Para saber donde nos encontramos, tecleamos:

$pwd

Este comando nos devuelve la ruta actual en la que nos encontramos.

Listar el contenido de un directorio:


Esto se hace a través del comando:

ls [-alF] [--color] [directorio/s] [fichero/s]

Por ejemplo para ver el contenido de /etc , si nos encontramos en el, simplemente
hariamos:

/etc$ ls

Una vez que estamos en un directorio concreto lo más probable es que queramos saber
el contenido del directorio. Para ello disponemos de la orden ls. Su nombre viene de
"listar" (en inglés, "list") y eso es precisamente lo que hace, listar el contenido de un
directorio. Si le pasamos un argumento nos mostrará el contenido del directorio que le
pasamos y si no, nos mostrará el contenido del directorio actual. La orden ls tiene multitud
de opciones. A continuación vamos a ver las más destacadas:

 ls -a muestra todos los archivos y directorios, incluso los ocultos (los que
comienzan con un punto).
 ls -l muestra un listado en el formato largo, con información de permisos (que ya
explicaremos más adelante), número de enlaces duros asociados al archivo,
usuario, grupo, tamaño en bytes y fecha de última modificación además del
nombre.
 ls -lh muestra la misma información que con la opción -l pero el tamaño del
fichero se muestra en unidades más entendibles (K, M, G...).
 ls -S muestra el contenido ordenado por tamaño de archivo.
 ls -t muestra el contenido ordenado por la fecha de última modificación.
 ls -r muestra el contenido ordenado de forma inversa.
 ls -R muestra la estructura de directorios que cuelga del directorio actual o del
que le pasemos como argumento.
 ls -i muestra el número del inodo en el que están los datos de cada fichero o
directorio. Si tenemos 2 ficheros que son enlaces duros del mismo fichero veremos
que el número del inodo es el mismo.
 ls -m muestra los ficheros y directorios en una sola fila, separados por comas.
 ls -1 muestra los ficheros y directorios en una sola columna.

Las opciones pueden combinarse entre sí. Por ejemplo, si ejecutamos la orden ls -lSa se
mostrará por pantalla el contenido del directorio actual ordenado por el tamaño de los
ficheros (por la opción -S) mostrando también los archivos ocultos (por la opción -a) y
en formato de lista larga (por la opción -l).

Echo

echo - muestra una línea de texto

echo *.jpg

echo [option(s)] [string(s)]

echo Today is `date`

Declarar una variabkle x=10


echo $x Muestra el valor de x
Lic. David Escalera C. 7

echo –e “Hola \n que tal”


Hola
que tal

echo –e “Hola \t que tal”


Hola que tal

Echo “Test de comando” > prueba


Cat prueba
Test de comando

SIGNIFICADO DE LOS CAMPOS EN EL LISTADO DE FICHEROS


Como se ha comentado anteriormente al efectuar el mandato ls -l aparecen una serie de
entradas (filas), de tal forma que cada una de ellas hace referencia a un fichero. Una
entrada típica consta de varios campos. El significado de cada uno de ellos es el siguiente:

 Modos fichero (bits de protección): El primer elemento (el de más a la izquierda)


especifica el tipo de fichero. Los valores posibles son 'd', si hace referencia a un
directorio, vacío('-'), si hace referencia a un fichero ordinario y 'l' si hace referencia
a un enlace. El resto de los elementos son los llamados bits de protección. Están
compuestos por tres secuencias contiguas de valores 'r', 'w' y 'x'. El significado de
estas secuencias y sus valores lo estudiaremos más adelante.

 Número de enlaces: Para ficheros, indica el número de enlaces físicos que se


refieren a ese fichero. Para el caso de directorios este número coincide con el
número de subdirectorios existentes en ese directorio más dos. Es decir, si el
directorio no tiene subdirectorios, su número de enlaces es 2, si tiene un
subdirectorio su número sería 3, y así sucesivamente.

 Nombre propietario: Indica el nombre del propietario del fichero.

 Nombre grupo: Un conjunto de usuarios puede formar parte de un grupo con una
serie de características en común. Este campo hace referencia al grupo al que
pertenece el usuario.

 Tamaño fichero: Muestra el tamaño de fichero en bytes.

 Fecha y hora de la última modificación: Hace referencia a la hora en que el


fichero fue modificado por última vez. Si dicha fecha supera el medio año de
antigüedad entonces éste también aparece en la fecha. Si queremos saber cuando
se accedió por última vez utilizamos la opción -u combinada con -l.
Lic. David Escalera C. 8

Utilizar la tecla Tab para terminar comandos


Para escribir o localizar rápidamente el nombre de un comando o de todos los comandos
que tengan una ortografía similar escriba las primeras letras del nombre de un comando
y luego pulse la tecla Tab del teclado.

Ejemplo:
$ da
El resultado de pulsar la tecla Tab es:
$date

Si solo introduce las primeras letras tendrá que pulsar Tab dos veces.

Órdenes de creación
Crear Directorios:

Esta tarea la realizaremos con el comando:

 mkdir: Esta orden sirve para crear una carpeta o directorio cuyo nombre
será el que le pasemos como argumento a dicha orden.

También podemos crear directorios en lugares distintos al que nos encontramos,


mediante el uso de rutas absolutas o relativas. Así, si deseamos crear el
directorio Musica en /etc y nos encontramos en /home/alumno, tenemos 2
opciones:

$ mkdir /etc/Musica, o bien $ mkdir ../../etc/Musica

Con el comando mkdir también podemos crear varios directorios en una misma
orden. Para ello, no tenemos más que introducir tantos argumentos como carpetas
queramos crear. Así, la orden $ mkdir Documentos Imagenes Musica, creará
esos 3 directorios en el directorio actual de trabajo.

Crear Archivos

 touch

La orden touch sirve para cambiar la fecha de acceso y modificación de un


fichero que le pasemos como argumento. Si dicho fichero no existe, lo creará vacío con
el nombre que le hayamos pasado como argumento.

Por ejemplo, si ejecutamos la orden $ touch ejemplo.txt, creará un archivo vacio con
el nombre "ejemplo.txt" si no existía anteriormente, o simplemente modificará su fecha
de acceso y modificación con la fecha actual del sistema, si existía con anterioridad.

Al igual que con el comando mkdir, con la orden touch podemos crear varios archivos con
una sola orden: $ touch fich1 fich2 fich3 fich4

 vi

Para crear archivos podemos utilizar un editor de texto como el “vi”, vim o nano
Ejecutamos el comando vi y nos desplegará un entorno para poder ingresar información.
El comando cat también nos permite crear un archivo direccionando la información.

 cat > archivo

Para definir fin de archivo se presiona la tecla Ctrl.-D


Lic. David Escalera C. 9

Borrar Directorios

Hay dos formas para realizar esto:

rmdir [directorio] ( solo borra directorios vacíos)

rm [-friv] nombre (para borrar directorios y ficheros)

Los parametros de rm son :

ParámetroFunción
-f No pide confirmación
-r Borrado recursivo de archivos y directorios
-v Se muestra lo que se va borrando
-i Se pide confirmación para cada fichero o directorio

Al igual que hemos visto en otras órdenes, podemos borrar varios ficheros o directorios
(según la orden) en una linea si se los pasamos como argumento. Así, si ejecutamos

$ rmdir pepito juanito paquito

borrará esos 3 directorios del directorio de trabajo actual.

La orden rm tambiénn sirve para eliminar directorios completos. Si el directorio contiene


ficheros y queremos borrar tanto el directorio como su contenido tendremos que usar la
orden rm con la opción -R. Mucho cuidado al utilizar esta opción, ya que podríamos
borrar información importante.

Copiar ficheros

Cuyo formato básico es:

cp [origen] [destino]

Existen parámetros para este comando que pueden ser consultados a través de las páginas
de manual de Linux

Por ejemplo, si ejecutamos la orden

$ cp fichero1.txt copiafichero1.txt

Se copiará el contenido del fichero fichero1.txt en copiafichero1.txt, encontrándose


ambos en el directorio de trabajo actual.

Por otro lado, si en lugar de un fichero, indicamos como destino un directorio, lo que
sucederá es que creará una copia del archivo origen en el destino especificado. Por
ejemplo:

$ cp fichero2.txt /home/alumno

Creará un archivo con el mismo nombre que el original en el directorio /home/alumno.

En la orden cp, al igual que en la orden rm, disponemos de la opción -R para copiar
directorios enteros con todo su contenido.

Así, si ejecutamos la orden


Lic. David Escalera C. 10

$ cp -R /home/alumno/directorio1 /tmp

Copiará todo el contenido de la carpeta directorio1 en el destino indicado, que en este


caso es /tmp.

Mover/Renombrar ficheros

Ambas acciones se realizan a través del comando:

mv [origen] [destino]

Si lo que se quiere es renombrar el fichero, el destino será el mismo directorio pero un


nombre de archivo diferente.

Nota: Evidentemente, los usos de los comandos anteriores variaran dependiendo de los
permisos que tengan los ficheros o directorios sobre los que se quieran aplicar.

La orden mv tiene otra utilidad, que es la de cambiar el nombre a un archivo. Para ello,
no tenemos más que pasarle como argumentos el nombre del fichero que queremos
renombrar y el nombre nuevo, de la siguiente manera:

$ mv antiguonombre.txt nuevonombre.txt:q!

Ver el contenido de un fichero

Para ver el contenido de los ficheros, aparte de los editores, existen tres comandos:

Muestra el contenido de un fichero de una


- cat
sola tirada.
Muestra el contenido tramo a tramo.
- more . Nos dice además el porcentaje de fichero que ya ha sido listado.

Igual que more, pero permite movernos


- less
por el fichero con los cursores.

La orden cat permite listar varios ficheros secuencialmente. Si tenemos dos ficheros
llamados fichero1 y fichero2, la orden:

$ cat fichero1 fichero2

 cat -n numera todas las líneas del texto, incluso las vacías. En concreto, pone
un número delante de cada línea al mostrarlas por pantalla.
 cat -b numera todas líneas del texto que no sean vacías. Las líneas vacías las
muestra pero no les pone ningún número delante.
 less -N muestra un número de línea delante de cada línea de texto que contiene
el fichero.
 less -w al avanzar una página nos señala cual es la primera línea que no estaba
en la página anterior. Sirve para saber por donde nos habíamos quedado
leyendo cuando cambiamos a la siguiente página.

En ocasiones no queremos ver un fichero de texto completo sino sólo el principio o el


final. Para ello, el shell de Linux dispone de 2 órdenes, head y tail, que muestran
respectivamente las primeras o las últimas 10 líneas del fichero que le pasemos como
argumento. Si en vez de mostrar 10 líneas queremos mostrar más o menos, ambas
órdenes comparten las siguientes opciones:
Lic. David Escalera C. 11

head

Visualiza las primeras 10 líneas del fichero especificado o de la entrada estándar.


Formato:

head [-numero][fichero...]

 head -n X o tail -n X muestran las primeras o las últimas X líneas del fichero.
Por ejemplo, si queremos ver las primeras 7 líneas de un fichero haríamos head
-n 7.
 head -c X o tail -c X muestran los primeros o los últimos X bytes (normalmente
un caracter equivale a un byte) del fichero. Por ejemplo, si queremos ver los
últimos 20 bytes de un fichero haríamos tail -c 20.

tail

Visualiza las últimas 10 líneas del fichero especificado o de la entrada estándar.


Formato:

tail [+numero][-numero][fichero]

+numero # se visualiza desde la línea numero


-numero # cuantas líneas se visualizan empezando a contar desde el final del fichero.

Edición de textos
Una vez que hemos visto como se visualizan los textos en el shell de Linux vamos a ver
qué opciones tenemos para editarlos.

El editor vi dispone de 2 modos. En primer lugar tenemos el modo de edición, en el que


todo lo que escribamos será añadido al fichero que estamos editando. El segundo modo
es el modo de comandos, en el que las teclas que pulsemos serán interpretadas como
comandos del editor. Podemos alternar entre un modo y otro mediante la tecla ESC.

En el modo de comandos nos podemos mover por el texto libremente mediante las flechas
de dirección. Los principales comandos son:

 dd borra una línea completa.


 i inserta texto antes del carácter sobre el que está el cursor.
 a inserta texto después del carácter sobre el que está el cursor.
 I inserta texto al comienzo de la línea en la que está el cursor.
 A inserta texto al final de la línea en la que está el cursor.
 o abre espacio para una nueva línea después de la línea en la que está el cursor
y permite insertar texto en la nueva línea.
 O análogo al anterior, pero abre espacio en la línea anterior.
 ESC como hemos dicho antes, permite bandonar el modo de inclusión de texto
para volver al modo de comandos; también se usa para cancelar comandos.
(Usarlo en caso de duda).
 Ctrl-F avanzar una pagina hacia adelante.
 Ctrl-B avanzar una pagina hacia atrás.
 Ctrl-L refrescar la pantalla.
 G poner el cursor al final del fichero.
 1G poner el cursor al principio del fichero.
 XG poner el cursor en la línea X.
 $ poner el cursor al final de la linea.
 0 (cero) poner el cursor al principio de la linea.
 / texto busca el texto en el fichero y sitúa el cursor delante de la primera
coincidencia que encuentra.
 :set number pone el número de línea de cada una.
 :q salir del editor si no ha habido cambios.
Lic. David Escalera C. 12

 :q! salir del editor sin guardar los cambios.


 :w guardar los cambios.
 :wq guardar los cambios y salir del editor.
 ZZ guardar los cambios y salir del editor.

Como podéis ver, el editor de textos vi se maneja completamente desde el teclado y,


aunque pueda parecer un poco complicado de usar en un principio, es muy potente.

Comando Who

Esta orden visualiza los usuarios conectados a una máquina. El formato que utiliza who
es el siguiente

 Nombre del usuario: login


 Terminal de conexión: tty???
 Momento de la conexión

También puede utilizarse para conocer la propia identidad who am i

Comando Date
Esta orden permite consultar la fecha y hora del sistema El formato que utiliza date es el
siguiente:
 día de la semana
 mes
 día del mes
 hora
 zona horaria
 año

date también sirve para modificar la fecha y hora, pero sólo el superusuario puede
modificar estos valores. La fecha y hora son valores críticos para un sistema multiusuario.
Muchos de los servicios del sistema dependen de que estos valores sean correctos. Por
ello, tan sólo el superusuario puede modificarlos.
date –s h:m:s

Comando cal

Cal mes año Muestra un calendario del mes y año especificados cal 12 2005

Comando df

(Disk Free) nos informa del espacio disponible de las unidades de disco (locales o de red)
que tengamos montadas.

OPCIONES:

-a Incluye sistemas de archivos falsos.


-h Mostrar los tamaños en formato legible por humanos (1K 234M 2G)
-H Muestra tamaños en formato legible por humanos, pero utiliza potencias de 1000, no de 1024.

-i Listar información de inodos en vez de uso de bloques.


Lic. David Escalera C. 13

-l Limitar el listado a sistemas de archivos locales.


-T Mostrar el tipo de sistema de archivos.

Comando du, uso del espacio de un directorio

El comando du nos indica el espacio que ocupa un directorio del sistema de ficheros y
todo lo que tiene debajo de él.

Es tan fácil de usar como útil: du directorio/.

du –h /home/user

Comando uname

Indica nombre y versión del sistema operativo. Usado con la opción -a muestra toda la
información.

$ uname -a

Linux hostname 2.4.21 #1 SMP Thu Sep 4 20:50:32


CEST 2003 i686 unknown

uname -a: Nos muestra toda la información de nuestro sistema y nuestro ordenador.
uname -r: La versión del Kernel de nuestro sistema
uname -v: La fecha de publicacion del Kernel de nuestro sistema
uname -n: Muestra el nombre de nuestro ordenador (el que asignamos al instalar el SO).

uname -m: Muestra la arquitectura de nuestro procesador (i386, i486, i586, i686).

uname -s: Nos muestra el nombre del kernel.


uname -o: Nos muestra el nombre del sistema operativo.
Lic. David Escalera C. 14

Ordenes de búsqueda
Caracteres comodines:

Como son " * " y " ? ", habituales en ms-dos, " * " se refiere a una cadena de caracteres y
" ? " a un solo caracter.

Por ejemplo:

$ ls h*

listara todos los ficheros que empiecen por h de la ruta actual.

$ ls cas?

Listara todos los ficheros que empiecen por cas, tengan 4 letras, y acaben por cualquier
carácter.

Las llaves ‘{‘,’}’ deben contener diferentes alternativas, constituidas por un carácter o un
grupo de caracteres, separadas todas ellas por comas. El shell utiliza todas las alternativas
especificadas para formar una serie de nombres a partir del patrón donde aparezcan.

Ejemplos: Vamos a utilizar la orden ls, aunque en principio los comodines se pueden
aplicar a cualquier orden. Por ejemplo, pruébense los siguientes mandatos sobre un
directorio vacío:

$ touch a2 fichero{1,2,3,4,5,12} c{1,2,3}


$ ls
$ ls a*
$ ls fichero?

FIND

Linux nos ofrece una herramienta muy potente para realizar búsquedas en el Sistema de
Ficheros: la orden find. Esta orden necesita que le pasemos como argumentos el
directorio donde deseamos hacer la búsqueda y una expresión que se refiera a lo que
queremos buscar. Para dicha expresión tenemos varias opciones:

 -name se refiere al nombre del fichero que queremos buscar. Después de poner
-name debemos indicar entre comillas una expresión referida al nombre del
fichero que estamos buscando. Dicha expresión distinguirá mayúsculas y
minúsculas. Por ejemplo, find / -name "*.conf" buscará todos los ficheros que
acaben en .conf y estén situados en el directorio raíz o sus subdirectorios. Para
la expresión del nombre del fichero que buscamos podemos utilizar los
metacaracteres que ya conocemos.

 -iname es igual a la anterior pero no distingue entre mayúsculas y minúsculas.

 -maxdepth sirve para indicarle la profundidad en subdirectorios a la que


queremos buscar. Por ejemplo, find / -maxdepth 2 buscará en el directorio raíz
y sus subdirectorios directos, pero no más allá.

 -size [+-]X[ckMG] permite hacer búsquedas por el tamaño de fichero. Como


vemos, se admiten varias opciones en la expresión. Puede empezar por +, lo cual
indicará que buscamos ficheros que sean mayores de cierto tamaño, o por -, con
lo que estaremos buscando ficheros cuyo tamaño sea menor al especificado.
Después del signo se debe poner una cantidad y seguidamente c (referido a
bytes), k (referido a kilobytes), M (referido a Megabytes) o G (referido a
Lic. David Escalera C. 15

Gigabytes). Por ejemplo, si queremos buscar un fichero que ocupe más de 10MB
y menos de 1GB tendríamos que poner find / -size +10M -size -1G.

 -type [dfl] busca por tipo de fichero, pudiendo especificar si buscamos directorios
(d), ficheros normales (f) o enlaces simbólicos (l). Por ejemplo, si queremos
buscar directorios en /etc debemos hacer find /etc -type d.

 -samefile busca enlaces duros al fichero que le pasemos como expresión. Por
ejemplo, si queremos saber todos los enlaces duros que tiene el fichero texto.txt
del directorio actual deberemos hacer find / -samefile texto.txt. No buscamos
en el directorio actual, sino en el directorio raíz, para así encontrar todos los
enlaces duros que haya en cualquiera de los directorios del sistema de ficheros.

 -user permite buscar ficheros que pertenecen a determinado usuario. Por


ejemplo, si queremos ver los ficheros que pertenecen al usuario alumno debemos
ejecutar find / -user alumno.

 -group permite buscar ficheros que pertenecen a determinado grupo. Por


ejemplo, si queremos buscar ficheros que pertenezcan al grupo root haremos find
/ -group root.

 -amin X busca ficheros cuya fecha de último acceso sea de hace X minutos. Si el
número va precedido de un + buscamos ficheros que hayan sido accedidos hace
más de X minutos. Si va precedido de un - lo que buscamos son ficheros que
hayan sido accedidos hace menos de X minutos. Si no ponemos ni + ni - buscamos
ficheros que hayan sido accedidos hace exactamente X minutos. Por ejemplo, para
ficheros que hayan sido accedidos en los últimos 5 minutos find / -amin -5.

 -atime X busca ficheros cuya fecha de último acceso sea de hace X días. Si el
número va precedido de un + buscamos ficheros que hayan sido accedidos hace
más de X días. Si va precedido de un - lo que buscamos son ficheros que hayan
sido accedidos hace menos de X días. Si no ponemos ni + ni - buscamos ficheros
que hayan sido accedidos hace exactamente X días. Por ejemplo, para ficheros
que hayan sido accedidos en los últimos 5 días find / -atime -5.

 -cmin X busca ficheros cuya fecha de último cambio de estado sea de hace X
minutos. Si el número va precedido de un + buscamos ficheros que hayan
cambiado de estado hace más de X minutos. Si va precedido de un - lo que
buscamos son ficheros que hayan cambiado de estado hace menos de X minutos.
Si no ponemos ni + ni - buscamos ficheros que hayan cambiado de estado hace
exactamente X minutos. Por ejemplo, para ficheros que hayan cambiado de estado
hace más de 30 minutos find / -cmin +30.

 -ctime X busca ficheros cuya fecha de último cambio de estado sea de hace X
días. Si el número va precedido de un + buscamos ficheros que hayan cambiado
de estado hace más de X días. Si va precedido de un - lo que buscamos son
ficheros que hayan cambiado de estado hace menos de X días. Si no ponemos
ni + ni - buscamos ficheros que hayan cambiado de estado hace exactamente X
días. Por ejemplo, para ficheros que hayan cambiado de estado hace más de 1
mes find / -ctime +30.

 -mmin X busca ficheros cuya fecha de última modificación sea de hace X minutos.
Si el número va precedido de un + buscamos ficheros que hayan sido modificados
hace más de X minutos. Si va precedido de un - lo que buscamos son ficheros que
hayan sido modificados hace menos de X minutos. Si no ponemos
ni + ni - buscamos ficheros que hayan sido modificados hace exactamente X
minutos. Por ejemplo, para ficheros que hayan sido modificados hace
exactamente 1 minuto find / -mmin 1.
Lic. David Escalera C. 16

 -mtime X busca ficheros cuya fecha de última modificación sea de hace X días.
Si el número va precedido de un + buscamos ficheros que hayan sido modificados
hace más de X días. Si va precedido de un - lo que buscamos son ficheros que
hayan sido modificados hace menos de X días. Si no ponemos ni + ni - buscamos
ficheros que hayan sido modificados hace exactamente X días. Por ejemplo, para
ficheros que hayan sido modificados hace exactamente 1 año find / -mtime 365.

 -newer se refiere a ficheros que hayan sido modificados más recientemente que
un fichero determinado. Por ejemplo, si queremos saber que ficheros se han
modificado más recientemente que /etc/sos.conf tendremos find / -newer
/etc/sos.conf.

find /etc –name “*.txt” Busca en el directorio /etc los archivos


terminados en .txt imprime sus nombres
en la salida.
find /etc –size +200k Busca archivos mayors de 200K, +N es
mayor que N, -N es menor que N, N es
axactamente igual a N
find /etc –atime + 30 Busca archivos no accedidos hace mas de
30 dias- La opción atime se refiere a
tiempo transcurrido desde ultima lectura
find /etc -name '*.f' Busca, a partir del directorio /etc, todos
los archivos que terminen en .f. El uso
de las comillas es indispensable porque
de lo contrario, el shell sustituye por el
asterisco los nombres de todos los
archivos en el directorio de partida.

Find -empty Busca archivos vacios

SORT

En Linux también disponemos de un comando para ordenar listas denominado sort. Su


principal cometido es ordenar las líneas de texto que se le pasen como argumento según
distintos criterios. Por defecto las ordena por orden alfabético:

 sort -n usa un orden numérico. Por ejemplo, si queremos ver los contenidos del
directorio actual ordenados por su tamaño podemos hacer ls -s | sort -n. Como
vemos, la utilidad de sort viene al concatenarlo con otros comandos como por
ejemplo ls o find. En este caso usamos ls -s para listar los contenidos del directorio
actual precedidos de su tamaño y con la barra | decimos que el resultado de
ejecutar ese ls -s se le debe pasar a sort -n como argumento. Por su parte, sort -
n ordena numéricamente lo que se le ha pasado, por lo que realmente está
ordenando el contenido del directorio actual de menor a mayor tamaño de fichero.
 sort -r ordena los resultados en orden inverso. Por ejemplo, para ordenar los
contenidos del directorio actual en orden inverso podríamos hacer ls | sort -r.
 sort -f ordena alfabéticamente ignorando las mayúsculas y minúsculas.

La orden sort también es muy útil para ordenar los resultados de las búsquedas que se
realizan con find.

Clasificación por defecto. Ordenación alfabética a partir del primer carácter de la línea

$ sort gente
Lic. David Escalera C. 17

Bill Williams 100


Charlie Smith 122
Hank Parker 114
Henry Morgan 112
Jack Austen 120
Jane Bailey 121
Maryann Clark 101
Sally Smith 113
Steve Daniels 111
Sylvia Dawson 110
Las líneas se dividen en campos delimitados por blancos. La clasificación puede
realizarse utilizando números de campo, con la opción –k desde,hasta:
- A partir del segundo campo -Sólo el segundo campo

$ sort –k2 gente $ sort –k2,2 gente

Jack Austen 120 Jack Austen 120


Jane Bailey 121 Jane Bailey 121
Maryann Clark 101 Steve Daniels 111
Sylvia Dawson 110 Sylvia Dawson 110
Henry Morgan 112 Henry Morgan 112
Hank Parker 114 Hank Parker 114
Sally Smith 113 Charlie Smith 122
Charlie Smith 122 Sally Smith 113
Bill Williams 100 Bill Williams 100

En el primer ejemplo se ordena por apellido y luego por número, y en el segundo sólo por
apellido. La diferencia puede observarse en la penúltima y antepenúltima líneas

GREP

Para buscar dentro de ficheros de texto disponemos de la orden grep. También es muy
útil para buscar entre los resultados de un find o de un ls. Esta orden busca dentro de
los ficheros las líneas que coincidan con el patrón de búsqueda especificado. Para
especificar dicho patrón de búsqueda podemos recurrir a los metacaracteres que ya
conocemos. Algunas de sus opciones son:

 -número Las líneas concordantes se mostrarán acompañadas del número


especificado de líneas anteriores y posteriores.
 -A X Muestra X líneas de contexto después de las que concuerden con el patrón.
 -B X Muestra X líneas de contexto antes de las que concuerden con el patrón.
 -c En lugar de mostrar el contenido de las líneas que conciden con el patrón de
búsqueda muestra el número de líneas que concuerdan con el patrón para cada
fichero de entrada.
 -h Suprime la impresión de los nombres de ficheros antes de las líneas
concordantes en la salida, cuando se busca en varios ficheros.
 -i No hace caso de si las letras son mayúsculas o minúsculas ni en el patrón ni en
los ficheros de entrada.
 -L Suprime la salida normal. En su lugar muestra el nombre de cada fichero de
entrada donde no se encuentre ninguna concordancia y por lo tanto de cada
 fichero que no produciría ninguna salida. La búsqueda se detendrá al llegar a la
primera concordancia.
 -l Suprime la salida normal. En su lugar muestra el nombre de cada fichero de
entrada que produciría alguna salida. La búsqueda se detendrá en la primera
concordancia.
 -n Prefija cada línea de salida con el número de línea de su fichero de entrada
correspondiente.
Lic. David Escalera C. 18

 -q Modo silencioso; suprime la salida normal. La búsqueda finaliza en la primera


concordancia.
 -v Invierte el sentido de la concordancia, para seleccionar las líneas donde no hay
coincidencias con el patrón.
 -w Selecciona solamente aquellas líneas que contienen concordancias que forman
palabras completas.
 -x Selecciona solamente aquellas concordancias que constan de toda la línea.

Como hemos dicho antes, el comando grep es muy útil para buscar entre los resultados
de un ls o de una búsqueda con find. Esto se hace concatenando la salida de ls o find
con la entrada de grep mediante la barra vertical |. Por ejemplo, para buscar entre el
contenido del directorio actual todos los ficheros o directorios cuya fecha sea de 2010
podemos hacer ls -l | grep 2010. También podemos concatenar varios
comandos grep para afinar más la búsqueda, por ejemplo buscando solo los que sean de
junio de dicho año: ls -l | grep 2010 | grep Jun.

Por ejemplo:

$ grep Smith gente

Charlie Smith 122


Sally Smith 113

$ Grep -n Smith gente


Muestra el número de línea de las palabras encontradas

Comando wc

Cuenta las líneas, palabras y caracteres que contengan los archivos


Referenciados.

wc [-opcion][fichero...]

-l # cuenta el número de líneas de un archivo


-w # cuenta el número de palabras de un archivo
-c # cuenta el número de caracteres de un archivo

TUBERÍAS
UNIX también permite usar la salida estándar de un proceso como la entrada estándar de
otro, tal y como si colocáramos una tubería que los uniera. A una secuencia de órdenes
enlazadas de este modo, se le llama tubería (pipeline). Para conectar dos procesos con
una tubería, usaremos el símbolo |

comando1 | comando2 | comando3 # la salida del comando1 es


tomada como entrada por el
comando2, la utiliza, y la salida
de este es tomada por el comando3
como entrada.
comando1 | comando2 > archivo1 # la salida del comando1 es
tomada como entrada por el
comando2 y la salida se guarda en
el fichero archivo1.
Lic. David Escalera C. 19

Ejemplos

cat /etc/passwd | head


cat | more
cat /etc/passwd | wc –l
who | wc –l > lista

Comando CUT

El comando cut nos permite buscar y/o seleccionar columnas o campos dentro de un
archivo estructurado.

En el caso de los campos, los archivos deben estar estructurados y entre campo y campo
debe existir obligatoriamente un delimitador. Este delimitador puede ser: los dos puntos
( : ), el tabulador, espacio en blanco, u otro carácter.

Para seleccionar un campo dentro de un fichero debemos especificar el número de campo


después del parámetro:

cut -f numerodecampo fichero

Por defecto, el delimitador es el tabulador. Si utilizamos otro delimitador, lo indicaremos


mediante el parámetro -d . Por ejemplo:

cut -f numerodecampo -d"delimitador" fichero

Si trabajamos con columnas nos encontramos como primera referencia que tenemos
campos de longitud fija, mientras que con los campos estos pueden ser de longitud
variable.

El número de cada columna hace referencia a su posición dentro de la línea. Indicamos


las columnas con el parámetro -c número de columna y fichero. Por ejemplo:

-c corta columnas ----> cut -c 1-3 /etc/passwd

Recomiendo que practique este comando y sus distintas posibilidades, ya que es


realmente útil, a continuación unos ejemplos:

cut -c 1-3 /etc/passwd Corta desde el primer carácter hasta el


tercer carácter del archivo passwd
cut -c 1,3 /etc/passwd Corta el primer carácter y el tercer carácter
del archivo passwd
ls -l /etc|cut -c 2-10 Del listado largo del directorio /etc cortar
desde el segundo caracter hasta el decimo
caracter
ls -l /etc|cut -f 1 -d " " Del listado largo del directorio /etc corta el
campo 1 hasta que encuentre un espacio
cut -f 5,3 -d ":" /etc/passwd Del archivo /etc/passwd cortar el campo 5 y
3 entre los delimitadores “:”

cat /etc/passwd | head -10 | cut -d “:” -f Del listado del archive /etc/passwd obtener
las primeras 10 lineas y cortar el campo 1 y
1,7
7 con el delimitador “:”

Comando PASTE

Paste es lo suficientemente util para incluirlo en esta lista de comandos basicos, porque puede
ahorrar mucho trabajo con el editor. Si tenemos dos archivos con columnas, por ejemplo:
Lic. David Escalera C. 20

archivo a archivo b
xx yy uu vv
zz 11 ww 22

entonces el comando

paste a b >c

produce un archivo de esta forma:

xx yy uu vv
zz 11 ww 22

REDIRECCIÓN DE LA SALIDA ESTÁNDAR


Los operadores de redireccionamiento del shell se usan para dirigir las entradas y salidas
de un programa. EL shell se puede utilizar para cargar la entrada de programa de otra
aplicación, de la línea de comando o incluso de otro archivo.

Cuando se usa con el carácter > que se conoce como operador de redireccionamiento de
salida estándar, el comando cat copiará un archivo enviando la salida a otro archivo

Ejemplo
$ cat archivo1 > archivo2

El operador de redireccionamiento < (de entrada estandar) suministra información a un


programa de esta forma.
$ cat < archivo

Si un nombre de fichero está precedido por el símbolo >, la salida estándar de un


programa se redirige hacia el fichero. Comprobar ...
$ ls -l > dir.dat
$ cat dir.dat
...

Si el fichero especificado no existía antes de la orden, se crea y si ya existía, se


reemplazará su contenido. Comprobar
$ ls -l > salida.dat
$ cat salida.dat
$ who > salida.dat
$ cat salida.dat
...
Según esto, podemos usar este método para crear un fichero vacío. Así:
$ > vacio

Para crear un fichero con un determinado contenido, podemos usar la orden cat
redirigida:

$ cat > texto


cat es una orden útil para
generar ficheros nuevos.
<Crtl>d
$ cat texto
...
Lic. David Escalera C. 21

Si queremos que la salida de un programa se añada al contenido actual de un fichero,


usaremos el símbolo >>. Por ejemplo...
$ ls -l > salida.dat
$ cat salida.dat
$ echo Ultima linea >> salida.dat
$ cat salida.dat

También podría gustarte