Chuleta de comandos útiles de Linux
22 Mar 2020Algunos comandos que suelo utilizar con cierta frecuencia pero algunos no con la suficiente como para recordarlos. Se aceptan sugerencias de comandos o alias para incluir a la lista. No soy administrador de sistemas ni experto en Linux, solo usuario habitual.
Conexiones ssh
ssh-keygenCrear una clave ssh- Copiar la clave ssh al servidor a mano:
cat ~/.ssh/id_rsa.pub
** copiar la clave en el portapapeles **
** hacer login en el servidor **
echo pegar_la_clave_aquí >> ~/.ssh/authorized_keys
ssh user@hostConectar al servidorssh user@host "comando"Enviar comandos al servidor- Para desabilitar el login con clave en el servidor, una vez logado con ssh:
sudo nano /etc/ssh/sshd_config
...
PasswordAuthentication no
...
Manejo de ficheros
mkdir nombre_de_carpetaCrea una nueva carpetatouch nombre_de_ficheroCrea un fichero vacíorm nombre_de_ficheroBorra un ficherorm -r nombre_de_carpetaBorra una carpetamv nombre_fichero nuevo_nombreRenombra/mueve un archivocp nombre_fichero nuevo_ficheroCopia un archivols- muestra un listado con los ficheros de la carpeta actual- Encontrar un fichero dentro de un arbol de directorios, excluyendo (podando) algunos:
find . -not \( -path "*/node_modules" -prune \) -name "filename*"
Ayuda e información
- Para ver ficheros en la linea de comandos podemos usar
cat,moreyless, este último es el que usan las man pages. info coreutilsMuestra un manual con hipervínculos sobre los principales programas GNU de Linuxwhatisytypesirven para saber que hace un comando y de que tipo es para más info se puede usarinfo,mano--helpaliaspara crear comandos a partir de otros.cd -para volver al directorio anterior
Imprimir desde la línea de comandos (pdf, ps, jpg)
lpq- muestra la cola de impresiónlp nombredefichero.pdf- imprime en la impresora por defectolp -o sides=two-sided-long-edge Notes.pdf- imprimir por las dos caraslp -o landscape penguin.jpg- Imprimir apaisadohistory | lp -o portrait -o fit-to-page -Imprime lo que recibe desde standard-input
Convertir a pdf
- Convertir un rtf o doc/docx a pdf con libreoffice desde cli:
libreoffice --headless --invisible --norestore --convert-to pdf fichero.rtf - Convertir markdown a pdf (con node y headless chrome):
npx markdown-pdf README.md readme.pdf - Latex a pdf:
pdflatex ...
Utilidades varias
notify-sendcrea una notificación en el escritorio. Ej. crear una alarma para dentro de 10 segundos:sleep 10; notify-send "Hora e descansar!" "Se ha terminado el Pomodoro"- Los comodines siempre se expanden en orden:
cat *.txt > out.txtconcatenará los ficheros1.txt,2.txty3.txten ese orden. También se pueden usar expansiones con llaves:{1..9}{a..z} script filenameguarda una sesion de comandos en un fichero, genial para crear scripts a partir de tareas manuales que solemos repetir.df -hte dice el espacio libre en los discos durosfree -hpara espacio libre en la RAM-
du -sh foldernamedice el espacio ocupado por el directorio, si haces:du -sh *te dice el espacio que ocupan todos los subdirectorios del directorio actual grep -iR 'palabra' .Muestra todas las líneas que contienenpalabraen todos los ficheros del directorio actual y sus subdirectoriosctrl+rbúsqueda incremental en el historial, presionarctrl+rotra vez para buscar más ocurrencias,ctrl+jcopia el comando y devuelve el control,ENTERlo ejecuta.historyte muestra el historial de comandos, con lo que puedes buscar en el historial haciendohistory | grep 'comando'wc -lmuestra el número de líneas del stream se le pase, por ejemplo:cat file.txt | wc -lnos dá el número de líneas de un fichero ygrep -iR 'palabra' . | wc -lnos daría el número de líneas en las que aparece la palabrapalabraen todos los ficheros del directorio y sus hijos.convert *.png out.pdfcrea un pdf con una imagen por página.gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=out.pdf first.pdf second.pdfConcatena varios pdfs en uno con ghostscriptfc-cache -f -vRefrescar las fuentes de sistema una vez has copiado los ficheros de fuentes que quieres añadir a~/.fonts/- Para modificar el nombre/convertir una serie de ficheros:
for i in *.pdf; do mv "$i" CS749__"$i"; done. Por ejemplo, si tenemos una carpeta con un montón de documentos de word que tenemos que imprimir, en lugar de abrirlos uno por uno y darle a imprimir, podemos hacer:
for i in *.doc; do libreoffice --headless --invisible --norestore --convert-to pdf "$i"; done
lp *.pdf
tmuxes un comando que permite tener varias sesiones del terminal abiertas en paneles o en segundo plano, muy útil para no tener que depender de las pestañas y poder ver varios terminales a la vez, es fácil de usar y aumenta las posibilidades del terminal.
Alias
Algunos son para comandos de arriba:
alias please='sudo $(fc -ln -1)'- Ejecuta el comando anterior con ‘sudo’alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'- crea una notificación de escritorio, útil para lanzar una notificación cuando termina otro comando:npm build && alert 'Terminó el build'alias cd..='cd ..'Este me ahorra mucha frustración :)
