Aquí encontrarás lo suficiente para que con un man seas la reina del mambo
find . -type f -name '*~' -delete
Precioso comando que elimina las copias de seguridad de manera recursiva de la carperta en que estés.
C-l
Desplazar la línea, por defecto hace que te aparezca al principio, después medio y final.clear
limpiar terminal- Para cerrar al termial C-alt-w
- Cerrar una ventana que no sea la terminal
C-quit
y que no se haya abierto por medio de esa -./ <programa> &
lo ejecuta en "background", dejando disponible la terminal xdg-open <archivo>
abre ese archivo con el programa predeterminadosource <nombre_guión>
ejecuta órdenes de un fichero en el shell actual, de esta manera se guardarían las variables dentro del shell
COMANDOS | FUNCIONES |
---|---|
tr[option].., SET1 | traduce o borra caracteres :) |
awk | escanea patrocenes y procesa lenguajes |
ls | lee los directorios |
cd | cambia de directorio |
ln | Crea enlaces simbólicos |
pwd | Imprime el camino absoluto del direcctorio actual |
mkdir rmdir | rmdir -r borra si tienes también archivos dentro |
cat | lee el contenido de un archivo |
mv / | mueve un archivo |
file | muestra el tipo de archivo. |
more pager pg | visualiza un archivo fraccionándolo en la pantalla cada vez. |
rm | borra DEFINITIVAMENTE un archivo/directorio |
touch | modifica fecha y hora de un archivo, si no existe los crea |
clear | borra el contenido de la terminal actual |
tail - | muestra las líneas finales de un fichero |
head -// | muestras las "numero de líneas iniciales" de un fichero. |
sort | ordena bajo un critero elegido las líneas de un archivo. |
wc | cuenta el número de algo de un fichero |
chmod [ugoa][+-=][rwx]dir/file | Cambio a los permisos de un archivo o directorio |
echo | escribe un mensaje en terminal |
alias <nombre>='<ódener>' |
Definir comportamiento de una orden, sin argumentos, ves los alias creados |
`unalias | Borrar un alias |
\alias |
Para ignorar un alias y ejecutar la orden original |
printf | muestra en el bash lo que se especifique |
sleep | Produce una pausa de los segundos introducidos como argumentos |
date | Para saber la fecha en que estamos |
--- | --- |
lpr | Manda ficheros a imprimir a la impresora configurada por defecto |
- código de formato para print
- %d número con signo
- %f número en coma flotante
- %q entrecomilla una cadena
- %s muestra una cadena sin entrecomillar
- %x número en hexadecimal
- %o número en octal
- Ejemplo:
blanca@debian:$printf "Quedan %i semanas para fin año \n" $( expr $DIFERENCIA / 7)
Quedan 10 semanas para fin año
Los alias declaradas por terminal son temporales, se borrarán al cerrarla. Para hacerlos permanentes bastará con abrir ( en caso de no existir crear) el documento .bashrc
que se encuentra en el direcctorio \home
de su usuario y allí escribir el alias.
Al guardar y salir del documento hacer un . .bashrc
en la terminal
Comando | Utilidad | Ejemplo |
---|---|---|
find <directorios> [expresiones] |
Busca según unos criterios y realiza acción | find / -name "*.c" o find . -atime +100 -ok rm {} \; |
grep [opciones][patrón]<fichero> |
Busca dentro de ficheros | --- |
Metacarácter | Función | Ejemplo |
---|---|---|
? | Caraceter simple en la posición que se indique | tema?.pdf |
* | Cualquier secuencia de 0 o más carácteres | tema* |
[] | Designan un carácter o rango de caracteres que representan un carácter simple | tema[1-3].pdf |
{} | Sustituyen conjuntos de palabras separadas por comas con partes comunes | npi |
~ | Abrevia el campo absoluto del directorio home | ~\Documento |
< nombre | redirecciona la entrada de una orden obtenida del ARCHIVO nombre | cat < text.txt |
> nombre | Redirige la salida de una orden para que la escriba en el nuevo archivo nombre | echo "aaa" > text.txt |
&> nombre | La salida estándar se combina con la salida de error estándar estritas en nombre | idem |
>> nombre | Igual que > añadiendo al final del archivo si existe | idem |
&>> nombre | Igual que “&>”, pero añadiendo las dos salidas combinadas al final del archivo | idem |
2> nombre | Igual que &> | idem |
` | ` | Para crear cauces SÚPER ÚTIL |
` | & ` | Cauce con errores |
; | Separador entre órdenes que se ejecutan | cat archivo ; echo "aaa" |
() | Aislar órdenes, siendo tratada como una única | -- |
&& | La orden siguiente se ejecuta si la anterior ha tenido éxito | aa |
|| | La orden siguiente se ejecuta sólo si la anterior no ha funcionado | `ls -l notas |
Nombre | Utilidad |
---|---|
$BASH | contiene la ruta de acceso del terminal |
$HOME | almacena el directorio raíz de la carpeta home |
$PATH | guarda el camino local de las órdenes |
$? | contiene el código de retorno hacia la última orden o guión |
Comando | utilidad | ejemplo |
---|---|---|
VECTOR=( ALGO ALGO ... ) |
Para declarlos paréntesis con elementos separados por espacios | num=(uno dos tres) |
$ {VECTOR[*]} ${VECTOR[@]} |
Hacer referencia a todo el contenido | echo ${num[*]}; uno dos tres |
$ {#VECTOR[*]} ${#VECTOR[@]} |
Devuelve la longitud del vector | echo ${#num[@]} ; 3 |
Si eres un profano en depuración lee el apartado de depuración
Variables de depuración | utilidad |
---|---|
$LINENO | representa el número de línea que está leyendo de un archivo |
PS4 | Variable empotrada que ajusta el valor de xtrace de la líneaexport PS4='+ línea $LINENO: ' |
$FUNCNAME | Array que contiene el nombre de todas las funciones que se ejecutan en el instante |
$BASH_ARGV | An array variable containing all of the parameters in the current bash execution call stack. |
info bash y hartate información |
Operaciones con varibles | Utilidad |
---|---|
declare -[i,s,a] <nombre> |
declara variables |
`declare -p | Ver el contenido de una variable |
export <variable> |
para que el sistema la reconozca |
` orden ` | Sustitución de orden como si fuera un avariable |
$(orden) |
Sustitución de orden como si fuera una variable |
expre <operación> |
Permite operaciones con variables numero=`expr $numero + 1` |
$(( expresión )) |
Evalúa expresiones aritméticas y sustituye su valor, LOS ESPACIOS CUÍDAMELOS |
$[ expresión ] |
Evalua expresiones aritméticas y sustituye su valor |
`operaciones | bc -l ` |
let varInt=asignación |
Asigna valor a una variable entera SIN ESPACIO EN BLANCO let a='a + 4' o let a=a+4 |
- Comenzar con
#!/bin/bash
- Cambiarle los permisos a ejecución
chmod +x <script>
- Ejecutar indicando directorio en el que se encuentra
./<script.sh>
si se encuentrn en el direcctorio actual
Argumento | Descripción |
---|---|
$0 |
Nombre del scripts que se llama |
$1..$9 ${10}.. |
Referencia a distintos argumentos |
$@ $* |
Todos los argumentos que se le han pasado |
$# |
Número de argumentos que se le han pasado |
${arg:-val} |
Si el argumento es nulo se le asigna val |
${arg:?val } |
Si el argumento es no nulo le asigna ese valor |
${!#} |
Muestra el último argumento |
Operador | Función | Ejemplo |
---|---|---|
test <expresión> |
Comprobación de características de archivos y directorios | `test -x cat && echo “true” |
orden | funcion |
---|---|
-d | si existe y es un directorio |
-e | si existe |
-f | si existe y es un fichero de texto plano |
Para más información man test
- con un 0 entra, con un 1 no.
if <condición>
then
<órdenes>
elif <condicióin>
then
<orden>
else
<orden>
fi
Repite una secuencia, por ejemplo imaginemos que queremos contar del 1 hasta el 10
for n in \
seq 1 1 10` es equivalente también
for n in {1..10} Puedes trabajar también con otras órdenes
for i in $(ls)`
O podemos hacer un bucle for al estilo c
for (( i=0 ; i<$2 ; i++ ))
do
touch ficherito_del_amor_$i" :) "
done;
while:
do
echo "Qu bonita es la vida"
done
- para activarlo, + para desactivarlo,
Comando | Función |
---|---|
bash -n set -n |
Chequea errores sintácticos sin ejecutar una orden |
bash -v set -v |
Visualiza cada orden antes de ejecutarla |
bash -x set -x |
Igual que -v pero con todas las sustituciones y expansiones realizadas |
Traza, especifica una acción a reaizar cada vez que recibe una señal (mecanismos de comunicación entre distintos procesos en linux <3)
colocar después del #!/bin/bash
trap <lo que quieras que haga tras cada ejecución de una línea> DEBUG
DEBUG es un tipo de señal, como también lo son EXIT , ERR , RETURN
- EXIT cuando el código que se esté ejecutando finalice
- ERR cuando una orden devuelve un código de finalización distinto de 0
Función que comprueba una variable o función en puntos críticos del guión.
- Función ejecutada en primer plano foreground
- Función en segundo plano baskground declarada con
&
al final de su declaración
órdenes para hacer referencia a un trabajo y así poder manipularlo:
Especificador | Trabajo que es denotado con dicho especificador |
---|---|
% | Trabajo actual (%+ y %% son sinónimos de este especificador) |
%- | Trabajo previo al actual |
%n | Trabajo número n |
% | Trabajo cuya línea de órdenes comienza por |
%? | Trabajo cuya línea de órdenes contiene |
órdenes más frecuentes de control de trabajos:
Órdenes | Descripción |
---|---|
jobs | Lista los trabajos activos bajo el control del usuario (help jobs) |
fg | Trae a primer plano un trabajo que se encuentra suspendido o en segundo plano (help fg) |
bg | Envía a segundo plano un trabajo (help bg) |
% | Permite cambiar el estado de un trabajo (help %) |
wait | Espera la finalización de procesos en segundo plano (help wait) |
disown | Suprime un trabajo de la lista de trabajos activos (help disown) disown -r elimina los trabajos en ejecución disown -a todos los trabajos |
kill | Envía una señal a un/os proceso/s. Por defecto, finaliza la ejecución de un proceso (man kill) |
ps | Muestra el estado de los procesos actuales en el sistema (man ps) |
top | Muestra los procesos en ejecución con actualización de su información en tiempo real (man top) |
- Procesar procesador acepta como entrada un archivo con código fuente, elimina los comentarios e interpreta las directivas de procesamiento
- Compilador analiza el código fuente y lo traduce a un código objeto, módulo objeto con la extensión
.o
, en este proceso no se resuelven las referencias externas a variable o funciones.
g++ -c archivo.cpp
genera si no hay errores de programación el módulo objeto. - Enlazador resuelve las referencias externas y genera un archivo ejecutable.
órdenes de compilación en g++
órden | Función |
---|---|
g++ -o archivo.cpp |
Realiza etapa de procesado y compilación generando módulo objeto si no hay error |
g++ archivo.o ach.o |
Crea el ejutable, a.out |
g++ -o nom_ejecuta archivo.o |
Igual que el anterior pero en vez de nombrar al archivo con a.out, lo nombra nom_ejecuta.out |
ar -rvs biblio.a modulo.o mod.o |
Genera una librería genera un archivo .a > r inserta los miembros del archivo, s crea índice, v amplia información en verbose |
g++ -I ACHIVO.CPP |
Permite especificar archivos en los que la orden g++ busca en la cabecera, por defecto busca en usr/include esta orden no tiene sentdo si todos los archivos se encuentra en el directorio donde se ejecutan las órdenes |
$ g++ -L ./ -o programa2 main2.o factorial.o hello.o -lmates |
crea ejecutable especificando las librerias con la raiz mates, esta se debe encontrar en el direcorio |
g++ -I./directorio -L./ -o programa2 main2.cpp factorial.cpp hello.cpp -lmates |
igual que la anterior pero especificando el directorio |
Makefile permite gestionar las depedencias, comprobando que archivos se han modificado desde la última vez que se ejecutó y vuelve a construir el ejecutable cambiando solo lás modificaciones.
Comando | utilidad |
---|---|
make -f NOMBRE_MAKEFILE |
Especificación del archivo makefile, si es makefileGNU, makefile o Makefile se puede ejecutar make sin argumentos |
Reglas para la estrcutura de un archivo makefile
objetivo: dependecias
TABULADOR orden1
TABULADOR orden2
...
lexema | orden |
---|---|
objetivo | nombre característico para la acción que ejecutará. Por ejjemplo el nombre de un archivo |
dependencias | archivos u objetos (separadas en líneas en blanco) posteriores de los que depende nuesro programa cuando se ejecuta la orden make se comprueba si estas dependencias han sido modificadas y en tal caso se ejecuta su lista de órdenes asociadas. |
ordenes | conjunto de líneas de orden de shell que comienzan por tabulador, construyen objetos o realizan otras tareas |
Ejemplo de makefile
programa1: main.o factorial.o hello.o
g++ -o programa1 main.o factorial.o hello.o
main.o: main.cpp ./includes/functions.h
g++ -I./includes -c main.cpp
factorial.o: factorial.cpp ./includes/functions.h
g++ -I./includes -c factorial.cpp
hello.o: hello.cpp ./includes/functions.h
g++ -I./includes -c hello.cpp
Órdenes dentro de un archivo makefile que no genera ningún objeto pero que genera alguna acción dentro del proyecto de software. Para utilizar esta orden es necesario especificarla cuando se llama a la orden makefile: ejemplo:
...
...
clear: # nombre de mi regla virtual
rm *.o # orden del shell que realiza
para llamarla desde el shell make -f makefile clean
Si existiera en el directorio un objeto que se llamara igual que la orden virtual, make consideraría que el objeto ya está creado y no ejecutaría la orden, para solucionarlo:
Ejecutar la orde especial .POTHY: clean
todas las dependedias que contengan esta orden obviarán los ficheros con el mismo nombre y así se ejecutarán los comandos correspondientes
make -p
nos muestra las variable predefinidas, dejo las más interesantes
Hay que echarle un ratillo para leerlo entero y comprenderlo
Variable | Significado |
---|---|
$@ | Representa el nombre del objetivo de la regla en la que nos encontramos |
$< | Representa la primera dependencia de la regla en la que nos encontramos |
$? | Representa las dependencias de la presente regla que hayan sido actualizadas (modificadas) dentro del objetivo de la regla y separadas por un espacio en blanco |
$^ | Representa todas las dependencias separadas por un espacio en blanco |
Ejemplo clarificador
CC = g++ % Compilador que vamos a utilizar
CPPFLAGS = -Wall % Opciones de compilado, -Wall para ver los warning
SRCS = main.cpp factorial.cpp hello.cpp
OBJS = main.o factorial.o hello.o
HDRS = functions.h
programa1: $(OBJS)
$(CC) -o $@ $(OBJS) % el valor de $@ se sustituirá por el de programa1
hello.o: hello.cpp
$(CC) -c $(CPPFLAGS) $< %el valos de $< hará referencia a hello.cpp, la primera dependencia
print: $(SRCS)
lpr -p $? % represena las dependencias que hayan sido modificadas hasta la fecha
programa1: $(OBJS)
$(CC) -c $@ $^ % $^ representaría la secuencia main.o factorial.o hello.o
Además se puede uno ahorrar escribir de la siguiente manera $(Nombre:TextoActual=TextoNuevo)
Ejemplo:
SRCS = main.cpp factorial.cpp hello.cpp
OBJS = $(SRCS:.cpp=.o) % sería equivalente a main.o factorial.o hello.o