linux
terminal

Tabla resumen de los 50 mejores Comandos Linux

env variable de entorno guztiak listatzeko

lsLista directorios
cdCambia el directorio actual de trabajo
cpCopia contenido desde un origen a un destino
mkdirCrea un directorio
rmBorra ficheros o directorios
mvMueve elementos o les cambia el nombre
touchCrea un directorio vacío (o cambia la fecha)
manConsulta la ayuda más común, las páginas man
infoConsulta otra ayuda, más parecido a una web, con texto y enlaces
whatisMuestra la descripción corta de un comando
clearborra la pantalla
historyMuestra las últimas instrucciones ejecutadas
pwdMuestra el directorio actual de trabajo
findBusca un elemento del sistema de ficheros en función a nos criterios
locateEncontrar un fichero o directorio
whereisindica dónde está un programa
chmodcambia los permisos de un fichero o directorio
chownCambia la propiedad de un fichero o directorio
wgetDescargar el contenido de una URL en la red
catVer el contenido de un fichero de texto
grepmuestra las lineas de un texto que cumpla con un patrón
tailmuestra las últimas lineas de un texto
headmuestra la primeras lineas de un texto
sortordena texto
morePara la salida de texto cuando se llena la pantalla
lessIgual que more, pero más pontente
dpkgadministra paquetes en Debian y derivadas
rpmAdministra paquetes en Red Hat y derivadas
freemuestra información sobre la memoria (RAM y SWAP)
dfIndica el tamaño usado y libre de los discos
duCalcula el tamaño ocupado por un fichero o directorio
lsblkLista información sobre los dispositivos de bloques
fdiskAdministra particiones de disco
topInformación de los procesos en ejecucuión
pslistado de procesos en ejecución
killEnviar señales a un proceso (terminar, matar, pausar, etc.)
mountMontar un sistema de ficheros
umountDesmontar un sistema de ficheros
unameInformación del sistema: nombre, versión kernel, etc..
uptimetiempo encendido y carga del sistema
poweroffapaga el sistema
rebootrinicia
idmuestra información de un usuario
pingIndica si un ordenador está accesible en la red
nanoeditor de texto fácil de usar
tarcomprime y descomprime ficheros y directorios
sshPermite ejecutar instrucciones en otro ordenador
whomuestra usuarios conectados al sistema
passwdcambia la contraseña de acceso
sudoEjecuta una instrucción con más privilegios
suPermite identificarte como otro usuario

sudo passwd root (kontraseña aldatzeko)

mv ~/.config/nvim{,.bak}  #bertan.bak bezela gordetzeko

https://itsfoss.com/online-linux-terminals/ (terminalak online probatzeko)

ctrl a : prompt hasiera
ctrl e: prompt bukaera
ctrl k: bukaerarte dagoena borratzen du
ctrl w: aurreko hitza borratzen du
ctrl u: aurreko dana borratzen du
ctrl z: egiten ari zarena ( vim - ekin artxibo bat aldatzen adibidez) segundo planora eramaten du eta terminalera juten zea. gero fg komandoakin berriro artxiboa aldatzera pasa zaitezke

!cd : historikotik zure azkeneko komandoa hartuko du cd jartzen duena
!:1 : azkeneko argumentoa
^fuzzy^fzf : reemplaza fuzzy por fzf en el ultimo comando
cd - : cambia al directorio previo que estabas
mkdir -p mydir/{dir1,dir2,dir3} : direktorio berria sortzen du eta barruan beste 3 direktorio.

