Está en la página 1de 16

COMANDOS DE MIERDA

ATAJOS
man  Manual, antes de cada comando nos lleva a información del mismo.
Ctrl+C  Matar un proceso
Dos comandos en la misma línea, separados por ;
Primero el comando, luego las opciones y por últmo los directorios n

Cuando en el resultado hay archivos que empiezan por c y b, son dispositvos.


Los c están orientados a caracteres y los b orientados a bloques.
(C= teclado, b=disco duro).

tty= En el resultado, quiere decir que son terminales.


sd= En el resultado, disco duro, y las partciones que hay.

LS

ls  Lista el contenido de un directorio, si no le das ningún parámetro te da el directorio


actual.

ls / lista el directorio raíz, ruta absoluta


ls ../.. con trayectoria relatva
ls /etc  Ver un archivo de la raíz
ls / /  Listar varias cosas a la vez (ls / /alumno)

-l  Lista todo en una sola columna


-R  Listar recursivamente, todo los contenidos
-a  muestra los archivos ocultos, archivo oculto es el que empieza por punto.
ls –l aa  para ver las propiedades de aa
l+tab Visualizar comandos que empiezan por l, u otro comando.

Se pueden poner expresiones para que sólo liste algunas cosas: ls *.java (archivos con
extensión java)

Ejemplos
ls –d a* te lista para ver todo lo que empieza por a
ls –d a? si tene a y otra letra
ls –d a?* archivos que comienzan por a y tengan al menos un carácter
ls -d *a* cualquier archivo que contenga la a
ls –d ?a* archivos cuya segunda letra es la a
ls –d ?a? archivos de 3 caracteres cuya segunda es la a
ls –d ?a?* archivos de 3 o más caracteres cuya segunda es la a
ls –d ?*a?* que contenga 3 letras y la a sea central
ls a[ ]* ejemplo ls a[0123456789]* te saca a y que lleve alguno de los símbolos
ls a[0-9]*
ls a[^0-9]*  es negación, no saldrán los que contengan del 0 al 9

Ls [a-z] fcheros que tengan una sola letra.


Ls –d [a-z]* que contengan a alguna letra.
Ls –d [a-z] [a-z] empiezan y terminan por letra.
Ls –d *[a-z]*
Ls -d *[a-zA-Z]* que contengan una minúscula y mayúscula.

SITUACION Y CONTENIDO

cd Situarnos en un directorio en concreto.


cd cambia directamente a home, cd~ a home con ruta relatva
En absoluto empieza en el directorio raíz / y en relatvo directamente con el directorio. El ..
retrocede.

Absoluta, empieza por / (raíz)


Relatva, por ./(actual) o por .. (padre)

pwd Devuelve la ruta, el directorio, en la que estás situado.


El directorio de trabajo HOME es el directorio donde tenes permisos.

cat Muestra el contenido de un archivo (cat kk)

cat /etc/passwd | grep a que contenga a


cat /etc/passwd | grep "^system" que comience por system
cat /etc/passwd | grep "e$" que termine en e
cat /etc/passwd | grep "$" que termine
cat /etc/passwd | grep "^$" lineas vacias
at /etc/passwd | grep -v ^$ | wc -l contar line<s vacias
cat /etc/passwd | head -1 | grep –o –E “[^:]+”

tac Visualiza un fchero invertdo. Lo da la vuelta por líneas (la últma la pone al fnal)
ps saca los procesos del sistema (para saber el pid)
file  Devuelve el formato de un fchero
hexdump Muestra cualquier archivo en formato hexadecimal.

CREAR

touch Su función principal es actualizar la fecha de últmo acceso a un archivo, fecha
actual como últma fecha. Si el archivo no existe lo crea.

touch ../Documents/g ha creado g en documentos.


touch “1 2 3” para evitar los espacios en blanco.
touch 4\ 5\ 6  escape, para evitar también los espacios en blanco.

mkdir Crear directorio NO RECIBE TUBERIAS


Exige que los directorios padre existan

-p  Crea todos los directorios padres


-R  En forma de árbol
-v  Verboso
Para crear directorios dentro de directorios se puede usar mkdir directorio1
directorio1/directorio2 o bien mkdir -p directorio1/directorio2
(mkdir kk)(mkdir –p {1..4}/{1..2} PRODUCTO CARTESIANO)

