Recherche d'une commande sous linux

 

dc 09/06/07

Il m'est arrivé de chercher (en ligne de commande) une commande contenant 'play', si la commande commence par 'play', la complétion avec la, touche de tabulation suffit mais sinon...

J'ai cherché mais pas trouvé de commande permettant de chercher dans la variable PATH les commandes matchant une expression régulière (bien que cela doive quand même exister).

Voici donc la chose :

 #!/usr/bin/env tclsh8.4
 #
 # auteur : AmI2Blame4 (david cobac [string map {# @} david.cobac#free.fr])
 # date   : 09/06/2007
 #

 set RE [lindex $argv 0]
 set path $env(PATH)

 proc afficheFic {path args} {
    puts $path\n\t$args
 }

 set listFic {}
 foreach chemin [split $path :] {
    set Fic {}
    if [catch {cd $chemin}] continue
    set lf [eval glob -nocomplain -- *]
    foreach f $lf {
	if {[file isdirectory $f]} continue

	if {[regexp $RE $f]} {
	    lappend Fic $f
	}
    }
    if {$Fic != ""} {
	lappend listFic "$chemin $Fic"
    }
 }

 foreach v $listFic {
    eval afficheFic $v
 }

Pour chercher une commande contenant 'play' :

 $ cherchecom play
 /usr/bin
        beep-media-player bmp-play-files-2.0 beep-media-player-2 aplaymidi bmp-play-lastfm-2.0 realplay mplayer podebconf-display-po lqtvrplay lqtplay aplay display gmplayer scriptreplay esdplay gnome-display-properties
 /usr/games
        childsplay

On peut utiliser une expression régulière :

 $ cherchecom r.*pla[^y].*e$
 /usr/bin
        oofromtemplate