Cli tools
CLI tools¶
Me pasé un rato a zsh
pero es lo mesmo en el fondo. Lo más útil para mi es buscar en el historial con el inicio de un comando.
Scripts utiles¶
https://bbs.archlinux.org/viewtopic.php?pid=626487#p626487
Generar arbol de archivos con Markdown links¶
Derivado de: https://stackoverflow.com/a/35889620/11524079
#!/bin/bash
#File: sitetree.md
tree=$(tree -tf --noreport -P "*.md" -I "doc" --charset ascii $1 |
sed -e 's/| \+/ /g' -e 's/[|`]-\+/ -/g' -e 's:\(- \)\(\(.*/\)\([^/]\+\)\):\1[\4](\2):g' |
cut -c2-)
printf "# Site tree\n${tree}" > sitetree.md
Reemplazas links por archivos¶
Basado en: https://superuser.com/questions/303559/replace-symbolic-links-with-files/303561
mkdir tmp
find . -maxdepth 1 -type l -print | xargs cp -t tmp/ && mv tmp/* ./
rmdir tmp
Copiar iconos¶
Copiar imagenes (iconos, ponele) preservando su estructura de directorios, o "parents":
find hicolor -name "*litexl.png" -exec cp --parents {} ~/Software/LiteXL/hicolor \;
# https://unix.stackexchange.com/a/19847/460609
Grabar ISO de windows¶
NO FUNCIONÓ
# Primero formatear el pendrive a ExFat, con tabla de particiones MS-DOS
sudo mkdir /mnt/iso
sudo mount -o loop Win10_21H2_EnglishInternational_x64.iso /mnt/iso
rsync -avh --progress /mnt/iso/* /media/nicomic/8pen/
Comprimir PDF¶
Poner lo siguiente en .bashrc
o .zshrc
:
# PDF compress
gs_comprimir_pdf() {
local first_arg="$1" \
second_arg="$2"
# Usar gs
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dNOPAUSE -dQUIET -dBATCH -sOutputFile="$1.comppressed.pdf" $1
}
alias pdf_comprimir="gs_comprimir_pdf"
Referencias:
- https://itsfoss.com/compress-pdf-linux/
- https://unix.stackexchange.com/questions/3773/how-to-pass-parameters-to-an-alias
OCR para Screenshots¶
Reconocer texto en capturas de pantalla, para cuando la gente con fiaca o pocas ideas te manda links larguísimos en una imagen.
Requiere:
- ImageMagick
- Spectacle
- Tesseract
Crear un script con el siguiente código, y luego un alias en .bashrc
o .zshrc
para ejecutarlo:
#!/bin/bash
select tesseract_lang in spa eng; do break; done
#echo $tesseract_lang
printf "\n"
SCR_IMG=`mktemp`
trap "rm $SCR_IMG*" EXIT
# spectacle, append ".png" to the output
spectacle -r -b -n -d 2 -o $SCR_IMG.png
# imagemagick
mogrify -modulate 100,0 -resize 400% $SCR_IMG.png
# sudo pacman -S tesseract tesseract-data-eng tesseract-data-spa
tesseract $SCR_IMG.png $SCR_IMG &> /dev/null
cat $SCR_IMG.txt
exit
Robado de acá: https://askubuntu.com/questions/280475/how-can-instantaneously-extract-text-from-a-screen-area-using-ocr-tools
ffmpeg¶
Convertir audio¶
Convertir audio en .mp3
o .wav
a OGG Vorbis:
#!/bin/bash
for i in *.wav; do ffmpeg -i "$i" -c:a libvorbis -qscale:a 1 "ogg/${i%.*}.ogg"; done
for i in *.mp3; do ffmpeg -i "$i" -c:a libvorbis -qscale:a 1 "ogg/${i%.*}.ogg"; done
Opciones:
- -qscale:a – audio quality. Range is -1.0 to 10.0, where 10.0 is highest quality. Default is -q:a 3 with a target of 112kbps. The formula 16×(q+4) is used below 4, 32×q is used below 8, and 64×(q-4) otherwise. Examples: 112=16×(3+4), 160=32×5, 200=32×6.25, 384=64×(10-4).
Esto, más o menos, baja el tamaño de un .mp3
al tercio, y 20 veces el de un .wav
.
Combinar video y audio¶
ffmpeg -i BioRender.mp4 -i BioRender.m4a -codec copy -shortest BioRender_merge.mp4
ImageMagick¶
Imagemagick dejó de andar con el error: convert: attempt to perform an operation not allowed by the security policy `PDF' @ error/constitute.c/IsCoderAuthorized/408.
Y seguí esta guia para cambiar "none" a "read|write" en una línea de este archivo:
nano /etc/ImageMagick-7/policy.xml
De:
<policy domain="coder" rights="none" pattern="PDF" />
A:
<policy domain="coder" rights="read|write" pattern="PDF" />
GIFs con transparencia¶
Hacer GIFs con .png con transparencia
convert -delay 5 -dispose Background -loop 0 *.png myimage.gif
Imagenes a PDF monocromo¶
convert *.jpg -colorspace gray +dither -auto-level -threshold 70% -type bilevel output.pdf
Parallel¶
Convertir varios archivos en paralelo con ffmpeg:
for i in *.wav; do ffmpeg -i "${i}" -b:a 128000 "${i%.wav}.mp3"; done
find . -name "*.wav" | parallel ffmpeg -i {} -b:a 128000 {.}.mp3
Duplicados¶
Para encontrar nombres de archivo duplicados en dos carpetas:
1) Buscar duplicados en las carpetas por separado
find /pathToDir1/ -type f -printf "%f\n" | sort | uniq -cd
find /pathToDir2/ -type f -printf "%f\n" | sort | uniq -cd
2) Buscar los duplicados y armar una listita con los que tienen exactamente dos copias
find /pathToDir1/ /pathToDir2/ -type f -printf "%f\n" | sort | uniq -cd
find /pathToDir1/ /pathToDir2/ -type f -printf "%f\n" | sort | uniq -c | egrep '^ *2 ' | gawk '{print $2}' > rm.list
3) Remove
xargs rm < 1.txt # No verifiqué si son un problema los archivos con espacios en el nombre
Links:
- https://superuser.com/a/426454
- https://stackoverflow.com/a/5142498
- https://stackoverflow.com/a/4673336
- https://stackoverflow.com/a/5456136
BASH¶
Algunas cheatsheets.
Timestamp en BASH history.
Buscar archivos que contienen un string grep -nrl
En Arch, rename es una versión chota de perl-rename: https://bbs.archlinux.org/viewtopic.php?id=85128 Instalar: sudo pacman -Syu perl-rename perl-rename -v 's/.jpeg/.jpg/' *.jpeg
Disk IO speed test https://www.shellhacks.com/disk-speed-test-read-write-hdd-ssd-perfomance-linux/
sync; date; dd if=/dev/zero of=tempfile bs=1M count=2048; sync; date; rm tempfile;
Slic3r dejó de iniciar por un warning de Perl sobre el locale (el de siempre...) https://www.itechlounge.net/2017/01/linux-perl-warning-setting-locale-failed/
Agregué esto a /etc/environment y volvió a funcionar:
LC_ALL="en_US_.UTF-8"
No sé por qué es tan difícil hacer que esto no pase más...
.bashrc¶
# Usefil alias
alias h='history | grep'
ZSH¶
Uso "oh my zsh" para configurarla.
En el archivo .zshrc
hay una varible:
export ZSH="/usr/share/oh-my-zsh/"
Puede apuntar a la instalacion por AUR, o a una carpeta en el home; donde sea que este oh-my-zsh instalado.
El tema que me gusta se llama "gentoo". Pero queria el fondo negro del "blinks" para diferenciar la parte de escribir del output.
Copie el archivo /usr/share/oh-my-zsh/themes/gentoo.zsh-theme
y cree gentoo2.zsh-theme
con este contenido:
function prompt_char {
if [ $UID -eq 0 ]; then echo "#"; else echo $; fi
}
PROMPT='%K{black}%(!.%{$fg_bold[red]%}.%{$fg_bold[green]%}%n@)%m %{$fg_bold[blue]%}%(!.%1~.%~) $(git_prompt_info)$(prompt_char)%b '
RPROMPT='%k'
ZSH_THEME_GIT_PROMPT_PREFIX="("
ZSH_THEME_GIT_PROMPT_SUFFIX=") "
- El codigo
%K{black}
inicia el fondo negro enPROMPT
, y el%k
lo termina enRPROMPT
(right prompt). - Removi el codigo
${$reset_color}
porque hacia cosas raras con el fondo al escribir y luego borrar.
Importante¶
Los colores definidos en el tema de ZSH no son suficientes para que se "vean". También hay que cambiar los colores en el emulador de terminal (Konsole en mi caso).
make y autotools¶
Más info sobre autotools.
Este fue útil: http://smalltalk.gnu.org/blog/bonzinip/all-you-should-really-know-about-autoconf-and-automake
Este no lo leí pero parece lindo (?): http://blog.fourthbit.com/2013/06/18/creating-an-open-source-program-in-c-with-autotools-part-1-of-2
nmap¶
Quick:
nmap -sn 192.168.2.0/24
Ver:
Brillo y temperatura del monitor¶
En .bashr agregar:
alias bright="redshift -m randr:crtc=1 -P -r -l -34.5:-58.26 -O 2200 -b"
Y usar:
bright 0.5 # 50%
Ver:
grep¶
- Encontrar archivos por content: https://stackoverflow.com/a/16957078