Je veux sortir le contenu d'un fichier pendant qu'il change, par exemple si j'ai le fichier foobar
et que je le fais:
magic_command foobar
Le terminal actuel doit afficher le contenu du fichier et attendre jusqu'à ce que, je ne sais pas, j'appuie sur ^ C.
Ensuite, si à partir d'un autre terminal, je fais:
echo asdf >> foobar
Le premier terminal devrait afficher la ligne nouvellement ajoutée en plus du contenu du fichier d'origine (bien sûr, étant donné que je n'ai pas appuyé sur ^ C).
Je vais marquer cela comme un devoir car je veux explorer et apprendre Linux, mais ce n'est pas un devoir, c'est juste une curiosité mienne.
Réponses:
Vous pouvez utiliser
tail command
avec-f
:C'est une bonne solution pour le spectacle en temps réel.
la source
-F
(majuscule f) pour rouvrir le fichier s’il est supprimé et recréé en cours de route.Si vous souhaitez afficher un fichier court, adapté à un seul écran de terminal, et que tout le fichier change, vous pouvez utiliser
watch
:watch cat example.txt
Il affiche le fichier entier toutes les 2 secondes par défaut, y compris un en-tête facultatif:
L'option
-d
(--differences
) mettra en évidence les modifications de la version précédente de la sortie ou de la première version.la source
Lorsque j'ai besoin de détecter des modifications de fichiers et de faire autre chose
tail -f filename
, j'ai utiliséinotifywait
un script pour détecter les modifications et y donner suite. Un exemple d'utilisation est présenté ci-dessous. Voirman inotifywait
pour d'autres noms d'événements et des commutateurs. Vous devrez peut-être installer leinotify-tools
package, par exemple viasudo apt-get install inotify-tools
.Voici l'exemple de script, appelé
exec-on-change
:Dans deux consoles, j’ai entré les commandes comme suit (où A> signifie entrée dans la console A et B> entrée dans la console B.)
La sortie suivante de
cat t
est apparue dans la console A:La sortie suivante de
exec-on-change
est apparue dans la console B:Le
exec-on-change
scénario terminé quand jerm
« dt
.la source
less
a un mode de suivi semblable àtail -f
- il suffit de frapperF
quand vous l'avez ouvert.la source
J'ai trois solutions:
1)
tail -f
est une bonne idée2) nous devons aussi
tailf
utiliser3) le troisième est un script bash:
la source