1. Repetir comandos con !

  • ’!!’ -> Repite el último comando del historial.
  • ‘!n’ -> Repite el enésimo comando del historial.
  • ’!-n’ -> Repite el enésimo comando desde el final.
    2. Repetir comandos que coincidan con una cadena
  • ‘!string’ -> Repite el último comando que comience con ‘string’.
  • ’!?string’ -> Repite el último comando que contenga ‘string’.
    3. Sustituir texto en comandos anteriores
  • ‘^old^new’ -> Sustituye la primera aparición de ‘old’ por ‘new’ en el comando anterior.
    -ki ’!!:s/old/new/’ -> Sustituye ‘old’ por ‘new’ en el último comando.
  • ‘!string:s/old/new/’ -> Sustituye ‘old’ por ‘new’ en un comando que contiene ‘string’.
    4. Repetir y manipular argumentos de comandos anteriores
  • ’!:n’ -> Repite el enésimo argumento del comando anterior.
  • ’!!:’ -> Repite el último argumento del comando anterior.
  • ’!:*’ -> Repite todos los argumentos del comando anterior.
    5. Impresión y visualización de comandos
  • ’!:p’ -> Imprime el comando sin ejecutarlo.
  • ‘CTRL+R’ -> Activa la búsqueda interactiva en el historial. find jarrita danak topatzen ditu eta gero CTRL+R berriro emanez hurrengora juten da.
  • ‘history’ -> Lista numerada de los comandos ejecutados.
    6. Combinar comandos con pipes
  • Ejemplo: ‘ls | grep ‘.txt” seguido de ’!! | sort’.
    7. Personalización del historial
  • ‘HISTSIZE’ -> Número de comandos almacenados en memoria.
  • ‘HISTFILESIZE’ -> Número de comandos almacenados en el archivo.
  • ‘HISTIGNORE’ -> Ignorar comandos específicos.
  • ‘HISTCONTROL’ -> Control del historial con opciones como ‘ignorespace’ o ‘ignoredups’.
    8. Otras funcionalidades avanzadas
  • ‘history -d n’ -> Borra el enésimo comando del historial.
  • ‘history -c’ -> Limpia todo el historial

ln -s target\_file link\_name The -s option is important here. It determines that the link is soft link. If you don’t use it, it will create a hard link. I’ll explain the difference between soft links and hard links in a different article. (lehenengo ruta linkatzea nahi dezuna eta gero artxibo baten izena)

df -h uso en disco
ncdu analisis interactivo espacio en disco (barruan zaudela ? ematen badiogu aukerak ikusten dira. b emanez gero terminalera juten zea aukeratutako direktoriora)
duf informazio bisuala diskoaren erabilpena (duf . Zauden partizioa bakarrik erakusten du)

`para comparar archivos de texto y ver en que linea son y cuales son las diferencis. tambien se puede usar primerocmp` y simplemente te dice si son iguales (no marca nada) o hay diferencias de bytes

Hobeto fd eta rg (ripgrep) erabiltzen badegu.
https://atareao.es/podcast/deja-de-buscar-en-linux-como-siempre-hazlo-asi/

Cinco usos básicos

Encontrar archivos por el nombre

El ejemplo clásico es buscar cualquier archivo que tenga una palabra clave, por ejemplo linux.

  • Con find: find -name "*linux*"
  • Con fd: fd linux

Tienes que tener en cuenta que fd es Smart Case, esto quiere decir que si el patrón que pones a buscar es en minúsculas el lo realizará de forma Case Insensitive mientras si lo utilizas con mayúsculas entonces si que es Case Sensitive.

Por esta razón no tendrás los mismos resultados si utilizas fd linux que si utilizas fd Linux o incluso fd LINUX

Si quieres forzar cualquiera de los otros comportamientos puedes utilizar -s para Case Sensitive y -i para Case Insenstive.

En el 90% de los casos, al escribir rápido, solo tecleamos en minúsculas. *Smart Case garantiza que encuentres el archivo aunque no recuerdes si estaba en MiArchivo.txt o miarchivo.txt. Pero, si deliberadamente utilizamos una mayúscula, fd entiende que estás siendo preciso sobre la capitalización del nombre del archivo, y te da resultados más selectivos, como cuando buscas archivos de código con convenciones de nomenclatura específicas, por ejemplo, una clase como MiClase.java.

Buscar tipos de archivos

Si queremos buscar un archivo de tipo markdown y que contenga la palabra linux el comando es,

  • Con find: find -type f -name "*linux*.md
  • Con fd: fd -s -t f -e md linux

Buscar directorios

Si en lugar de archivos lo que queremos es buscar directorios, el comando es,

  • Con find: find -type d -iname "*linux*
  • Con fd: fd -t d linux

Buscar por un texto dentro de los archivos

