Aller au contenu

Bash (exemples)

Ajouter un préfixe à la ligne d'un fichier texte:

brew list | sed -e 's/^/brew install /' > brew-list.txt

Pour un suffixe:

sed -e 's/$/suffix/'

Cherche tous les .jpg d'un répertoire et les effacer:

find . -name '*jpg' -exec rm {} +

Concaténer tous les .csv:

find . -type f -iname "*.csv" -exec cat {} \; > toutes.txt

Couleurs dans le terminal:

export UNDERLINE=$(tput sgr 0 1)
export BOLD=$(tput bold)
export BLACK=$(tput setaf 0)
export RED=$(tput setaf 1)
export GREEN=$(tput setaf 2)
export YELLOW=$(tput setaf 3)
export BLUE=$(tput setaf 4)
export PURPLE=$(tput setaf 5)
export CYAN=$(tput setaf 6)
export WHITE=$(tput setaf 7)
export GRAY=$(tput setaf 8)
export LIGHTRED=$(tput setaf 9)
export LIGHTGREEN=$(tput setaf 10)
export LIGHTYELLOW=$(tput setaf 11)
export LIGHTBLUE=$(tput setaf 12)
export LIGHTPURPLE=$(tput setaf 11)
export LIGHTCYAN=$(tput setaf 11)
export RESET=$(tput sgr0)
echo "${BLUE}blue${RESET} ${RED}red${RESET}"
blue red
for i in {0..255}; do echo "$(tput setaf $i)test"; done

Supprimer récursivement tous les fichiers .DS_ST0RE:

sudo find / -name ".DS_Store" -depth -exec rm {} \;
find . -name '*.DS_Store' -type f -delete
find . -name '.DS_Store' -type f -print -exec rm -f {} +

Commentaire multi-lignes:

res1=$(gdate +%s.%N)

: <<'END_COMMENT'
brew info oniguruma 
brew info gnutls 
brew info php

res2=$(gdate +%s.%N)
dt=$(echo "$res2 - $res1" | bc)
dd=$(echo "$dt/86400" | bc)
dt2=$(echo "$dt-86400*$dd" | bc)
dh=$(echo "$dt2/3600" | bc)
dt3=$(echo "$dt2-3600*$dh" | bc)
dm=$(echo "$dt3/60" | bc)
ds=$(echo "$dt3-60*$dm" | bc -l)

#printf "\e[1;34mTotal runtime: %d:%02d:%02d:%02.4f\n" $dd $dh $dm $ds
echo -e "\e[1;34m $dd $dh $dm $ds \e[0m"
END_COMMENT

Créer une playlist .m3u:

$ ~/Music/Shaka Ponk - Apelogies/CD1 master*
# Musepack(mpc) Monkey's Audio(ape) WavPack(wv) Apple alac(m4a)

printf "#EXTM3U\n" > playlist.m3u

ls -1v | grep -E '.mp3|.mp4|.m4a|.aac|.alac|.flac|.ogg|.mpc|.ape|.wma|.wav' >> playlist.m3u

#EXTM3U
01. ————————THE GREATEST TITS.mp3
02. Hombre Que Soy (2020).mp3
03. I'm Picky (2020).mp3
04. Sex Ball (2020).mp3
05. Smells Like Teen Spirit (2020).mp3
06. Hell'o (2020).mp3
07. French Touch Puta Madre (2020).mp3
08. My Name Is Stain.mp3
09. Wanna Get Free (2020).mp3
10. Story o' My Lf (2020).mp3
11. Let's Bang (2020).mp3
12. Fonk Me (2020).mp3
13. Mysterious Ways.mp3
14. How We Kill Stars (2020).mp3
15. Do (Unplugged).mp3
16. Body Cult (2020).mp3
17. Palabra Mi Amor (2020).mp3
printf "#EXTM3U\n" > playlist.m3u
find . -name '*.mp3' | sort >> playlist.m3u
for i in {1..5}; do printf "#EXTM3U\n" > ${i}star.m3u; find . -type f -exec grep -i -l --text "rating.$i" '{}' \; >> ${i}star.m3u; done

Remplacer les espaces dans les noms de dossiers/fichiers:

 find ./thumsup -name "* *" -print0 | sort -rz | while read -d $'\0' f; do mv -v "$f" "$(dirname "$f")/$(basename "${f// /_}")"; done
r

Connaitre le nom du Terminal:

$ ps -p $$ -o args,ppid
ARGS  PPID
-zsh   705

$ ps -p 705 -o args                 # <- PPID
ARGS
/usr/bin/login -fqpl bruno /Applications/iTerm.app/Contents/MacO

Dernière mise à jour: March 4, 2022