martes, 16 de mayo de 2023

Resumen de Comandos de Linux - Cheat Sheet - Pistas y recordatorios de linea de comandos de linux

___________________________________________________________________________________


 INTRODUCCION A COMANDOS LINUX Y BASH
ACORDARSE DE PONER SIEMPRE PUNTO Y COMA AL FINAL

PARA USAR EN LA LINEA DE COMANDOS

Operaciones con Directorios
ls [-al] [patron*]Listado de Ficheros como dir. [-a muestra los ocultos] [-l muestra listado ancho]
cd /cambia al directorio raiz
cd ..al directorio superior
cd [~]cambia al directorio personal (/home/usuario)
cd directoriocambia a ese directorio
mkdir dir1 dir...Crea directorios
rmdir dir1Elimina directorios

Operaciones con Archivos y directorios
cp origenes destinoCopia archivos
mv original destinoMueve Archivos (y renombra)
rm files...Eliminar ficheros
find dir -name "fichero" [-type t] [-cmd comando]Busca archivos en dir, con nombre "archivo" de tipo t(=b(loques), c(caracteres),d(directorio)) y ejectua el comando
ln -s origen destinocrea enlaces simbólicos (acceso directo)
mtools(mcd,mcopy,mdir,mdel,mren,mdeltree...)Actua con disketes de msdos sin tener que montarlos
diff -b -rDiferencias - b(omitiendo espacios) -r(recursivo en directorios)
chmod [ugoa][+-][rwx] fileCambia permisos de ficheros a u(suario) g(rupo) o(tros) a(todos) añadiendo(+) o quitando(-) los permisos de lectura(r) escritura(w) o ejecucion(x)
access -[rwx] filedevuelve cierto si los permisos son esos (para usar en scripts)

En Pantalla
clearBorra .la pantalla

Programas y ejecutables
file ficheroMuestra de que tipo es un archivo (ejecutable, binario, texto...)
which ejecutableMuestra la ruta de una aplicacion
ldd rutaejecutableListado de los archivos que necesita el ejecutable para funcionar
./ficheroEjecuta el fichero si tiene permiso
. ficheroTambien ejecuta el fichero

Tratamiento de textos
cat ficheroLista contenidos de un fichero (como type en msdos)
fmt fileFormatea como texto de párrafo el archivo
cut [-c character] [-f field -d delimitador]

cut -d: -f1 /etc/passwd
cut -c1-20 /home/p/fichero

paste -d delim ficherosUne varios archivos por columnas en la salida estandar
more -s archivo(-s suprime las lineas en blanco con una sola)
head -# archivoMuestra las # primeras lineas de un archivo
tail -# ficheroMuestra las # ultimas lineas de un archivo
uniq [-u] [-d] [-s] archivoMuestra (-u las lineas no repetidas) (-d una de cada linea repetida) (-s elimina lineas vacias seguidas con una sola)