Aquí lo que necesitamos hacer es una búsqueda recursiva de un texto en todo el árbol de directorios.

  • Con grep: grep -r Linux
  • Con ripgrep: rg Linux

Buscar por un texto Case Insensitive dentro de los archivos

Similar al caso anterior pero en este caso Case inssensitive.

  • Con grep: grep -ri Linux
  • Con ripgrep: rg -iLinux

Cinco trucos imprescindible

  • Buscar archivos de tipo markdown que contentan Linux en su interior. Esto es algo sencillo como utilizar rg -t md Linux
  • Buscar código en archivos Python es algo similar al anterior pero en este caso rg -t py "import md5". Si quieres saber todos los tipos tienes que utilizar rg --type-list.
  • Ejecutar comandos sobre los archivos encontrados. Por ejemplo si quieres borrar todos los archivos .bak que contengan la palabra linux lo puedes hacer con fd -s -t f -e py linux
  • Buscar por archivos con un nombre exacto. Por ejemplo si quieres buscar todos los archivos que se llamen README lo puedes hacer con fd '^README$'
  • Si quieres buscar todos los archivos que no contienen la cadena TODO lo puedes hacer con la opción -files-without-match. Por ejemplo rg --files-without-match TODO

figlet - ART bihurtzeko textua programa

fzf fuzzy finder

Rename:

rename "s/SEARCH/REPLACE/g"  *

This will replace the string SEARCH with REPLACE in every file (that is, *). The /g means global, so if you had a SEARCH_SEARCH.jpg, it would be renamed REPLACE_REPLACE.jpg. If you didn’t have /g, it would have only done substitution once, and thus now named REPLACE_SEARCH.jpg. If you want case-insensitive, add /i (that would be, /gi or /ig at the end).

Lista de shells disponibles
cat /etc/shells
Shell activo echo $SHELL

sd: sed baina errezago replace-ak egiteko
https://github.com/chmln/sd

Simpler syntax for replacing all occurrences:

  • sd: sd before after
  • sed: sed s/before/after/g

Replace newlines with commas:

  • sd: sd '\n' ','
  • sed: sed ':a;N;$!ba;s/\n/,/g'

Extracting stuff out of strings containing slashes:

  • sd: echo "sample with /path/" | sd '.*(/.*/)' '$1'

  • sed: echo "sample with /path/" | sed -E 's/.*(\\/.*\\/)/\1/g'

    With sed, you can make it better with a different delimiter, but it is still messy:

    echo "sample with /path/" | sed -E 's|.*(/.*/)|\1|g'

In place modification of files:

  • sd: sd before after file.txt

  • sed: sed -i -e 's/before/after/g' file.txt

    With sed, you need to remember to use -e or else some platforms will consider the next argument to be a backup suffix.

Para programar un script que se ejecute a las 10:00 AM del día siguiente:
echo '/ruta/al/script.sh' | at 10:00 tomorrow
echo 'tar -czf backup.tar.gz /ruta/del/directorio' | at 2024-12-01 14:00

ncdu (sudo apt install ncdu)terminaletik diskoko egoera ikusteko nun dauden artxibo astunenak. b teklarekin karpetan sartzen zea terminalen

services : adibidez cloudflared

systemctl start cloudflared.service
systemctl status cloudflared.service

Rsync

rsync -av source destination (ssh bidez konektatu daiteke) hemen ez dira artxiboak borratzen, bakarrik gehitu
rsync —dry-run -av source destination (simulatzeko)
rsync -av —delete source destination (guztiz sinkronizatzen du, artxiboak ezabatuz)
Rclone modernoagoa

fish

https://ubunlog.com/fish-linea-comandos-inteligente/
https://fishshell.com/
Sudo apt install fish
which fish
chsh -s /usr/bin/fish

alias bezela hemen abrebiaturakin jolastu daiteke komando erabilienekin baina gero modifikatu daiteke

abbr —add ddo ‘docker compose down’
abbr —list (listatzeko danak)

alias —save hx=“helix”
fish no usa un archivo .bashrc o .zshrc. Al usar el flag --save, la shell crea automáticamente un archivo de función en: ~/.config/fish/functions/hx.fish