web-dev-qa-db-fra.com

Alternative à la commande TEE sans stdout

J'utilise | Sudo tee FILENAME Pour pouvoir écrire ou ajouter un fichier pour lequel des autorisations de superutilisateur sont assez souvent nécessaires.

Bien que je comprends pourquoi il est utile dans une certaine situation, que tee envoie également son entrée à STDOUT, je n'ai jamais réellement utilisé cette partie de tee pour quelque chose d'utile. Dans la plupart des situations, cette fonctionnalité ne fait que remplir mon écran avec une gigue indésirable, si je ne fais pas l'étape supplémentaire et le silence manuellement avec tee 1> /dev/null.

Ma question: Est-ce qu'il y a une ordonnance de commande, qui fait exactement la même chose que tee, mais fait par défaut ne génère rien à STDOUT?

37
aef

Vous pouvez utiliser un script. C'est à dire. Mettez quelque chose comme ça à I.e. $HOME/bin/stee, 0tee ou similaire:

#!/bin/bash

argv=
while [[ "$1" =~ ^- ]]; do
    argv+=" $1"
    shift
done

Sudo tee $argv "$1" > /dev/null
#!/bin/bash

Sudo tee "$@" > /dev/null

Rendez-le exécutable:

$ chmod 755 Stee

Maintenant, c'est.

$ ls -la | Stee -a/root/foo

4
Luca Stein

essayez de créer un fichier par rapport à la racine

$ ls -la /opt/ | head -2
total 0
drwxr-xr-x   3 root  wheel   96 Jun 13  2019 .
$ touch /opt/bufu
touch: /opt/bufu: Permission denied

créez un fichier à l'aide de la redirection de Pesky, de l'événement de journal et de l'écriture de contenu de fichier sur STDOUT, en quelque peu parallèle, certainement simultané.

$ cat /tmp/test.sh
#!/bin/sh

file=/opt/bufu
message="an embarrassing failure"
rm -rf $file

{ echo $file \
    | tee /dev/fd/2 \
    | xargs Sudo sh -c 'echo $1 >$2' _ "$message"
} 2>&1 \
    |
{ tee /dev/fd/3 \
    | xargs logger -s "Create File"

} 3>&1 \
    |
{ xargs cat \
    | xargs -I% echo file content is "%"
}
$ /tmp/test.sh
rm: /opt/bufu: Permission denied
Feb  7 17:03:16  bufu[4039] <Notice>: Create File /opt/bufu
file content is an embarrassing failure

mec, ce n'est pas la faute de la tee-shirt que son être forcé dans une position inconfortable - utilisez Xargs sh, ou écrire votre propre doublure

cat <<eof >./aef
echo "$1" >$2
eof
..
Sudo aef "is a cool guy" /opt/fubar
0
christian calloway