====== One-Liners======
Des lignes de commandes qui réalisent en une seule ligne des traitements complexes. (Voir aussi [[shell_cmds|Shell commands]])
===== Shell =====
==== Find ====
* Trouver des fichier possédant des "SID" (SUID (4000), SGID (2000), StickyBit (1000)): find . -type f \( -perm -4000 -o -perm -2000 \) -exec ls {} \; 2>/dev/null
* Réaliser une opération sur certains fichiers: find . -user DE05425A -exec chmod 777 {} \;
* Lister certains repertoires: find $home -type d -name "*foobar" -ls
* Lister uniquement les fichiers du répertoire (pas de récursivité): # Versions GNU & BSD:
find /path -maxdepth 1 -name "plop*"
# Autres versions
cd /path
find . ! -name . -prune -name "plop*"
* Exécuter plusieurs commandes: find /path -maxdepth 1 -name "plop*" -exec cmd1 {} \&\& cmd2 \;
find . -name file1.cpp -exec ls -l {} \; -exec cat {} \;
# Exécuter une fonction shell:
export -f dosomething
find . -exec bash -c 'dosomething {}' \;
* Sélectionner un fichier au hasard : find '/some/foobar/path' -name '*.txt' | shuf -n1
# Lire une video au hasard
vlc "$(find '/media/videos' -name '*.mp4' -o -name '*.flv' -o -name '*.avi' -o -name '*.wmv' | shuf -n1)"
==== Random ====
* Obtenir une chaine aléatoire (ici 8 caractères):
* Alpha seulement : tr -dc "[:alpha:]" < /dev/urandom | head -c 8
* Alphanumérique : tr -dc "[:alnum:]" < /dev/urandom | head -c 8
===== Perl =====
Pour faire un Perl one-liner: passer les arguments ''n'' et ''e''. En cas de traitement d'un fichier en entrée, on peut récupérer le flux via ''<>''.
* Lister des données immergées dans de l'xml dans différents fichiers: cat *20110201* | perl -ne '@talbe = split(/PRM/, <>); foreach (@talbe) {if (/.*(\d{14})<\/Identifiant>.*/) {print "$1\n";};};'
===== Astuce SSH =====
Pour communiquer un fichier via SSH sans scp, sftp et consorts:
ssh user@host cat /path/file.zip > file.zip
===== Cinnamon =====
Eteindre la machine proprement via cinnamon (ne requière pas d'élévation de privilèges) : cinnamon-session-quit --power-off