J'ai récemment trouvé ici une solution à mon problème, mais je ne comprends pas bien ce que tout dans cette commande signifie:
xdg-open "$@">/dev/null 2>&1
"$@"
est équivalent à "$1" "$2" ...
(les paramètres de position de la commande, qu'il est conseillé d'utiliser lorsqu'il existe des caractères spéciaux, par exemple des espaces, dans les paramètres).
De man bash
:
Special Parameters
The Shell treats several parameters specially. These parameters may only
be referenced; assignment to them is not allowed.
* Expands to the positional parameters, starting from one. When the
expansion is not within double quotes, each positional parameter
expands to a separate Word. In contexts where it is performed,
those words are subject to further Word splitting and pathname
expansion. When the expansion occurs within double quotes, it
expands to a single Word with the value of each parameter separated
by the first character of the IFS special variable. That is, "$*"
is equivalent to "$1c$2c...", where c is the first character of the
value of the IFS variable. If IFS is unset, the parameters are
separated by spaces. If IFS is null, the parameters are joined
without intervening separators.
@ Expands to the positional parameters, starting from one. When the
expansion occurs within double quotes, each parameter expands to a
separate Word. That is, "$@" is equivalent to "$1" "$2" ... If
the double-quoted expansion occurs within a Word, the expansion of
the first parameter is joined with the beginning part of the origi‐
nal Word, and the expansion of the last parameter is joined with
the last part of the original Word. When there are no positional
parameters, "$@" and $@ expand to nothing (i.e., they are removed).
Redirection de la sortie standard vers un fichier
Le fichier spécial qui signifie que la sortie sera redirigée "nulle part", autrement dit non écrit nulle part.
Voir man null
pour plus de détails.
Redirection de la sortie d'erreur vers un fichier
Redirection de la sortie d'erreur vers la sortie standard
De man bash
:
Note that the order of redirections is significant. For example, the com‐
mand
ls > dirlist 2>&1
directs both standard output and standard error to the file dirlist, while
the command
ls 2>&1 > dirlist
directs only the standard output to file dirlist, because the standard
error was duplicated from the standard output before the standard output
was redirected to dirlist.
"$@"
: tous les arguments d'un appel de script ou de fonction.>
: signifie redirect stdout
(identique à 1>
).>/dev/null
: signifie redirect stdout
to /dev/null
, ce qui signifie simplement supprimer la sortie.2>&1
Redirige l'errout (2>
) vers la sortie standard (&1
).