Joyeux Noël!
Comme cadeau, voici un lien qui a été diggé:
http://www.linux-mag.com/tips/
J'aime bien en particulier le rename:
zsh -c "autoload zmv; noglob zmv -W *.a *.b"
(c'est plus rapide pour ceux qui utilisent déjà zsh comme shell),
même s'il y a d'autres façons de le faire.
Pour le "cd -", j'utilise plutôt l'option AUTO_PUSHD de zsh, qui
me permet alors d'utiliser pleinement popd (ou cd ~-[TAB]).
Pour le contrôle de version, j'utilise Subversion, qui est
probablement meilleur que darcs si on n'a pas besoin du modèle
décentralisé (ou alors utiliser svk).
Pour "A Smart Man", je ne comprends pas pourquoi utiliser man
pour regarder un fichier de log compressé alors que less suffit,
d'autant plus que l'affichage par man risque de ne pas être
terrible.
Pour "Bash Quick Copy", ça marche aussi évidemment avec zsh.
Pour "Create a Tarball", il est préférable d'utiliser bzip2 au lieu
de gzip; cela se fait en remplaçant l'option z par l'option j.
Avec zsh, on n'a pas besoin de tee. Pour reprendre leur exemple,
mais avec zsh:
find / -name '*.pm' -print > log | cat
On peut utiliser une autre commande que cat, par exemple less,
mais dans ce cas, pour capturer également stderr pour less, faire:
find / -name '*.pm' -print > log |& less
Alternative à wget: curl. Ou "lynx -dump -source" (utile avec
Google Groups, qui rejette les accès faits par wget, et peut-être
curl).
--
Vincent Lefèvre <vincent(a)vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
On 2005-12-22 15:35:02 +0000, Florent Guiliani wrote:
> mais voilà je but.... qqun aurait une idée ?
man perlref ?
Mais je ne conseillerais pas ce genre de chose: c'est incompatible
avec "use strict;" (sauf à utiliser "no strict 'refs';" éventuellement
de manière locale), et il y a des risques de confusion, cf l'exemple
de la page man perlref:
local $value = 10;
$ref = "value";
{
my $value = 20;
print $$ref;
}
This will still print 10, not 20. Remember that local()
affects package variables, which are all "global" to the
package.
--
Vincent Lefèvre <vincent(a)vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA
Amis scripteurs bonjour,
Aujourd'hui je me pose la question suivante "En perl, comment déclarer
automatiquement
des variables provenant d'une hashtable avec clé = valeur ?"
Je m'explique: j'ai un tableau de hashtable ex:
my @tableau = ( { "cle1"=>"valeur1", "cle2"=>"valeur2" } ,
{ "cle1"=>"valeur3", "cle2"=>"valeur4" } ,
{ "cle1"=>"valeur5", "cle2"=>"valeur6" }
);
je parcour ce tableau comme ceci:
my $nbelement = scalar( @tableau );
for( my $i ; $i < $nbelement ; $i++){
#et là j'accède à $tableau[$i]{'cle1'} ou $tableau[$i]{'cle2'}
#j'en profite pour déclarer:
my $cle1 = $tableau[$i]{'cle1'}; # c'est ces 2 déclarations
my $cle2 = $tableau[$i]{'cle2'}; # qui nous intéressent ici
#reste du traitement
}
J'aimerais que ces 2 déclarations (en réalité un bonne dizaine et qui en
plus ne cesse d'augmenter)
soient faites automatiquement, j'aimerais faire un truc du style:
my $nbelement = scalar( @tableau );
for( my $i ; $i < $nbelement ; $i++){
map( eval \$$_ = $tableau[$i]{'$_} , keys $tableau[$i] );
}
mais voilà je but.... qqun aurait une idée ?
Florent,
Bonjour à tous (et, je l'espère, à toutes)
Voila, ça fait des années que j'écris des trucs débiles en shells
et j 'ai donc décidé de les rendre publics et publiables sous forme
de bibliothèque.
D'abord, elle marche sur linux, macosX (pas trop testée quand même) et
solaris (ksh et bash),
On trouve de tout, dans cette bibliothèque, de quoi gérer des tableaux,
de la gestion d'options (longue, courtes, abrégées, avec nombre d'argument
fixe variant de 0 à autant qu'on veut, et nombre d'argument variables),
quotas, boites de dialogue (whiptail, dialog, Xdialog autodetecté),
quoting, substitution, quotas, IPv4, ethernet, compilateur de script et
éditeur de lien (optionnels), j'en passe et des meilleures...
Une doc complète avec exemple et en français, en html.
Bref, un incontournable de stupidité (vaudrait mieux utiliser le
langage Z (ou mieux encore : prolog (mais c'est pas un script...))
Les routines, c'est du béton : J'utilise ça dans des scripts root depuis
plusieurs années et j'ai jamais eu de (grosse) surprise. AUTHENTIQUE !
N'attendez plus votre cadeau de noël et allez donc vite sur :
http://Schplurtz.free.fr/schplurtziel/bibsh/
Moi.
PS Je suis pas vraiment dispo en ce moment, alors Bonnes fêtes et à l'année
prochaine.
Christophe
Bonsoir a tous,
Il est facile de supprimer des bouts de chaines dans un tableau avec zsh
:
% usr=( marc_ matts_ eric_ )
% echo ${usr/_/}
marc matts eric
Je cherche a faire le meme genre de chose pour ajouter du texte. qqchose
du genre de :
mail=${usr/$/(a)example.com}
manque de bol, j'ai l'impression qu'on ne peut pas matcher les debuts et
fins de ligne, De plus, je ne crois pas que l'ont puisse faire référence
a une partie de la lhs dans la rhs ...
si une bonne ame pouvait venir me contredire ou me montrer une facon de
faire qui soit plus dans l'esprit de zsh. j'en serais heureux.
d'avance, merci
cordialement
mc
Bonjour a tous,
Je ne sais pas si je debarque mais j'ai trouvé une facon de procéder qui
me fait gagner bien du temps et de la lisibilité pour passer de l'info a
une fonction. Je vous fais donc part de cette idée simple qui est de
de passer les informations par variable d'environement plutot que par
arguments.
admin () {
typeset -A confldap
confldap=( $ldap )
echo connecting to $confldap[host] as $confldap[binddn]
for h ( $hosts ) print $h
}
base=dc=exemple,dc=com
ldap=(
pouet again
host ldapserver
base $base
binddn cn=admin,$base
) hosts=(
130.234.34.{1..5}
) admin
# tout est propre
echo apres : $ldap[host] et $confldap[host]