EXPANSIÓN DE PARÁMETROS

Expansión de parámetros: se realiza con llaves, se separan


mkdir –p x/{1..4} va a crear 1234 dentro de x.
mkdir –p x/[1..4] crea el archivo [1..4]
mkdir –p {c,v,f} / {1,2,3} crea 1,2,3 en c 1,2,3 en v y 1,2,3 en f.
mkdir –p {9}{1,2,3}.p{4,5,6} crea 91 en 456 92 en 456 y 93 en 456.
mkdir –p {q}1,2,3

Caracteres entre corchetes [] coge los caracteres de uno en uno. Se pueden agrupar
caracteres separando por - [a-z]
La virgulilla indica el directorio de trabajo

echo  Muestra lo que se pasa como parámetro. Produce salto de línea


echo -n  No pone salto de línea
echo -en “Hola pepe\nhola luis” | wc –l
cat /etc/passwd | cut -f1 -d: | tr [a-z] [A-Z]
echo "eeggreleee" | tr -s e e (transformas todas las e que estén seguidas en una sola e)
echo "eeggreleee" | tr -d e (elimina las e duplicadas)
echo $((date +%s; sleep 2 ; date +%s) | tac) | tr
‘ ‘ - | bc

echo “abc1abd3edg44ases3” | grep –o –E “[a-z]{3}[0-9]” encuentra 3 letras seguidas y un


numero
echo “abc1abd3edg44ases3” | grep –o –E “([a-z]{3}[0-9]){2}” lo mismo pero doble

echo “1aaaB2341aa2aa” | grep –o –i –E “([0-9][a-z]{3})|([a-z][0-9]{3})” numero seguido de


tres letras o una letra seguida de tres números

echo "abc1" | grep "[a-z]*[0-9]" captura 0 mas todo lo que hay entre a y z
para buscar un + o * hay que escaparlos con \+ \*, si no * signifca 0 o más y + signifca 1 o
más
echo “123456” | sed –e “s/123/456”

nl  Saca líneas

Fichero con guion,fchero regular

ELIMINAR

rmdir  Borra directorios vacíos, no borra directorios con contenido.


rm  Borra archivos y cualquier tpo de directorio, esté vacío o no.
rm -r kk Borra todo el directorio y su contenido.

unlink borrar enlace simbólico (borra otras cosas también)

REDIRECCIÓN

>(redirección) Salida del comando, su salida va a ir a +un fchero. Si el fchero no existe


lo crea.
< Entrada
>  Salida estándar por pantalla (echo Hola Pepe>kk)
2>  Redirigir la salida del fchero que contenga un error.

dev/null Se traga todo y lo elimina

fnd / -name "*.java" 2>/dev/null


Echo hola > /dev/tty2
Mando hola a
Ls –l /dev/null
Ls /etc/group 2>/dev/null
Mandas a null y asi no te aparece.

COPIAR, MOVER Y CAMBIAR NOMBRE

cp copiar (cp a b c-- copia a y b, en c)

mv  Cambiar nombre, cambiar ubicación (mv A d/B-- mover A a d con el nombre B)

mv a/x/ b mueve x a b, que estaba en a


mv b/x b/xx cambiar de nombre x a xx
Para mover a,b,c,d,e a kk  mv abcde kk

OTROS

find Busca fcheros en el sistema.


find / -name Buscar archivos
Se le pone el directorio donde se quiere actuar -name para darle el nombre de fcheros. Si
hay errores se puede evitar que se muestre en pantalla añadiendo 2>/dev/null -iname sirve
para que no diferencie en el nombre de fcheros a mayúscuas y minúsculas El fnd como se
ve lleva primero la ruta y luego el -name con las opciones.

who  Devuelve qué usuarios están conectados al sistema.


whoiam Devuelve qué usuario es el mío.
bc calculadora
bash crea un nuevo terminal

ENLACE SIMBÓLICO

Es hacer que un archivo aparezca en dos sitios a la vez.


ln  crear enlace simbólico
ln  duro, se pone el origen y el destno
ln -s  blando,
ls –l tipo de archivo, tipo de archivo es l y apunta al origen, es blando.
El duro es: ntfs y fat es para formarear
Los archivos EXT
Hay que ver su inodo (inodo es una estructura de datos, una tabla que contiene información de un
fichero, es donde está alojado el archivo.)
Ls –i
Ls –il te pone el inodo en columna.

