à la fac, nous avons accès à plusieurs machines (serveurs d'applications, de
calcul, sas...) sur lesquelles nous avons le même home, donc les même
fichiers de configurations, même bien sûr pas les même logiciels.
Certaines machines (linux) ont une version GNU de ls, d'autres (BSD) pas.
Sur la plupart des machines, j'ai l'habitude d'avoir un alias
ls='ls --color=auto'. Cependant, cela couine un peu sur les machines dont
la version de ls n'implémente pas cette option, et je suis obligé de taper
unalias ls à la main à chaque fois avant de pouvoir bosser.
Quel est le moyen propre de gérer ce genre de chose ? J'ai bien pensé à
essayer de tester la version de ls, mais ls --version ne marche qu'avec la
version GNU, et je n'ai pas trouvé d'option correspondante dans le man de
la version BSD. Sinon, j'envisage de tester le nom de la machine (il n'y a
que deux machines BSD auxquelles nous avons accès), mais ça me paraît moins
satisfaisant.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Matthieu Moy
mpg writes:
à la fac, nous avons accès à plusieurs machines (serveurs d'applications, de calcul, sas...) sur lesquelles nous avons le même home, donc les même fichiers de configurations, même bien sûr pas les même logiciels.
Tu peux faire un
if [ $(hostname) = "machin" ]; then alias ... fi
Mais pour le cas particulier de ls,
if ls --version | grep -q GNU; then alias fi
devrait faire l'affaire (si ls --version échoue, grep ne va pas reconnaitre GNU dans sa sortie, donc, on a bon).
-- Matthieu
mpg <manuel.pg@free.fr> writes:
à la fac, nous avons accès à plusieurs machines (serveurs d'applications, de
calcul, sas...) sur lesquelles nous avons le même home, donc les même
fichiers de configurations, même bien sûr pas les même logiciels.
Tu peux faire un
if [ $(hostname) = "machin" ]; then
alias ...
fi
Mais pour le cas particulier de ls,
if ls --version | grep -q GNU; then
alias
fi
devrait faire l'affaire (si ls --version échoue, grep ne va pas
reconnaitre GNU dans sa sortie, donc, on a bon).
à la fac, nous avons accès à plusieurs machines (serveurs d'applications, de calcul, sas...) sur lesquelles nous avons le même home, donc les même fichiers de configurations, même bien sûr pas les même logiciels.
Tu peux faire un
if [ $(hostname) = "machin" ]; then alias ... fi
Mais pour le cas particulier de ls,
if ls --version | grep -q GNU; then alias fi
devrait faire l'affaire (si ls --version échoue, grep ne va pas reconnaitre GNU dans sa sortie, donc, on a bon).
-- Matthieu
Stephane Chazelas
On Tue, 04 Dec 2007 14:36:25 +0100, Matthieu Moy wrote:
mpg writes:
à la fac, nous avons accès à plusieurs machines (serveurs d'applications, de calcul, sas...) sur lesquelles nous avons le même home, donc les même fichiers de configurations, même bien sûr pas les même logiciels.
Tu peux faire un
if [ $(hostname) = "machin" ]; then alias ... fi
Les quotes sont au mauvais endroit, tu confonds avec d'autres languages ou "..." est utiliser pour des chaines de type string. En shell, tout est string et "..." sert a empecher certaines expansions du shell pas a indiquer ou specifier le type.
if [ "$(hostname)" = machin ]; then...
ou
case $(uname -n) in (machin) alias ... esac
ou
case $(uname) in Linux) alias... esac
Mais pour le cas particulier de ls,
if ls --version | grep -q GNU; then alias fi
devrait faire l'affaire (si ls --version échoue, grep ne va pas reconnaitre GNU dans sa sortie, donc, on a bon).
Mais affichera un message d'erreur.
if ls --version -d 2>&1 | grep -q GNU; then alias... fi
Avec zsh, tu peux aussi faire:
if grep -q coreutils =ls; then alias ... fi
-- Stephane
On Tue, 04 Dec 2007 14:36:25 +0100, Matthieu Moy wrote:
mpg <manuel.pg@free.fr> writes:
à la fac, nous avons accès à plusieurs machines (serveurs d'applications, de
calcul, sas...) sur lesquelles nous avons le même home, donc les même
fichiers de configurations, même bien sûr pas les même logiciels.
Tu peux faire un
if [ $(hostname) = "machin" ]; then
alias ...
fi
Les quotes sont au mauvais endroit, tu confonds avec d'autres
languages ou "..." est utiliser pour des chaines de type string.
En shell, tout est string et "..." sert a empecher certaines
expansions du shell pas a indiquer ou specifier le type.
if [ "$(hostname)" = machin ]; then...
ou
case $(uname -n) in
(machin) alias ...
esac
ou
case $(uname) in
Linux) alias...
esac
Mais pour le cas particulier de ls,
if ls --version | grep -q GNU; then
alias
fi
devrait faire l'affaire (si ls --version échoue, grep ne va pas
reconnaitre GNU dans sa sortie, donc, on a bon).
Mais affichera un message d'erreur.
if ls --version -d 2>&1 | grep -q GNU; then
alias...
fi
On Tue, 04 Dec 2007 14:36:25 +0100, Matthieu Moy wrote:
mpg writes:
à la fac, nous avons accès à plusieurs machines (serveurs d'applications, de calcul, sas...) sur lesquelles nous avons le même home, donc les même fichiers de configurations, même bien sûr pas les même logiciels.
Tu peux faire un
if [ $(hostname) = "machin" ]; then alias ... fi
Les quotes sont au mauvais endroit, tu confonds avec d'autres languages ou "..." est utiliser pour des chaines de type string. En shell, tout est string et "..." sert a empecher certaines expansions du shell pas a indiquer ou specifier le type.
if [ "$(hostname)" = machin ]; then...
ou
case $(uname -n) in (machin) alias ... esac
ou
case $(uname) in Linux) alias... esac
Mais pour le cas particulier de ls,
if ls --version | grep -q GNU; then alias fi
devrait faire l'affaire (si ls --version échoue, grep ne va pas reconnaitre GNU dans sa sortie, donc, on a bon).
Mais affichera un message d'erreur.
if ls --version -d 2>&1 | grep -q GNU; then alias... fi
Avec zsh, tu peux aussi faire:
if grep -q coreutils =ls; then alias ... fi
-- Stephane
Thierry PINELLI
mpg wrote:
Quel est le moyen propre de gérer ce genre de chose ? J'ai bien pensé à essayer de tester la version de ls, mais ls --version ne marche qu'avec la version GNU, et je n'ai pas trouvé d'option correspondante dans le man de la version BSD. Sinon, j'envisage de tester le nom de la machine (il n'y a que deux machines BSD auxquelles nous avons accès), mais ça me paraît moins satisfaisant.
Installer les coreutils sur le BSD ?
ensuite alias ls=gls ou un truc de ce style.
je ne peux pas essayer sur mon NetBSD à cause d'un conflit entre gwc (GNU wc) et un autre paquet contenant un gwc homonyme :)
mpg wrote:
Quel est le moyen propre de gérer ce genre de chose ? J'ai bien pensé à
essayer de tester la version de ls, mais ls --version ne marche qu'avec la
version GNU, et je n'ai pas trouvé d'option correspondante dans le man de
la version BSD. Sinon, j'envisage de tester le nom de la machine (il n'y a
que deux machines BSD auxquelles nous avons accès), mais ça me paraît moins
satisfaisant.
Installer les coreutils sur le BSD ?
ensuite alias ls=gls ou un truc de ce style.
je ne peux pas essayer sur mon NetBSD à cause d'un conflit entre gwc
(GNU wc) et un autre paquet contenant un gwc homonyme :)
Quel est le moyen propre de gérer ce genre de chose ? J'ai bien pensé à essayer de tester la version de ls, mais ls --version ne marche qu'avec la version GNU, et je n'ai pas trouvé d'option correspondante dans le man de la version BSD. Sinon, j'envisage de tester le nom de la machine (il n'y a que deux machines BSD auxquelles nous avons accès), mais ça me paraît moins satisfaisant.
Installer les coreutils sur le BSD ?
ensuite alias ls=gls ou un truc de ce style.
je ne peux pas essayer sur mon NetBSD à cause d'un conflit entre gwc (GNU wc) et un autre paquet contenant un gwc homonyme :)