it-swarm.com.de

Was ist der schnellste Weg, um einer Datei über die Befehlszeile Text hinzuzufügen?

Gelegentlich habe ich den Gedanken, dass ich in eine Datei schreiben möchte, während ich am Terminal bin. Ich möchte diese Notizen alle in derselben Datei haben, die nur nacheinander aufgelistet wird. Ich möchte auch ein Datum/Uhrzeit-Tag auf jedem.

Ist dies möglich, ohne die Datei jedes Mal öffnen zu müssen? Kann ich es einfach in das Terminal eingeben und jedes Mal mit einem Befehl oder Skript an die Datei anhängen lassen?

Ich benutze GNU BASH.

32
Brian Dant

Schreiben Sie sich ein Shell-Skript namens "n". Setzen Sie dies ein:

#!/bin/sh
notefile=/home/me/notefile
date >> $notefile
emacs $notefile -f end-of-buffer

Ich empfehle dies anstelle von cat >> notefile weil:

  1. Eines Tages werden Sie es so eilig haben, dass Sie stattdessen das >> fummeln und> eingeben und Ihre Datei wegblasen.
  2. Emacs startet in fünf Hundertstelsekunden auf meinem Mac Mini. Es dauert eine Zehntelsekunde, um mit einem zehn Jahre alten Celeron-basierten System zu beginnen, das ich herumgesessen habe. Wenn Sie nicht so lange warten können, um mit dem Tippen zu beginnen, sind Sie bereits eine Maschine und müssen keine Notizen machen. :) :)

Wenn Sie darauf bestehen, einen Texteditor zu vermeiden, verwenden Sie eine Shell-Funktion:

n () { date >> /home/me/notefile; cat >> /home/me/notefile; }

dies sollte in allen Shells funktionieren, die die Bourne Shell-Kompatibilität beanspruchen.

27
Kyle Jones

Um mehrere Zeilen über die Befehlszeile in eine Datei zu schreiben, gehen Sie wie folgt vor:

cat >> sometextfile.txt << EOF
text
more text
and another line
EOF
22
regretoverflow

Verwenden Sie einfach echo:

echo $(date) Hi. >> notes.txt

Sie können >> verwenden, um an eine Datei anzuhängen, oder> verwenden, um sie zu überschreiben.

12
Rob Wouters

Viele nette Schnickschnack hier!

KISS-Methode:

date >>filename; cat >>filename
3
Jan Steinman

Wenn Sie Ruby auf Ihrem Computer installiert haben, können Sie https://github.com/minhajuddin/taskr verwenden. Auf diese Weise erhalten Sie eine schöne Ansicht Ihrer Notizen mit Tags und die verstrichenen Stunden.

Taskr screenshot

2

Taskwarrior kann das, was Sie wollten, etwas besser machen als ein einfaches Shell-Skript. Das -Sekunden-Tutorial sollte Ihnen sagen, ob ich richtig oder falsch bin.

echo "`date` text here" >> filename

oder

echo "text here `date`"|tee -a filename

mehr zu tee

1

Abhängig von Ihren Anforderungen ist syslogd möglicherweise ein weiteres Tool zum Durchsuchen. Der Befehl

[email protected]:~$ logger This message is sent to syslog

protokolliert die Nachricht mit der Einrichtung user.notice. Bei vielen Linux-Systemen reicht dies aus, um eine Datei /var/log/user.log zu öffnen und an diese anzuhängen. Bei anderen müssen Sie möglicherweise eine Behandlung für diese Einrichtung und Protokollstufe (oder die von Ihnen gewählte Einrichtung - local0) definieren Für Einrichtungen von local7 steht es normalerweise frei, solche Dinge zuzuweisen.

Es hat den Vorteil, dass es in der Lage (auch bekannt als konfigurierbar) ist, Notizen von Client-Computern an einen zentralen Protokollierungsserver zu senden. Dies verwende ich gerne, um administrative Aktionen zu verfolgen, da Zeitstempel-, Benutzer- und Host-Informationen automatisch beibehalten werden und die Aktionen in Ordnung bleiben .

resultierende Ausgabe in lokaler Datei:

[email protected]:~$ tail /var/log/user.log
Jan 31 07:18:37 tetrad theuser: This message is sent to syslog

Beispiel für die Syslog-Konfigurationszeile in Solaris:

local5.notice             ifdef(`LOGHOST', /var/log/diary, @loghost)

Hinweis: Das ifdef ist mit m4 Vorverarbeitet. Auf dem Computer mit dem Hostnamen/Hostalias "loghost" werden die Nachrichten in der Datei/var/log/diary protokolliert. Sie werden an den Remote-Syslog-Dienst unter loghost gesendet. Um diese Art der Konfiguration zu testen, kann die Konfigurationsdatei zur Erweiterung über m4 gesendet werden (lassen Sie das -D LOGHOST Weg, um zu sehen, wie es auf einem System aussehen würde, das nicht loghost heißt:

[email protected]$ /usr/ccs/bin/m4 -D LOGHOST /etc/syslog.conf
1
Tatjana Heuser

Kombinieren Sie ein paar verschiedene Antworten, um das zu erreichen, was ich gesucht habe. Das waren mehrere Optionen.

  1. Schnell
     Benutzer @ Hostname: ~/Dokumente $ echo text >> Dateiname 
     Benutzer @ Hostname: ~/Dokumente $ cat Dateiname 
     Text 
    
  2. Mehrere Zeilen
    benutzer @ Hostname: ~/Dokumente $ cat >> Dateiname2 << EOF 
    > Textzeile 1 
    > Textzeile 2 
    > Textzeile 3 
    > EOF 
     Benutzer @ Hostname: ~/Dokumente $ cat Dateiname2 
     Textzeile 1 
     Textzeile 2 
     Textzeile 3 
    
  1. Ändern Sie eine Datei mit einer bestimmten Zeilennummer

     Benutzer @ Hostname: ~/Dokumente $ sed -i '2iinserting new line' Dateiname2 
     Benutzer @ Hostname: ~/Dokumente $ cat Dateiname2 
     Textzeile 1 
     Einfügen einer neuen Zeile 
     Textzeile 2 
     Textzeile 3 
    
0
conman253