SISTEMA
datemuestra fecha y hora
date MMddhhmmyyyyssCambia la hora a ese MMes ddia hhora mminuto yyyyaño ssegundo
mount /dev/hda1 /mnt/dosCarga el sistema de ficheros del primer disco duro(hda) de la primera particion (1) en la carpeta /mnt/dos (que debe estár creada
mount /dev/fd0h1440 /mnt/floppyMonta el diskete con el sistema que contenga por defecto
pwdMuestra el directorio donde estamos
setMuestra las variables de entorno proximo
envMuestra las variables de entorno
duMuestra espacio ocupado por archivos y directorios (-s muestra total)
dfEspacio libre en discos
quotaEspacio permitido por el root para nosotros
mbadblocks a:Marca los sectores defectuosos de un diskete

Usuarios y Grupos
finger nombreObtener datos del usuario
chfnCambiar informacion de finger
chsh unshellCambia de shell por defecto
chgrp usuario nuevogrupoCambia grupo propietario de archivos
chown newuser /ficheroscambia usuario propietario de archivos
lastUltimos usuarios conectados
lognameNombre con el que se ha iniciado sesión
passwd [usuario]cambia la contraseña
#adduser|useradd nombrecrea usuario
#addgroup|groupadd nombrecrea grupo
#usermod
#userdel [-r] usuarioElimina un usuario (-r y sus archivos)
whoMuestra los que estan conectados
groupsMuestra los grupos en que estamos incluidos
lastUltimos logins en el sistema
lognameMuestra login con el que entramos

Procesos
ps -xMuestra todos los procesos
wMuestra los usuarios conectados y lo que están haciendo
kill #Mata el proceso numero #
Kill 0Mata todos los procesos excepto el shell actual
bg ### [Ctrl^Z]Cambia a segundo plano el programa actual
fg #Cambia a primer plano el job #
jobsMujestra los trasbajos en segundo plano
ttyMuestra el nombre del terminal actual

Sistema
shutdown [-h|-r] [+mm|hh:mm|now] "Men saje"Reinicia (-r) o para el sistema(-h) despues de +mm minutos o a la hh:mm hora indicada presentando el mensaje
haltDetiene el sistema. Con lo que se puede apagar con seguridad

Archivadores y compresores
gzip [-c] [-d] [-l] [-r] filesComprime en la stdout (hay que redirigir a un archivo) -c(conservando originales) -d(descomprime) -l(lista archivo comprimido) -r(recursivo en directorios)
tar -zxvf archivoExtrae los archivos pasando por gzip en el archivo indicado (para archivos .tgz
tar -czvf comprimir.tgz *Comprime en comprimir.tgz todos los archivos
GREP
grep -i "cadena" fihceros
 grep --help
Modo de empleo: grep [OPCIÓN]... PATRÓN [FICHERO] ...
Busca PATRÓN en cada FICHERO o en la entrada estándar.
Ejemplo: grep -i 'hello world' menu.h main.c

Selección e interpretación de Expreg:
  -E, --extended-regexp     PATRÓN es una expresión regular extendida
  -F, --fixed-strings       PATRÓN es un conjunto de cadenas separadas por
                            caracteres de nueva línea
  -G, --basic-regexp        PATRÓN es una expresión regular básica
  -P, --perl-regexp         PATRÓN es una expresión regular en Perl
  -e, --regexp=PATRÓN       utiliza PATRÓN como expresión regular
  -f, --file=FICHERO        obtiene PATRÓN de FICHERO
  -i, --ignore-case         considera iguales mayúsculas y minúsculas
  -w, --word-regexp         obliga a que PATRÓN coincida solamente
                            con palabras completas
  -x, --line-regexp         obliga a que PATRÓN coincida solamente
                            con líneas completas
  -z, --null-data           una línea de datos termina en un byte 0, no
                            en un carácter de nueva línea

Variadas:
  -s, --no-messages         suprime los mensajes de error
  -v, --invert-match        selecciona las líneas que no coinciden

Control del resultado:
  -m, --max-count=NÚM       se detiene después de NÚM coincidencias
  -b, --byte-offset         muestra el desplazamiento en bytes junto
                            con las líneas de salida
  -n, --line-number         muestra el número de línea junto con
                            las líneas de salida
      --line-buffered       descarga el resultado para cada línea
  -H, --with-filename       muestra el nombre del fichero para cada
                            coincidencia
  -h, --no-filename         suprime los nombres de los ficheros en
                            el resultado
  -o, --only-matching       muestra solamente la parte de una línea que
                            encaja con PATRÓN
  -q, --quiet, --silent     suprime todo el resultado normal
  -d, --directories=ACCIÓN  especifica cómo manejar los directorios
                            ACCIÓN es 'read', 'recurse', o 'skip'
  -R, -r, --recursive       equivalente a --directories=recurse
      --include=PATRÓN      examina los ficheros que encajan con PATRÓN
      --exclude=PATRÓN      se salta los ficheros que encajan con PATRÓN
      --exclude-from=FICHERO se salta los ficheros que encajan con los patrones
                             de FICHERO
  -L, --files-without-match muestra solamente los nombres de FICHEROs
                            que no contienen ninguna coincidencia
  -l, --files-with-matches  muestra solamente los nombres de FICHEROs
                            que contienen alguna coincidencia
  -c, --count               muestra solamente el total de líneas que coinciden
                            por cada FICHERO
  -Z, --null                imprime un byte 0 después del nombre del FICHERO

Control del contexto:
  -B, --before-context=NÚM  muestra NÚM líneas de contexto anterior
  -A, --after-context=NÚM   muestra NÚM líneas de contexto posterior
  -C, --context=NÚM         muestra NÚM líneas de contexto
  -NÚM                      lo mismo que --context=NÚM
      --color[=CUÁNDO],
      --colour[=CUÁNDO]     distingue con marcadores la cadena que encaja
                            CUÁNDO puede ser `always', `never' o `auto'.
  -U, --binary              no elimina los caracteres de retorno de carro
                            finales de línea (MSDOS)
  -u, --unix-byte-offsets   cuenta los desplazamientos como si no hubiera
                            retornos de carro (MSDOS)

`egrep' significa `grep -E'.  `fgrep' significa `grep -F'.
Si no se especifica ningún FICHERO, o cuando es -, lee la entrada estándar.
Si se dan menos de dos FICHEROs, se supone -h. La salida es 0 si hay
coincidencias, 1 si no las hay, y 2 en caso de problema

Comunicar bichos a .


PARA USAR EN SCRIPTS BASH

Shell Script
Variables dentro de los Scripts(o dentro de las subrutinas)Descripcion
$0Nombre y ruta del script
$#Numero de argumentos pasados
$*Lista de todos los argumentos
$@@ ó "$@"Igual que el anterior pero cada uno entrecomillado
$1 $2 ... $nCada uno de los argumentos hasta n
$-Lista de las opciones o modificadores pasados
$?error generado por el ultimo comando
$!

PID (identificador) del ultimo comando ejecutado

$$PID del script actual

if [ condicion ];then
...
elif [ condicion ];then
...
else
...
fi
El then debe ir en nueva linea, pero el ; es como una nueva linea
Debe haber espacios entre los corchetes
if test -parametro fichero
then
...elif...else...
fi
En este formato con test no hacen falta los corchetes, en un if con corchetes se pueden usar los parametros sin test
while [ condicion ];do
...
done
Si en vez de poner "[ cond ]" ponemos dos puntos (while : ;do...) ejecuta el loop indefinidamente)!!
until [ condicion ];do
...
done
for variableTemporal in lista;do
	echo $variableTemporal
done
lista es una lista de elementos con espacios 1 2 3 6 3 ó pepe juan jorge etc
for $file in *;do
	echo $file
done
Recorre todos los archivos del directorio actual
read a
case $a in
Ana|Pepe) echo "Eres ana o pepe";;
[xX]) echo "Pulsaste x o X";;
*) echo "No se que escribiste"
esac
Como un switch en C
nombrefuncion ()
{
echo "Primer parametro es $1 ..."
return $2
}
Subrutina

Formas de evaluar
`who`(acento a la derecha) Evalua como comando
$(expr 1 +1)Evalua como comando
$((1 + 2))Evalua como expresion matemática
$[1 +2]Lo mismo quel anterior
let a=1+2lo mismo que lo anterior

Asignacion de variables variable=
$varContenido de var
${var}Lo mismo pero permite poner por ejemplo ${1} o ${$i} donde $i es 1
${var-default}$var si esta definido sino la palabra default
${var?mensaje}$var si esta definido sino un mensaje de error y fin del programa
${var+default}la palabra default si $var esta definido, si no no pone nada
Parametros (usar con test) para archivos
-s fileArchivo no está vacio
-e fileEl fichero existe
-f fileEl fichero es un archivo y existe
-d fileEs un directorio y existe
-L fileEs un link simbolico
-w fileEs un fichero escribible
-r fileEs read-ónly
-x fileEs ejecutable
-O filePertenece a nuestro usuario
-G filePertenece a nuestro grupo
file1 -nt file2(newer than) Si file1 es mas nuevo que file2
file1 -ot file2(older than) Si file1 es mas viejo que file2
if test -s .bashrc ; ó if [ -s .bashrc ] ;

Comparadores DE CADENA
cad1 = cad2cad1 es igual a cad2
cad1 != cad2Cadena 1 distinta de cad2
-n cadCaqdena NOT NULL
-z cadCadena ES NULL(zero)
-l cadDevuelve el tamaño de la cadena

OPERADORES LOGICOS
! expresionNOT
exp1 -a exp2AND
exp1 -o exp2OR

Opearadores MATEMATICOS
-eq5 = 5
-ne5 != 16
-lt5 < 6
-gt6 > 5
-le5 <= 5
-ge6 >= 6

Apuntes de ultima hora
ARRAYS
Parecidos al array de C se crea como en C:
# var[0]=Hola
# var[5]="Adios Amigo"

pero se usan de otra manera; probemos que pasaría si lo usaramos normalmente:

# echo $var[0] //mal

esto imprimiría solo $var y a continuacion un [0].
Hay que poner asi:

# echo ${var[0]} //bien

para que interprete la variable junto al indice.

En u for

for temp in ${var[*]} //hay que entregarle una lista; i.e. el contenido
do
echo ${var[$temp]}; //evaluamos el contenido del ciclo actual ($temp)
done


Autor: GerardoCastroMartinez2003