TUBERÍAS

Se le da al comando que hay después, la salida del comando anterior.

xargs  Como un for each. Manda cada línea de lo que recibe al siguiente comando.
Permite que un comando que no permite tuberías reciba líneas de un archivo las ejecute
ese archivo. Se comporta como un bucle. Pasa los comandos de cada línea del archivo al
siguiente comando

-I  Da nombre al parámetro que recibe, normalmente {}

grep  Imprime las líneas que concuerdan con un patrón. Hace cortes horizontales (un
where) admite expresiones regulares, patrón o plantlla

grep a, todo lo que contenga a


grep “^a” todo lo que empiece por a
grep “e$” todo lo que termine en e
grep “$” todo lo que termine en algo

-v niega la expresión

sort Ordena lexicográfcamente


Si quieres que ordene por un campo -k3 (el tres es el número de campo) y -t: donde los dos
puntos es el carácter de separación d campos -n ordena numéricamente -r ordena en oren
inverso.
-k para elegir el campo
-t para elegir el separador de campos
-n ordena numéricamente de menor a mayor

Ejemplo: /etc/passwd | tr a A cambia a A


/etc/passwd | tr [a-z][A-Z] mayúsculas todas
/etc/passwd | tr –d aeiou elimina todo esto.

wc contar caracteres


-l cuenta líneas
-c caracteres
-w palabras

cut  Cortes vertcales en base a caracteres


(cut -cl /etc/passwd)
-d y -t caracteres de escape

tail  devuelve las 10 ultmas líneas


head  devuelve las 10 primeras líneas
-n  indica el numero de salidas que quieres -1

tr  Traslada o borra caracteres ( se escribe el carácter que quieres susttuir y el carácter


para susttuir)

xed editor gráfco


Creo un archivo, lo guardo en escritorio, creo un directorio en el escritorio, copio el archivo
creado con xed en ese directorio.

Sed fltrar y transformar texto


-n imprime las líneas que yo le indique
-e formar expresiones regulares
-ln  Salto de línea

Comandos paginadores:
More/etc/passwd es para ver una página muy larga
lss kk3 hace lo mismo que more.
Sólo paginan fcheros, nada más.
Ls -1/ | more. Para paginar lo que no deja.

uniq Lo que haces es eliminar las líneas duplicadas, pero sólo las que están
consecutvas, por lo que si se quiere eliminar todas hay que ordenarlas primero con sort. El
parámetro -c de uniq lo que hace es contar la cantdad de líneas iguales que hay.

Para los nombres se pueden crear una variable simplemente poniendo el nombre de la
variable = al contenido (a=33). Para llamar una variable se usa al principio el símbolo $ y el
nombre de la variable ($a).
Opciones: -u  sólo muestra las líneas que no están repetidas.
-d  muestra las líneas que están repetidas.
-c  muestre el informe en el que la columna de la izquierda ofrece el numero de
repeticiones y luego la línea en si misma.
+n  ignora los n primeros carácter, funciona exclusivamente con la opción –c
-n  ignora los primeros campos.

chmod Cambiar los permisos

En los entornos Unix básicamente cada permiso tene el siguiente valor:


 Lectura: 4
 Escritura: 2
 Ejecución: 1

Debemos aprender a jugar con estos números de la siguiente manera, esto con el fn de hacer
nuestra experiencia de Linux la mejor.

Si deseamos establecer un permiso de escritura usaremos el 6 (4 + 2= Lectura + Escritura)

Si deseamos que un usuario pueda ejecutar usaremos el 7 (4 + 2 + 1= Lectura + Escritura + Ejecu-


ción)

https://www.solvetic.com/tutoriales/article/1458-entender-los-permisos-linux-chmod/

dos formas: notación simbólica, usas símbolos


u r + añadir
g w - quitar
o y = mantener
u+x usuario  le añadió
u= igual a nada  quita todo
= nada=nada  quita todo.

u propietario

sleep duerme un proceso

kill matar un proceso, hay que saber su PID


ps -e para saber los números de los procesos
si matas un padre matas al hijo, no puede haber hijos sin padres

killall -KILL bash-- cierra todo, hasta la terminal


pkill-- para matar con expresiones regulares
kill ^a^c

bin Contene ejecutables

date +”%D %T”--- Fecha y hora actuales


