User Tools

Site Tools


one_liners

This is an old revision of the document!


One-Liners

Des lignes de commandes qui réalisent en une seule ligne des traitements complexes. (Voir aussi 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)"

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 (/.*<Identifiant>(\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
one_liners.1409266200.txt.gz · Last modified: 2014/08/29 00:50 by ginko