Unix: confusion utilisation de la Té -commande
Manuel indique que le tee est un "tuyau"-outil. Le cas [1] me confondre:
1. cas
echo "foo bar" | sudo tee -a /path/to/some/file
2. cas
:w !sudo tee %
Il est difficile de comprendre la logique de té de la cas. Comment le tee de travail?
:w !sudo tee %
stackoverflow.com/a/7078429/739331OriginalL'auteur Léo Léopold Hertz 준영 | 2009-04-18
Vous devez vous connecter pour publier un commentaire.
tee
est normalement utilisé pour diviser la sortie d'un programme de sorte qu'il peut être à la fois affiché et enregistré dans un fichier. La commande peut être utilisée pour capturer des intermédiaires de sortie avant que les données soient modifiées par une autre commande ou d'un programme. La commande tee lit depuis l'entrée standard, puis écrit son contenu sur la sortie standard. Simultanément copie le résultat dans le fichier spécifié(s) de la ou des variablesPar exemple
-a
Ajoute la sortie à la fin du Fichier au lieu d'écrire sur elle.-i
Ignore les interruptions.Avec
sudo
et l'ajout de ce fichier avec un exemple dans la questionless
lorsque vous utilisez déjàsudo
.OriginalL'auteur Girdhar Singh Rathore
tee
est utilisé pour diviser un pipeline de la commande, vous permettant d'enregistrer la sortie d'une commande vers un fichier et l'envoyer dans le pipeline. Dans le premier exemple que vous avez donné::"foo bar" sera fait l'écho de la sortie standard et ajouté à
/path/to/some/file
. Pensez té comme un "T" mixte dans un tube, le fractionnement de la sortie de deux autres tuyaux.OriginalL'auteur Rick Copeland
tee
copiesstdin
àstdout
(commecat
) et, de plus, écrit tout pour le nom de fichier. L'aide de cette façon avecsudo
permet de pousser de l'information dans un mode privilégié et - en même temps - contrôler si le droit des trucs j'y suis allé.Également noter qu'en raison de la manière la redirection est traitée dans la coquille presque équivalent
ne fonctionnera pas, car la redirection devrait être effectué par l'utilisateur appelant, et non par le
sudo
de l'utilisateur cible.OriginalL'auteur David Schmitt
Explications pour le Cas
1. l'escalade des autorisations avec le sudo - et -tee commandes
L'exemple n'est pas simplement question de logique, plutôt convention. Il présente la convention relative à l'escalade d'autorisations:
2. sudo-commandes avec Vim
Puisque vous pouvez utiliser Sudo-commandes avec Vim, vous pouvez utiliser la commande si vous avez oublié de lancer un sudo. Il est utile dans des endroits tels que /etc/init.d/, où vous trouverez les fichiers en lecture seule.
Logique avec le tee-commande
C'est comme une branche Git, ou mieux, s'il vous plaît, voir la T analogie par Rick Copeland. Heureusement, la modification de l'exemple (original) aide à comprendre son utilisation:
OriginalL'auteur Léo Léopold Hertz 준영
Rappelez-vous que la cible de
tee
n'est pas limité à des fichiers normaux, mais peut-être les appareils, Fifo, etc. Aussi, vous pouvez pipe à l'autretee
invocation, et ainsi de suite. 🙂OriginalL'auteur Chris Jester-Young
Je trouve que le
tee
de commande est très utile pour le débogage des scripts shell qui contiennent de longues canalisations. C'est la fin d'une horrible script shell qui est une décennie de retard pour une réécriture en Perl, mais il fonctionne encore. (Il a été modifié en 1998, comme il arrive.)Les trois sed scripts qui sont exécutés sont horrible - je n'ai pas l'intention de les montrer. C'est aussi un semi-emploi correct de
eval
. La normale noms de fichiers temporaires ($tmp.1, etc) sont préservés par un nom fixe (tmp.1, etc), et les résultats intermédiaires sont conservées dans tmp.4 .. tmp.7. Si je ont été mise à jour le commande, il faut utiliser '"$@#"
' au lieu de '$*
' comme indiqué. Et, quand je suis le débogage, puis il n'y a qu'un seul fichier dans la liste d'arguments, de sorte que le piétinement des fichiers de débogage n'est pas un problème pour moi.Noter que si vous avez besoin de le faire, vous pouvez créer plusieurs copies de l'entrée à un moment donné; il n'est pas nécessaire pour nourrir une
tee
commande dans un autre.Si quelqu'un en a besoin, j'ai une variante de
tee
appelétpipe
qui envoie des copies de la sortie de plusieurs pipelines au lieu de plusieurs fichiers. Il continue à aller de même si l'un des pipelines (ou de sortie standard) se termine tôt. (Voir mon profil pour les informations de contact.)OriginalL'auteur Jonathan Leffler
tee reflète simplement la sortie dans un fichier qui peut être spécifiée comme argument de té.
Dans le cas où vous montrer tee est appelé en tant que super utilisateur (via sudo) et son seul but est d'écrire un fichier en tant que super-utilisateur, au lieu si l'utilisateur qui a fait l'echo.
OriginalL'auteur lothar
commande tee crée simplement N+1 pas de fichiers , 1 copie transmise à la sortie standard (stdout) et d'autres pour les arguments fournis aux tee (c'est à dire des fichiers )
où N: nombre de agruments passé tee
OriginalL'auteur Abhishek choudhary