Je cherche une méthode pour voir s'afficher le contenu d'un fichier d'aide lors d'un ls d'un répertoire, genre :
/monrep/README
/monrep/dossierun/
/monrep/dossierdeux/
/monrep/monfichiera
/monrep/monfichierb
Je voudrais que lorsque je fait un "ls /monrep" s'affiche le contenu du fichier README puis le répertoire.
Apache emploie cette méthode, et je trouverais ça fort utile avec "ls" et je serais fort étonné que ça n'existe pas déjà.
# readme automatique lors d'un ls
Posté par Sebastian . Évalué à 2.
Cela doit être faisable avec un alias de ls et une fonction en bash.
Quand tu appelleras ton ls personnel, il cherchera tout dabord s'il s'y trouve un fichier README.
Si oui ... il fera un 'cat' du fichier.
Ensuite le ls sera effectué.
Mais pour ce qui est question du code je ne pourrai pas t'aider.
J'en suis sur qu'une bonne âme passera par ici pour t'aiguiller ;)
[^] # Re: readme automatique lors d'un ls
Posté par niol (site web personnel) . Évalué à 10.
# autre chose que les aliases
Posté par B. franck . Évalué à 1.
et je l'ai utilisé pour gicler l'utilisateur root (autre que moi)
du dossier /var/spool/mail ;) parce que ses pratiques ne me plaisaient pas du tout (big-brotherite aigue).
ça s'appelle ondir et ça marche: http://swapoff.org/OnDir
ça peut exécuter des actions sur entrée/sortie d'un dossier
ce qui n'est pas exactement ce que tu as demandé mais ça s'en rapproche
et ça va en intéresser plus d'un, je pense.
# En espérant que ça aide :
Posté par Gyro Gearllose . Évalué à 3.
truc() { [ -f $1/README ] && less $1/README ; ls $1 ; }
Ca fait ce que tu demandes.
[^] # Re: En espérant que ça aide :
Posté par netsurfeur . Évalué à 3.
truc() { d=${1:-.}; [ -f $d/README ] && less $d/README ; ls $d ; }
alias ls=truc
Permet de gérer en plus le cas particulier ls sans argument qui liste le répertoire courant.
[^] # Re: En espérant que ça aide :
Posté par Gyro Gearllose . Évalué à 2.
Pour rebondir sur la réponse donnée par l'initiateur de cette question, voici donc un petit complément un peu plus argumenté....
Le truc aurait peut-être été mieux ainsi :
Mettre ça dans le .bashrc :
lsreadme () { d=${1:-.}; [ -f $d/README ] && less -F -X $d/README ; /bin/ls $d ; }
alias ls=lsreadme
A noter qu'il est toujours possible d'appeler le programme ls original :
- soit en l'appelant complètement : /bin/ls
- soit en préfixant la commande d'un antislash : \ls
J'ai mis less à la place de cat, au cas où le fichier README serait plus important et prendrait plus d'un écran. Le -F dit à less de quitter automatiquement si le fichier fait moins d'un écran, et le -X lui demande poliment d'arrêter d'effacer ce @#!% d'écran quand il a fini.
Voilà, c'est peut-être un peu plus court que la solution retenue.
Mais ce qui reste la force du libre, c'est la diversité et la liberté de choisir !
# Solution adoptée
Posté par tampax . Évalué à 2.
#!/usr/bin/perl
use Getopt::Long;
my $readme = ".README" ;
my $a = '' ;
my $l = '' ;
my $color = '' ;
unshift @ARGV, $ENV{LS_OPTIONS} ;
GetOptions ( 'a' => \$a, 'l' => \$l, 'color=s' => \$color ) ;
$args .= "-a " if $a ;
$args .= "-l " if $l ;
$args .= "--color=$color " if $color ;
push @ARGV, "." unless @ARGV ; # pour qu'un ls sans arguments fonctionne aussi
system "/bin/cat @ARGV/$readme" if ( ! -l "@ARGV" && -e "@ARGV/$readme" ) ;
exec "/bin/ls $args @ARGV" ;
en enregistrant ce script dans /bin/lsreadme et en modifiant le .bashrc comme suit :
eval "`dircolors`"
export LS_OPTIONS='--color=auto'
export LS='/bin/lsreadme'
alias ls='$LS $LS_OPTIONS'
alias ll='$LS $LS_OPTIONS -l'
je n'ai repris que les arguments que j'utilise couramment, le script respecte les options fournies par la variable LS_OPTIONS, ce qui permet a l'occasion de lancer directement /bin/ls en utilisant aussi les options de LS_OPTIONS, il réagit assez bien, son utilisation semble réellement transparente pour l'utilisateur, il y a probablement moyen de faire mieux pour les arguments.
Je vais pouvoir documenter mes répertoires de script pour que dans 3 ans lorsque j'aurais oublier ce bidouillage j'utiliserais bêtement un "ls" je me souviendais de votre aide fraternel et je retrouverais aisément ce que je cherche...
twin2:~# ll /conf/twin2/scripts/mysql
--------------------------------------------------
-> update.pl
Met a jour les fichiers openDB.txt avec
les informations des fichiers config2.xml.
total 4
-rwxr-xr-x 1 root root 1540 2006-03-03 09:16 update.pl
twin2:~#
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.