====== 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