date +%s fecha actuales
cat /etc/passwd | cut -f1 -d: | xargs -I{} mkdir "{}-$(date +%G)"
tme--- tme ls cuanto tempo tarda en ejecutarse un comando

SCRIPTS

shif realiza un salto de parámetro eliminándolo


eval interpreta strings como comandos

TIPOS DE $ EN PARÁMETROS

$1 variable a
$a variable con nombre a
$* imprime todos los parámetros (única cadena con todos)
$@ imprime todos los parámetros ( tratado como varias cadenas)
$# imprime el número de parámetros
$0 imprime el nombre del script

expr Evalúa expresiones

read Para leer datos introducidos por teclado

nohup

& ejecutar en segundo plano

Pasos para scripts

Para abrir el editor: xed prueba1.sh


Cambiar los permisos: chmod 744 prueba1.sh

Escribir en el editor:
echo $1
echo $2
Y para que devuelva según lo que hemos escrito en el editor:

./prueba1.sh + (lo que sea que queramos hacer) hola adios

Nos devuelve:
Hola
Adiós

hvyd@hvyd-VirtualBox ~ $ ./prueba1.sh hola adios talue no


hola
adios
hola adios talue no
hola adios talue no

Si pones en la sh:

greetng=$1
shif
names=$@
echo $names | tr ' ' '\n' | xargs -I{} echo "$greetng {}"

prueba1.sh hola pepe juan luis

Devuelve lo siguiente:

hola pepe
hola juan
hola luis

Meter en la sh:
read a
read b
echo $a
echo $b

Escribes:
echo -e "435\n4566" | ./prueba1.sh
Y devuelve:
435
4566

CONDICIONES
#!/bin/bash
if ls $1 > /dev/null 2>&1 || echo $1 then
echo "ok"
exit 0

else
echo "ko"
fi

#!/bin/bash
if [ $1 -gt $2 ] ; then
echo $1
else
echo $2
fi

BUCLES

while instrucciones; do
instrucciones
done

#!/bin/bash

index=2
size=$#
greeting=$1
while [ "$index" -le "$size" ] ; do
eval echo $greeting '$'$index
let index++

done

FOR
for variable in lista; do
instrucciones
done

greeting=$1
shift (con shift)

for name in "$@" ; do


echo $greeting $name

done

greeting=$1
(sin shift)

for name in $(echo "$@" | cut -f2 -d' ') ; do


echo $greeting $name

done

if [ "$#" -lt 2 ] ; then


echo "Missing params. Usage ./prueba1.sh greeting name [name]..." >&2
exit 1
fi

for ((i=1; i<=10; i++)) ; do


echo $i
done

LEER UN FICHERO
file=$1
numline=1
lines=$(cat $1 | wc -l)

while [ $numline -le $lines ] ; do


line=$(cat $1 | head -$numline | tail -1)
echo $line
let numline++
done

LEER UN FICHERO LINEA A LINEA


#!/bin/bash
file=$1
numline=1
lines=$(cat $1)
numlines=$(echo -e "$lines" | wc -l)

while [ $numline -le $numlines ] ; do


line=$(echo -e "$lines" | sed -n "${$numline}p")
echo $line
let numline++
done
otra forma:
#!/bin/bash

file=$1
IFS="
"
for line in $(cat "$file") ; do
echo "$line"

done

FUNCIONES
Para llamar a la función se pone el nombre de la fucnión
Las funciones pueden recibir parametros pero no en los parentesis, sino a continuacion del nombre
de la funcion abajo

#!/bin/bash

x() {
echo Hi
return 0
}
x && x

12
DESCRIPTORES DE FICHERO
>
sobreescribe
>>
añade
1>
consola standar
2>
consola de error
2>&1
va donde sale la consola standar
EXEC 4<>kk

CTRL+D
sale
CTRL+C
aborta comando

TERMINALES
CTRL+ALT+F2 ----> terminal 2 real
CTRL+ALT+F7 -----> se sale

TTY
comando para saber el terminal en el que estas

ECHO hola > /dev/pts/1


envia la salida al terminal

en /dev/ LS -l
en los ficheros C y B son dispositivos fisicos

*?[]\{}^
* = caracteres por delante o por detras
? = caracteres
[x-y] = busca de un caracter x a otro caracter y
^ = niega la expresion
{x..y} = para directorios, expande directorios

También podría gustarte