Parfois, j'ai une pensée que je veux écrire dans un fichier pendant que je suis au terminal. Je voudrais que ces notes soient toutes dans le même fichier, juste énumérées l'une après l'autre. Je voudrais également une étiquette date/heure sur chacun d'eux.
Est-il possible de le faire sans avoir à ouvrir le fichier à chaque fois? Puis-je simplement l'entrer dans le terminal et le faire ajouter au fichier à chaque fois avec une commande ou un script?
J'utilise GNU BASH.
Écrivez-vous un script Shell appelé "n". Mettez ça dedans:
#!/bin/sh
notefile=/home/me/notefile
date >> $notefile
emacs $notefile -f end-of-buffer
Je recommande ceci au lieu de cat >> notefile
parce que:
Si vous insistez pour éviter un éditeur de texte, utilisez une fonction Shell:
n () { date >> /home/me/notefile; cat >> /home/me/notefile; }
qui devrait fonctionner dans tous les shells revendiquant la compatibilité avec le Bourne Shell.
De plus, pour écrire plusieurs lignes dans un fichier à partir de la ligne de commande, procédez comme suit:
cat >> sometextfile.txt << EOF
text
more text
and another line
EOF
Utilisez simplement echo
:
echo $(date) Hi. >> notes.txt
Vous pouvez utiliser >> pour ajouter à un fichier, ou utiliser> pour l'écraser.
Beaucoup de cloches et de sifflets soignés ici!
Méthode KISS:
date >>filename; cat >>filename
Si vous avez Ruby installé sur votre ordinateur, vous pouvez utiliser https://github.com/minhajuddin/taskr . De cette façon, vous obtenez une belle vue de vos notes avec balises et les heures écoulées.
Taskwarrior peut faire ce que vous vouliez un peu mieux qu'un simple script Shell. Le Tutoriel de 30 secondes devrait vous dire si j'ai raison ou tort.
Selon vos besoins, syslogd peut être un autre outil à parcourir. La commande
theuser@tetrad:~$ logger This message is sent to syslog
enregistrera le message avec la fonction user.notice. Avec de nombreux systèmes Linux, cela suffira pour ouvrir et ajouter un fichier /var/log/user.log, avec d'autres, vous devrez peut-être définir une gestion pour cette installation et ce niveau de journal (ou, selon l'installation que vous choisissez - le local0 aux installations locales7 sont généralement libres d'affecter des choses comme celle-ci.
Il a l'avantage de pouvoir (alias configurable) envoyer des notes des machines client à un serveur de journalisation central, quelque chose que j'aime utiliser pour garder une trace de l'action administrative car il préserve automatiquement l'horodatage, les informations utilisateur et hôte, tout en gardant les actions dans l'ordre .
sortie résultante dans le fichier local:
theuser@tetrad:~$ tail /var/log/user.log
Jan 31 07:18:37 tetrad theuser: This message is sent to syslog
Exemple de ligne de configuration syslog sur Solaris:
local5.notice ifdef(`LOGHOST', /var/log/diary, @loghost)
Remarque: ifdef
est prétraité avec m4
, sur la machine avec le nom d'hôte/hostalias "loghost", les messages seront enregistrés dans le fichier/var/log/diary, sur tous les autres, ils seront envoyés au service syslog distant sur loghost. Pour tester ce type de configuration, le fichier de configuration peut être envoyé via m4 pour expansion (laissez le -D LOGHOST
pour voir à quoi cela ressemblerait sur un système non appelé loghost :
theuser@solstice$ /usr/ccs/bin/m4 -D LOGHOST /etc/syslog.conf
Combiner quelques réponses différentes pour réaliser ce que je cherchais, qui était plusieurs options.
user @ hostname: ~/Documents $ echo text >> filename user @ hostname: ~/Documents $ cat filename text
user @ hostname: ~/Documents $ cat >> filename2 << EOF > ligne de texte 1 > ligne de texte 2 > ligne de texte 3 > EOF user @ hostname: ~/Documents $ cat filename2 ligne de texte 1 ligne de texte 2 ligne de texte 3
Modifier un fichier à un numéro de ligne donné
user @ hostname: ~/Documents $ sed -i '2iinserting new line' filename2 user @ hostname: ~/Documents $ cat filename2 text line 1 insertion d'une nouvelle ligne ligne de texte 2 ligne de texte 3