sudo make me a sandwich
pffff
Je me retrouve souvent confronté devant ce problème:
% sudo some_command > /etc/some/other/fileLe problème c’est que l’utilisateur courant n’a pas les droit sur le fichier, et que le fichier est ouvert par le shell courant (qui n’est pas en root). Par exemple, si je veux mettre un serveur OpenDNS dans mon resolv.conf:
% sudo echo 'nameserver 208.67.222.222' > /etc/resolv.confNe marche évidement pas. Il faut aller l’éditer avec, par exemple, un sudo $EDITOR /etc/resolv.conf (remarquez le subtile subterfuge afin d’éviter un inutile nième troll ee VS nano).
encore un peu de tee?
sur un random-{forum,irc-chan,ml,cabaret} j’ai trouvé cette perl (non bapt, non.) e :
% echo 'nameserver 208.67.222.222' | sudo tee /etc/resolv.confEt comme tout bon lecteur pourra RTFM dans man tee l’option -a permet de faire des sorts très puissants (et de remplacer >>):
% echo 'nameserver 208.67.222.220' | sudo tee -a /etc/resolv.confthe Shellnigme
Pour les amoureux du shell (sh POSIX) “traditionel” voilà une petite énigme interessante. Comment faire une boucle sur les lignes d’une variable ? par exemple, si je fais
myvar="`cat /etc/fstab`"j’ai maintenant le contenu du fichier /etc/fstab dans $myvar. Comment boucler pour traiter le contenu ligne par ligne ?
Je connais seulement deux solution en sh POSIX (l’une avec un for, et l’autre avec un while), réponse la semaine prochaine ;)
PS: postez vos réponse en commentaire !
Posted in prog | 2 comments |