Comandos Linux
Comandos Linux
Comandos Linux
OPERATIVO LINUX
Objetivo:
INTRODUCCION A GNU/Linux
$ /home/luis/programa
Existen dos identificadores que pueden hacer la vida mas sencilla cuando nos
estamos refiriendo a un archivo en un arblo UNIX/Linux. El identificador punto y el
identificador dos puntos seguidos.
El primero será traducido en una ruta como el directorio actual, de manera que si
queremos ejecutar un programa alojado en nuestro home, podremos evitar la ruta
absoluta haciendo lo siguiente:
/ $ cd /home/luis
~ $ ./programa
/ $ cd ~
~ $ pwd
/home/luis
~$
El operador dos puntos seguidos indica el padre de nuestro directorio, por ejemplo
~ $ ../luis/programa
~ $ ../../home/luis/programa
Además tenemos otros bits de permisos que no podemos pasar por alto cuando
estamos tratando temas de seguridad.
Sticky bit:
El sticky bit tiene su significado propio cuando se aplica a directorios. Si el
sticky bit está activo en un directorio, entonces un usuario sólo puede borrar
ficheros que son de su propiedad o para los que tiene permiso explícito de
escritura, incluso cuando tiene acceso de escritura al directorio. Esto está
pensado para directorios como /tmp, que tienen permiso de escritura global,
pero no es deseable permitir a cualquier usuario borrar los ficheros que
quiera. El sticky bit aparece como 't' en los listados largos de directorios.
pero según los permisos que observamos en este fichero, sólo root puede
escribir y modificar en él. Entonces sería imposible que un usuario pudiera
cambiar su clave si no puede modificar este fichero. La solución para este
problema consiste en activar el bit SUID para este fichero:
De wikipedia
1. Lee la entrada desde un archivo, una linea dada como argumentos, o desde
la entrada estandar de un terminal.
2. Descompone la entrada en palabras y operadores, obedeciendo unas reglas
establecidas.
3. Luego se transforma la expresión en comandos simple y compuestos.
4. Ejecuta varias expansiones, creando listas de arhcivos, comandos y
argumentos.
5. Luego realiza cualquier redirección necesaria y remueve los operadores de
redicreccion y sus operandos de la lsta de argumentos.
6. Ejecuta los comandos.
7. Opcionalmente espera que el comando termine y recolecta su estado de
salida.
Las comillas son usadas para remover el significado especial de ciertos caracteres
o palabras que van hacia el interprete. Las comillas pueden ser usadas para
deshabilitar el tratamiento de ciertos caracteres, para prevenir que algunas
palabras reservadas sean reconocidas como tales, y para prevenir la expansion de
parametros.
El carácter de escape
Un carácter '\' sin las comillas es el carácter de escape de Bash. Este preserva el
valor literal del siguiente carácter que sigue, con la escepción de una nueva linea
(enter) . Si \ (enter) aparece y no esta rodeado de comillas, será tratado como
una continuación de linea, esto es, será removido del flujo de entrada e ignorado.
Comillas sencillas
Rodear los caracteres en comillas sencillas ('c') preserva el valor literal de cada
carácter dentro de las comillas. Una comilla sencilla no puede ocurrir dentro de
las comillas sencillas aún cuando este precedida de un backslash '\'
Comillas dobles
Rodear caracteres en comillas dobles (”c”) preserva el valor literal de todos los
caracteres dentro de las comillas, con la escepción de '$', '´','\' y cuando la
expansión historial esta habilitada '!'. El carácter '$' y '´' retienen su significado
especial cuando se encuentran al interior de las comillas dobles. El backslash
retiene su significado especial solamente cuando es seguido por uno de los
siguientes caracteres: $, ´ , “, \ o enter. Dentro de las comillas sencillas, los
backslashes que son seguidos por uno de estos caracteres son removidos. Los
backslashes que anteceden a caracteres sin significado especial se dejan sin
modificar. Una comilla doble puede encontrarse al interior de dos comillas dobles
si se le precede el carácter de escape. Los parametros especiales * y @ tienen un
significado especial cuando se encuentran en comillas dobles.
Comandos de BASH
Comandos simples
Ejemplo:
~$ echo hola
Tuberías
Ejemplo:
Cat es un programa que sirve para imprimir un archivo en la salida estandar. Para
mas información consultar el manual de Linux
$ man cat
NAME
cat - concatenate files and print on the standard output
SYNOPSIS
cat [OPTION] [FILE]...
Grep es un programa que sirve para imprimir lineas que coinciden con un
parametro, aunque grep puede utilizarse para abrir archivos, podemos utilizarlo
mediante tuberias. Grep es una herramienta muy poderosa, para aprender mas
de el se recomienda ver la pagina del manual.
$ man grep
Listas
Una lista es una secuencia de una o mas tuberías separadas por uno de los
operadores ';', '&', '&&', o '||', y opcionalmente terminada por ';', '&' o enter.
De estos operadores de lista, '&&' y '||' tienen una precedencia igual, seguidos por
';' y '&'.
Una secuencia de uno o mas enter puede aparecer en una lista para delimitar
comandos, equivalente a un puntoycoma. Si un comando es terminado por el
operador de control '&', el interprete lo ejecutará de manera asincrona en un
nuevo subshell.
Los operadores de control '&&' y '||' denotan listas 'y' y listas 'o', respectivamente.
Una lista 'y' tiene la forma
Comando2 sera ejecutada si, y solo si, comando 1 returna una salida de cero.
Una lista 'o' tiene la forma
comando1 || comando2
comando2 será ejecutado si, y solo si, comando1 retorna una salida no cero (es
decir, falla). El estado de salida de una lista o, es la salida del ultimo comando
ejecutado en la lista.
Agrupar comandos
Bash tiene dos formas de agrupar una lista de comandos para ser ejecutados
como unidad.
Uso de parentesis
Ubicar una lista de comandos entre parentesis causa que se cree un nuevo
espacio de trabajo en un subshell para la ejecución de la lista, las variables no
permanecerán despues de que el subshell finalice.
Uso de llaves
Ubicar una lista de comandos al rededor de llaves causa que la lista sea ejecutada
en el contexto del interprete acutal, quiere decir que no se creara un nuevo
subshell, el punto y coma es requerido.
Sustitución de comandos
$(comando) o ´comando´
Redirecciones
Únicamente redirecciona la salida estándar hacia dirlist, por que el error estandar
fue duplicado como salida estandar antes de que la salida estandar fuera
redireccionada a dirlist.
/dev/fd/NN
Si NN es un entero valido, entonces se usará
/dev/stdin
El descriptor 0
/dev/stdout
El descriptor 1
/dev/stderr
El descriptor 2
Si no es posible abrir o crear un archivo, la redirección falla. Las redirecciones
utilizando descriptores de archivo superiores a 9, deben utilizarse con cuidado,
por que pueden entrar en conflicto con aquellos descriptores que el shell utiliza
internamente.
Redireccionar la entrada
Redireccionar la salida
Por ejemplo:
Para evitar que el archivo sea truncado a cero y sobre escrito se debe utilizar el
operador de inserción al final (append) >>.
Ejemplo:
&>word
y >&word
Este tipo de redirección hace que el interprete lea la entrada desde la fuente
hasta que una línea que contenga word (no debe estar acompañada de ningún
otro tipo de carácter, ni espacios) sea encontrada. Todas las lineas que sean
leídas hasta ese punto serán usadas como entrada estándar para el comando.
<<[−]word
here-document
delimiter
Flujo de programa
Condicionales
if
if test-commands; then
consequent-commands;
[elif more-test-commands; then
more-consequents;]
[else alternate-consequents;]
fi
case
Ejemplo
select
Bucles
until
until test-commands; do consequent-commands; done
while
for
Guiones Bash
ejemplo:
#!/bin/bash
~$ /bin/bash miguion.sh
wc -w resumen.txt
wc -l correo.txt
Para dividir un texto llamado "pord.txt" de 100 lineas, en dos archivos "uno.txt" y
"dos.txt", el primero con las primeras 40 líneas y el segundo con las últimas 60 se
debe realizar:
Con sort se ordenan las lineas de un archivo y con head -n 10 pedimos las
primeras 10 lineas ordenadas.
El comando para bash que presenta la cantidad de palabras no repetidas del
archivo "palabras.txt", en el cual hay una lista de palabras(una en cada linea) es:
sort -u palabras.txt | wc -l
Con sort se ordenan las lineas de un archivo, el cual tiene la capacidad de
eliminar lineas repetidas con -u.
grep # ~/joralm