4 Comandos Básicos Linux
4 Comandos Básicos Linux
4 Comandos Básicos Linux
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:
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.
Estructura de un directorio
TIPOS DE ARCHIVOS
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.
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.
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.
Defaults:ALL timestamp_timeout=0
El cambio tiene efecto en forma inmediata, sin necesidad de reiniciar el
sistema.
FICHEROS Y DIRECTORIOS
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 ".
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:
Ejemplo:
$ 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.
$pwd
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 *.jpg
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.
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:
mkdir: Esta orden sirve para crear una carpeta o directorio cuyo nombre
será el que le pasemos como argumento a dicha orden.
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
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.
Borrar Directorios
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
Copiar ficheros
cp [origen] [destino]
Existen parámetros para este comando que pueden ser consultados a través de las páginas
de manual de Linux
$ cp fichero1.txt copiafichero1.txt
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
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.
$ cp -R /home/alumno/directorio1 /tmp
Mover/Renombrar ficheros
mv [origen] [destino]
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!
Para ver el contenido de los ficheros, aparte de los editores, existen tres comandos:
La orden cat permite listar varios ficheros secuencialmente. Si tenemos dos ficheros
llamados fichero1 y fichero2, la orden:
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.
head
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
tail [+numero][-numero][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.
En el modo de comandos nos podemos mover por el texto libremente mediante las flechas
de dirección. Los principales comandos son:
Comando Who
Esta orden visualiza los usuarios conectados a una máquina. El formato que utiliza who
es el siguiente
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:
El comando du nos indica el espacio que ocupa un directorio del sistema de ficheros y
todo lo que tiene debajo de él.
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
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).
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*
$ 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:
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.
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.
-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.
SORT
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
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:
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:
Comando wc
wc [-opcion][fichero...]
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 |
Ejemplos
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.
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.
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
xx yy uu vv
zz 11 ww 22
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
Para crear un fichero con un determinado contenido, podemos usar la orden cat
redirigida: