J'utilise | sudo tee FILENAME
pour pouvoir écrire ou ajouter à un fichier pour lequel les autorisations de superutilisateur sont requises assez souvent.
Bien que je comprenne pourquoi il est utile dans certaines situations, qui tee
envoie également à nouveau 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 de gigue indésirable, si je ne passe pas à l'étape supplémentaire et que je la coupe manuellement avec tee 1> /dev/null
.
Ma question: y a-t-il une commande autour, qui fait exactement la même chose que tee
, mais par défaut ne produit rien vers STDOUT?
tee
parcat >filename
, obtenez-vous les résultats souhaités?cat
n'écrit pas dans les fichiers par lui-même. Et l'>
opérateur ne fonctionne pas car les fichiers ne sont pas accessibles en écriture par mon utilisateur actuel. Alors non, ça n'aide pas du tout. Et veuillez vous arrêter pour modifier complètement la signification de votre commentaire toutes les 2 secondes. Faites-en un nouveau à la place.| sudo tee FILENAME
par| sudo cat >filename
, obtenez-vous les résultats souhaités?>
opérateur utilise l'utilisateur shell actuel pour écrire dans le fichier. Cet utilisateur n'a pas les autorisations nécessaires.cat
est complètement inutile pour ça.Réponses:
Une autre option qui évite redirigeant la substance en arrière et puis
/dev/zero
est -la source
oflag=append conv=notrunc
options supplémentaires à utiliserdd
pour l'ajout.La
dd
solution imprime toujours indésirable sur stdout:Cela peut être évité en utilisant l'
status
option:Une autre possibilité intéressante (pour Linux quand même):
Pour copier l'entrée TTY dans un fichier, je fais souvent ceci:
C'est dommage que le tee n'ait pas d'option pour supprimer la sortie standard.
la source
Vous pouvez utiliser un script. C'est à dire mettre quelque chose comme ça dans ie
$HOME/bin/stee
,0tee
ou similaire:Rendez-le exécutable:
Maintenant, c'est-à-dire:
la source
Vous pouvez envelopper toute votre commande dans sudo, de sorte que le shell lui-même, ainsi que les redirections, sont effectués comme suit
root
:la source
Il n'y a pas directement de programme pour le faire (c'est à peu près la seule fois où cela serait utile), mais vous pouvez facilement écrire le vôtre. Si vous ne voulez pas le programme, vous pouvez aussi écrire un script shell simple qui fait la même chose:
cat > $1
. C'est différent de le mettre en ligne (comme le suggère la sciure de bois) car le sudo s'appliquera à l'ensemble du script, y compris la redirection.la source
Je sais qu'il est un peu trop tard, mais ce que je fais dans de tels cas (lorsqu'une sortie standard "mais aussi un fichier temporaire est nécessaire) est:
la source
/dev/null
, et ne raccourcit pas la commande. Quel serait l'avantage d'utiliser cela au lieu de la méthode d'origine?