Supposons que je veuille envoyer le signal 1 au processus
dont le pid se trouve dans le fichier foobar.
La première idée qui me vient à l'esprit est :
kill -1 $(cat foobar)
Ma question : s'agit-il d'un UUOC (useless use of cat) ?
En d'autres termes, existe-t-il un moyen plus simple de
passer le contenu d'un (unique) fichier comme paramètres
d'une commande, sans utiliser cat ?
Olivier Miakinen , dans le message <oih4rj$je4$, a écrit :
Supposons que je veuille envoyer le signal 1 au processus dont le pid se trouve dans le fichier foobar. La première idée qui me vient à l'esprit est : kill -1 $(cat foobar) Ma question : s'agit-il d'un UUOC (useless use of cat) ? En d'autres termes, existe-t-il un moyen plus simple de passer le contenu d'un (unique) fichier comme paramètres d'une commande, sans utiliser cat ?
S'il n'y a qu'une ligne, tu peux la lire avec read : read -r line < file S'il y a plusieurs lignes, tu peux faire une boucle : lf=" " lines="" while read -r line; do lines="$lines$line$lf" done < file
Olivier Miakinen , dans le message <oih4rj$je4$1@cabale.usenet-fr.net>,
a écrit :
Supposons que je veuille envoyer le signal 1 au processus
dont le pid se trouve dans le fichier foobar.
La première idée qui me vient à l'esprit est :
kill -1 $(cat foobar)
Ma question : s'agit-il d'un UUOC (useless use of cat) ?
En d'autres termes, existe-t-il un moyen plus simple de
passer le contenu d'un (unique) fichier comme paramètres
d'une commande, sans utiliser cat ?
S'il n'y a qu'une ligne, tu peux la lire avec read :
read -r line < file
S'il y a plusieurs lignes, tu peux faire une boucle :
lf="
"
lines=""
while read -r line; do
lines="$lines$line$lf"
done < file
Olivier Miakinen , dans le message <oih4rj$je4$, a écrit :
Supposons que je veuille envoyer le signal 1 au processus dont le pid se trouve dans le fichier foobar. La première idée qui me vient à l'esprit est : kill -1 $(cat foobar) Ma question : s'agit-il d'un UUOC (useless use of cat) ? En d'autres termes, existe-t-il un moyen plus simple de passer le contenu d'un (unique) fichier comme paramètres d'une commande, sans utiliser cat ?
S'il n'y a qu'une ligne, tu peux la lire avec read : read -r line < file S'il y a plusieurs lignes, tu peux faire une boucle : lf=" " lines="" while read -r line; do lines="$lines$line$lf" done < file
Erwan David
Olivier Miakinen <om+ écrivait :
Bonjour, Supposons que je veuille envoyer le signal 1 au processus dont le pid se trouve dans le fichier foobar. La première idée qui me vient à l'esprit est : kill -1 $(cat foobar) Ma question : s'agit-il d'un UUOC (useless use of cat) ? En d'autres termes, existe-t-il un moyen plus simple de passer le contenu d'un (unique) fichier comme paramètres d'une commande, sans utiliser cat ?
kill -1 $(< foobar) Il me semble que c'est une syntaxe POSIX. -- Les simplifications c'est trop compliqué
Supposons que je veuille envoyer le signal 1 au processus
dont le pid se trouve dans le fichier foobar.
La première idée qui me vient à l'esprit est :
kill -1 $(cat foobar)
Ma question : s'agit-il d'un UUOC (useless use of cat) ?
En d'autres termes, existe-t-il un moyen plus simple de
passer le contenu d'un (unique) fichier comme paramètres
d'une commande, sans utiliser cat ?
Bonjour, Supposons que je veuille envoyer le signal 1 au processus dont le pid se trouve dans le fichier foobar. La première idée qui me vient à l'esprit est : kill -1 $(cat foobar) Ma question : s'agit-il d'un UUOC (useless use of cat) ? En d'autres termes, existe-t-il un moyen plus simple de passer le contenu d'un (unique) fichier comme paramètres d'une commande, sans utiliser cat ?
kill -1 $(< foobar) Il me semble que c'est une syntaxe POSIX. -- Les simplifications c'est trop compliqué
Pascal J. Bourguignon
Olivier Miakinen <om+ writes:
Bonjour, Supposons que je veuille envoyer le signal 1 au processus dont le pid se trouve dans le fichier foobar. La première idée qui me vient à l'esprit est : kill -1 $(cat foobar) Ma question : s'agit-il d'un UUOC (useless use of cat) ?
Je dirais que non.
En d'autres termes, existe-t-il un moyen plus simple de passer le contenu d'un (unique) fichier comme paramètres d'une commande, sans utiliser cat ?
Oui, avec bash c'est possible: kill -1 $<(foobar) Mais pas avec sh. Pour les autres shell, je ne sais pas. Pour d'autres commands que kill, ça va dépendre de la commande: certaines commandes sont capables de prendre leur données à parti r d'un fichier passé en argument. Par exemple, un mot de passe à passer à gpg peut se faire avec l'une de ces trois options: --passphrase-fd n --passphrase-file file --passphrase string Alors on a le choix entre: gpg --passphrase-file foobar … gpg --passphrase-fd 4 4<foobar … gpg --passphrase "$(cat foobar)" … La première option est la meilleure, bien sur (portable, sure); la seconde va dépendre du shell (possible en bash, ou quand on appelle gpg à partir de son propre programme); la dernière est bien sûr la pire, dans le cas d'un mot de passe, et du fait de l'existence des autres options, peut être considérée un UUOC. Le vrai UUOC c'est: cat foo | mycommand au lieu de: mycommand < foo -- __Pascal J. Bourguignon http://www.informatimago.com
Olivier Miakinen <om+news@miakinen.net> writes:
Bonjour,
Supposons que je veuille envoyer le signal 1 au processus
dont le pid se trouve dans le fichier foobar.
La première idée qui me vient à l'esprit est :
kill -1 $(cat foobar)
Ma question : s'agit-il d'un UUOC (useless use of cat) ?
Je dirais que non.
En d'autres termes, existe-t-il un moyen plus simple de
passer le contenu d'un (unique) fichier comme paramètres
d'une commande, sans utiliser cat ?
Oui, avec bash c'est possible:
kill -1 $<(foobar)
Mais pas avec sh.
Pour les autres shell, je ne sais pas.
Pour d'autres commands que kill, ça va dépendre de la commande:
certaines commandes sont capables de prendre leur données à parti r d'un
fichier passé en argument. Par exemple, un mot de passe à passer à gpg
peut se faire avec l'une de ces trois options:
--passphrase-fd n
--passphrase-file file
--passphrase string
La première option est la meilleure, bien sur (portable, sure); la
seconde va dépendre du shell (possible en bash, ou quand on appelle gpg
à partir de son propre programme); la dernière est bien sûr la pire,
dans le cas d'un mot de passe, et du fait de l'existence des autres
options, peut être considérée un UUOC.
Le vrai UUOC c'est:
cat foo | mycommand
au lieu de:
mycommand < foo
--
__Pascal J. Bourguignon
http://www.informatimago.com
Bonjour, Supposons que je veuille envoyer le signal 1 au processus dont le pid se trouve dans le fichier foobar. La première idée qui me vient à l'esprit est : kill -1 $(cat foobar) Ma question : s'agit-il d'un UUOC (useless use of cat) ?
Je dirais que non.
En d'autres termes, existe-t-il un moyen plus simple de passer le contenu d'un (unique) fichier comme paramètres d'une commande, sans utiliser cat ?
Oui, avec bash c'est possible: kill -1 $<(foobar) Mais pas avec sh. Pour les autres shell, je ne sais pas. Pour d'autres commands que kill, ça va dépendre de la commande: certaines commandes sont capables de prendre leur données à parti r d'un fichier passé en argument. Par exemple, un mot de passe à passer à gpg peut se faire avec l'une de ces trois options: --passphrase-fd n --passphrase-file file --passphrase string Alors on a le choix entre: gpg --passphrase-file foobar … gpg --passphrase-fd 4 4<foobar … gpg --passphrase "$(cat foobar)" … La première option est la meilleure, bien sur (portable, sure); la seconde va dépendre du shell (possible en bash, ou quand on appelle gpg à partir de son propre programme); la dernière est bien sûr la pire, dans le cas d'un mot de passe, et du fait de l'existence des autres options, peut être considérée un UUOC. Le vrai UUOC c'est: cat foo | mycommand au lieu de: mycommand < foo -- __Pascal J. Bourguignon http://www.informatimago.com
Lucas Levrel
Le 23 juin 2017, à 01:59, Pascal J. Bourguignon a écrit :
En d'autres termes, existe-t-il un moyen plus simple de passer le contenu d'un (unique) fichier comme paramètres d'une commande, sans utiliser cat ?
Oui, avec bash c'est possible: kill -1 $<(foobar) Mais pas avec sh. Pour les autres shell, je ne sais pas.
Le 22 juin 2017, à 22:37, Erwan David a écrit :
kill -1 $(< foobar) Il me semble que c'est une syntaxe POSIX.
Apparemment il y a débat ! Ou bien les deux sont vrais ? -- LL Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Le 23 juin 2017, à 01:59, Pascal J. Bourguignon a écrit :
En d'autres termes, existe-t-il un moyen plus simple de
passer le contenu d'un (unique) fichier comme paramètres
d'une commande, sans utiliser cat ?
Oui, avec bash c'est possible:
kill -1 $<(foobar)
Mais pas avec sh.
Pour les autres shell, je ne sais pas.
Le 22 juin 2017, à 22:37, Erwan David a écrit :
kill -1 $(< foobar)
Il me semble que c'est une syntaxe POSIX.
Apparemment il y a débat ! Ou bien les deux sont vrais ?
Le 23 juin 2017, à 01:59, Pascal J. Bourguignon a écrit :
En d'autres termes, existe-t-il un moyen plus simple de passer le contenu d'un (unique) fichier comme paramètres d'une commande, sans utiliser cat ?
Oui, avec bash c'est possible: kill -1 $<(foobar) Mais pas avec sh. Pour les autres shell, je ne sais pas.
Le 22 juin 2017, à 22:37, Erwan David a écrit :
kill -1 $(< foobar) Il me semble que c'est une syntaxe POSIX.
Apparemment il y a débat ! Ou bien les deux sont vrais ? -- LL Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Erwan David
Lucas Levrel écrivait :
Le 23 juin 2017, à 01:59, Pascal J. Bourguignon a écrit :
En d'autres termes, existe-t-il un moyen plus simple de passer le contenu d'un (unique) fichier comme paramètres d'une commande, sans utiliser cat ?
Oui, avec bash c'est possible: kill -1 $<(foobar) Mais pas avec sh. Pour les autres shell, je ne sais pas.
Le 22 juin 2017, à 22:37, Erwan David a écrit :
kill -1 $(< foobar) Il me semble que c'est une syntaxe POSIX.
Apparemment il y a débat ! Ou bien les deux sont vrais ?
@bibi:~ $ echo $(< /run/cups/cupsd.pid) 4870 @bibi:~ $ echo $<( /run/cups/cupsd.pid) $/dev/fd/63 bash: /run/cups/cupsd.pid: Permission denied ça marche en bash ou zsh, pas en sh -- Les simplifications c'est trop compliqué
Lucas Levrel <lucas.levrel@u-pec.fr> écrivait :
Le 23 juin 2017, à 01:59, Pascal J. Bourguignon a écrit :
En d'autres termes, existe-t-il un moyen plus simple de
passer le contenu d'un (unique) fichier comme paramètres
d'une commande, sans utiliser cat ?
Oui, avec bash c'est possible:
kill -1 $<(foobar)
Mais pas avec sh.
Pour les autres shell, je ne sais pas.
Le 22 juin 2017, à 22:37, Erwan David a écrit :
kill -1 $(< foobar)
Il me semble que c'est une syntaxe POSIX.
Apparemment il y a débat ! Ou bien les deux sont vrais ?
Le 23 juin 2017, à 01:59, Pascal J. Bourguignon a écrit :
En d'autres termes, existe-t-il un moyen plus simple de passer le contenu d'un (unique) fichier comme paramètres d'une commande, sans utiliser cat ?
Oui, avec bash c'est possible: kill -1 $<(foobar) Mais pas avec sh. Pour les autres shell, je ne sais pas.
Le 22 juin 2017, à 22:37, Erwan David a écrit :
kill -1 $(< foobar) Il me semble que c'est une syntaxe POSIX.
Apparemment il y a débat ! Ou bien les deux sont vrais ?
@bibi:~ $ echo $(< /run/cups/cupsd.pid) 4870 @bibi:~ $ echo $<( /run/cups/cupsd.pid) $/dev/fd/63 bash: /run/cups/cupsd.pid: Permission denied ça marche en bash ou zsh, pas en sh -- Les simplifications c'est trop compliqué
Pascal J. Bourguignon
Lucas Levrel writes:
Le 23 juin 2017, à 01:59, Pascal J. Bourguignon a écrit :
En d'autres termes, existe-t-il un moyen plus simple de passer le contenu d'un (unique) fichier comme paramètres d'une commande, sans utiliser cat ?
Oui, avec bash c'est possible: kill -1 $<(foobar)
Oops, c'est n'importe quoi, désolé. Je pensais à <(list), mais ça prend des commandes, pas un fichier, alors, il faudrait faire: kill -1 <(cat foobar) ce qui n'est pas mieux.
Mais pas avec sh. Pour les autres shell, je ne sais pas.
Le 22 juin 2017, à 22:37, Erwan David a écrit :
kill -1 $(< foobar) Il me semble que c'est une syntaxe POSIX.
Apparemment il y a débat ! Ou bien les deux sont vrais ?
-- __Pascal J. Bourguignon http://www.informatimago.com
Lucas Levrel <lucas.levrel@u-pec.fr> writes:
Le 23 juin 2017, à 01:59, Pascal J. Bourguignon a écrit :
En d'autres termes, existe-t-il un moyen plus simple de
passer le contenu d'un (unique) fichier comme paramètres
d'une commande, sans utiliser cat ?
Oui, avec bash c'est possible:
kill -1 $<(foobar)
Oops, c'est n'importe quoi, désolé.
Je pensais à <(list), mais ça prend des commandes, pas un fichier,
alors, il faudrait faire:
kill -1 <(cat foobar)
ce qui n'est pas mieux.
Mais pas avec sh.
Pour les autres shell, je ne sais pas.
Le 22 juin 2017, à 22:37, Erwan David a écrit :
kill -1 $(< foobar)
Il me semble que c'est une syntaxe POSIX.
Apparemment il y a débat ! Ou bien les deux sont vrais ?
--
__Pascal J. Bourguignon
http://www.informatimago.com
Le 23 juin 2017, à 01:59, Pascal J. Bourguignon a écrit :
En d'autres termes, existe-t-il un moyen plus simple de passer le contenu d'un (unique) fichier comme paramètres d'une commande, sans utiliser cat ?
Oui, avec bash c'est possible: kill -1 $<(foobar)
Oops, c'est n'importe quoi, désolé. Je pensais à <(list), mais ça prend des commandes, pas un fichier, alors, il faudrait faire: kill -1 <(cat foobar) ce qui n'est pas mieux.
Mais pas avec sh. Pour les autres shell, je ne sais pas.
Le 22 juin 2017, à 22:37, Erwan David a écrit :
kill -1 $(< foobar) Il me semble que c'est une syntaxe POSIX.
Apparemment il y a débat ! Ou bien les deux sont vrais ?
-- __Pascal J. Bourguignon http://www.informatimago.com
Nicolas George
"Pascal J. Bourguignon" , dans le message , a écrit :
Je pensais à <(list), mais ça prend des commandes, pas un fichier, alors, il faudrait faire: kill -1 <(cat foobar)
Non, tu te trompes complètement sur la sémantique de <(...). Ne surtout pas essayer cette commande avec les privilèges de root.
"Pascal J. Bourguignon" , dans le message <m2tw363idr.fsf@despina.home>,
a écrit :
Je pensais à <(list), mais ça prend des commandes, pas un fichier,
alors, il faudrait faire:
kill -1 <(cat foobar)
Non, tu te trompes complètement sur la sémantique de <(...).
Ne surtout pas essayer cette commande avec les privilèges de root.
"Pascal J. Bourguignon" , dans le message , a écrit :
Je pensais à <(list), mais ça prend des commandes, pas un fichier, alors, il faudrait faire: kill -1 <(cat foobar)
Non, tu te trompes complètement sur la sémantique de <(...). Ne surtout pas essayer cette commande avec les privilèges de root.
Nicolas George
"Pascal J. Bourguignon" , dans le message , a écrit :
Je pensais à <(list), mais ça prend des commandes, pas un fichier, alors, il faudrait faire: kill -1 <(cat foobar)
Non, tu te trompes complètement sur la sémantique de <(...). Ne surtout pas essayer cette commande avec les privilèges de root. ... Hum, à la réflexion, pas de problème, ça fera juste une erreur sans gravité.
"Pascal J. Bourguignon" , dans le message <m2tw363idr.fsf@despina.home>,
a écrit :
Je pensais à <(list), mais ça prend des commandes, pas un fichier,
alors, il faudrait faire:
kill -1 <(cat foobar)
Non, tu te trompes complètement sur la sémantique de <(...).
Ne surtout pas essayer cette commande avec les privilèges de root.
... Hum, à la réflexion, pas de problème, ça fera juste une erreur sans
gravité.
"Pascal J. Bourguignon" , dans le message , a écrit :
Je pensais à <(list), mais ça prend des commandes, pas un fichier, alors, il faudrait faire: kill -1 <(cat foobar)
Non, tu te trompes complètement sur la sémantique de <(...). Ne surtout pas essayer cette commande avec les privilèges de root. ... Hum, à la réflexion, pas de problème, ça fera juste une erreur sans gravité.
Pascal J. Bourguignon
Nicolas George <nicolas$ writes:
"Pascal J. Bourguignon" , dans le message , a écrit :
Je pensais à <(list), mais ça prend des commandes, pas un fichier, alors, il faudrait faire: kill -1 <(cat foobar)
Non, tu te trompes complètement sur la sémantique de <(...). Ne surtout pas essayer cette commande avec les privilèges de root. ... Hum, à la réflexion, pas de problème, ça fera juste une erreur sans gravité.
Il faudrait une option: kill -1 --pid-in-file <(cat foobar) ce qui serait équivalent à: kill -1 --pid-in-file foobar donc doublement inutile :-) -- __Pascal J. Bourguignon http://www.informatimago.com
Nicolas George <nicolas$george@salle-s.org> writes:
"Pascal J. Bourguignon" , dans le message <m2tw363idr.fsf@despina.home>,
a écrit :
Je pensais à <(list), mais ça prend des commandes, pas un fichier,
alors, il faudrait faire:
kill -1 <(cat foobar)
Non, tu te trompes complètement sur la sémantique de <(...).
Ne surtout pas essayer cette commande avec les privilèges de root.
... Hum, à la réflexion, pas de problème, ça fera juste une erreur sans
gravité.
Il faudrait une option: kill -1 --pid-in-file <(cat foobar)
ce qui serait équivalent à: kill -1 --pid-in-file foobar
donc doublement inutile :-)
--
__Pascal J. Bourguignon
http://www.informatimago.com
"Pascal J. Bourguignon" , dans le message , a écrit :
Je pensais à <(list), mais ça prend des commandes, pas un fichier, alors, il faudrait faire: kill -1 <(cat foobar)
Non, tu te trompes complètement sur la sémantique de <(...). Ne surtout pas essayer cette commande avec les privilèges de root. ... Hum, à la réflexion, pas de problème, ça fera juste une erreur sans gravité.
Il faudrait une option: kill -1 --pid-in-file <(cat foobar) ce qui serait équivalent à: kill -1 --pid-in-file foobar donc doublement inutile :-) -- __Pascal J. Bourguignon http://www.informatimago.com
Nicolas George
"Pascal J. Bourguignon" , dans le message , a écrit :
Il faudrait une option
Non, ce serait une entorse au principe KISS.
"Pascal J. Bourguignon" , dans le message <m2lgoi39p3.fsf@despina.home>,
a écrit :