Ich möchte Crontab bearbeiten. Es soll Vi sein, ist es aber nicht, wie Sie sehen können:
root@euve252628:~# crontab -e
0
0 * * * * /var/www/vhosts/nevemind-what-webs/httpdocs/megacronstunde.php
?
:wq
?
Ja, es gab mir eine ?
. Und warum gibt es mir eine Null?
Wenn ich a eingebe qund drücke, wird Enteres beendet. Ich muss wissen, wie man spart, weil es kein klassisches Vi ist.
cron
text-editor
nur ich
quelle
quelle
ed
: Standardmäßig wird eine Zeichenanzahl angegeben (in Debian-basierten Systemen ist dies normalerweise888
das erste Mal, dh die Anzahl der Zeichen in der "leeren" crontab-Vorlage). Wenn Sie eine Anzahl von 0 sehen, müssen Sie dies geändert haben. Siehe Crontab -e Befehl funktioniert nicht richtigEDITOR
etwas anderes überschreiben möchten , wenn Sie daran interessiert sind, ed tatsächlich zu verwenden, ist dies eine großartige Einführung: sanctum.geek.nz/arabesque/actually-using-edAntworten:
Das ist
ed
Standardmäßig ist die Eingabeaufforderung die leere Zeichenfolge. Wenn Sie beenden möchten, geben Sie einfach ein
q
. Nicht voranstellen mit:
. Wenn Sie nicht gespeicherte Änderungen vorgenommen haben, wird mit geantwortet?
. Sie können dies als "Sind Sie sicher?" Interpretieren und mit einemq
erneuten Befehl bestätigen . Übrigens wird jeder Befehl, den es nicht versteht, auch dazu führen, dass es antwortet?
. Das ist die einzige Fehlermeldung, die es kennt.Seine Befehle sind , was vim / vi / ex / sed basiert auf, so Befehle wie
g/re/p
,%s/vi/&m/g
,1,3d
,/pattern/,$d
,w
,q
,wq
funktionieren genauso wie vim.Befehle wie
i
,a
undc
gehen in den Einfügemodus. Um den Einfügemodus zu verlassen und zum Befehlsmodus zurückzukehren, geben Sie einfach eine Zeile ein, die nur a enthält.
. Um in eine andere Zeile zu "wechseln", geben Sie einfach die Zeilennummer, einen Versatz von der aktuellen Zeile wie+2
oder-1
oder einen regulären Ausdruck als Befehl ein, um zu dieser Zeile zu wechseln ..
Bedeutet die aktuelle Zeile im Befehlsmodus. Sie können es verwenden, um zu wissen, wo Sie sich gerade befinden.$
bedeutet letzte Zeile.Übrigens, wenn Sie mehr darüber erfahren möchten, da es sich um ein GNU-Programm unter Linux handelt, ist der größte Teil der Dokumentation in
info ed
stattman ed
.Hier ist eine Beispielsitzung mit hinzugefügten Kommentaren (von ed nicht akzeptiert):
BEARBEITEN: Wie bei Grawity Erwähnungen können mit
h
oder hilfreichere Fehlermeldungen aktiviert werdenH
. Auch,
nicht%
im Bereich Teil eines Befehls ist der offizielle Weg , um „alle Linien“ in Bezug zu nehmened
. In GNUed
wird die Möglichkeit dazu%
unterstützt, aber iminfo
Handbuch nicht erwähnt . Die Verwendung%
für alle Zeilen wurde anscheinend erfundenex
, weil dort eher,
Mittel.,.
als Mittel1,$
wie ined
.EDIT2: Einen anderen Editor einstellen
Wie bei den anderen genannten Antworten können Sie einen anderen Editor angeben, indem Sie die Umgebungsvariablen
EDITOR
oder festlegenVISUAL
. Der Unterschied zwischen den beiden wird in dieser Antwort erklärt .Sie können dies folgendermaßen tun, wenn Sie es für einen einzelnen Befehl festlegen möchten:
oder so, wenn Sie möchten, dass alle in der Shell-Sitzung gestarteten Programme diese verwenden:
Sie können die Einstellungen
export
in~/.profile
oder speichern/etc/profile
, je nachdem, ob es sich um Benutzer- oder Systemeinstellungen für die Bash handelt. Auf diese Weise können Sie den Editor unter Unix portabel einstellen. Sie können dies in jeder Distribution tun.In Ubuntu gibt es auch den
update-alternatives
Befehl. Der aktuelle Standardeditor wird mit angezeigtupdate-alternatives --display editor
, und Sie können ihnupdate-alternatives --config editor
festlegen:quelle
h
, um sie anzufordern (oderH
um sie dauerhaft zu aktivieren).%
scheint eine sein ex Erfindung offiziell. Ed Verwendungen,
alle Linien zu bedeuten, auch wenn einige Versionen akzeptieren%
auch.)EDITOR
und erwähnenVISUAL
.ed
sind die gleichen wie invi
, außer dass Sie nicht zuerst ":" drücken müssen, um den Grafikbearbeitungsmodus zu verlassen. Ich habe Unix gelernt, als "echte Programmierer" keine Zeit mit GUIs verschwendeten - ein 80x25 "Green Screen" Terminal funktioniert fast so gut wie ein IBM 029EDITOR
undVISUAL
sind nicht wirklich so relevant. Die Frage war im Grunde: Was ist dieser Editor und wie verwende ich ihn? (Was ist das0
und das?
und wie speichere ich?).So finden Sie heraus, was dieser Editor ist
Drücken Sie Ctrl+ Z. Dadurch wird der Editor angehalten und Sie erhalten eine Shell-Eingabeaufforderung. Führen Sie
ps
an der Eingabeaufforderung aus, um zu sehen, welche Prozesse in diesem Terminal ausgeführt werden.bash
ist die ursprüngliche Shell,crontab
wird erwartet,sh
ist eine andere Shell, die aufgerufen worden sein musscrontab
, undps
ist der ausgeführteps
Befehl. Das gehted
(bereitgestellt durch das Paket mit dem gleichen Namen ).Wenn Sie nicht herausfinden können, wie Sie den Editor beenden können, können Sie ihn an dieser Stelle mit
kill 26302
oder beendenkill %1
.Was ist ed
Ed ist ein uralter Redakteur, der aus einer Zeit stammt, als Monitore noch keine Selbstverständlichkeit waren. Es wurde für Computer entwickelt, deren interaktives Ausgabe-Peripheriegerät ein Fernschreiber war .
Am
0
Anfang wird die Anzahl der Zeilen in der Datei angezeigt. Offensichtlich ist das eine wichtige Information.?
bedeutet, dass ed nicht verstanden hat, was Sie eingegeben haben. Zeilendrucker sind langsam, daher verschwendet ed keine Zeit und Tinte, um sinnlose Informationen wie Fehlermeldungen anzuzeigen. Ein alter Witz (ich kenne den Ursprung nicht) lautet:Wenn Sie sich unerfahren fühlen, können Sie den Befehl ausgeben
H
(alle Befehle außer einem sind ein einziger Buchstabe (Datenargumente werden nicht gezählt), denn wer tippt gerne), und Sie erhalten Fehlermeldungen. Zum Beispiel, wenn Sie nur drücken Enter...Klar, nicht wahr? (Eine leere Zeile ist der leere Befehl - der Befehl, bei dem es sich nicht um einen einzelnen Buchstaben handelt. Der leere Befehl wechselt in die nächste Zeile und druckt ihn aus. Wenn Sie sich am Ende der Datei befinden, ist dies bei einem leeren immer der Fall Datei gibt es keine nächste Zeile, daher ist die Adresse, zu der Sie verschoben haben, ungültig.)
Wie bekomme ich einen anderen Editor?
Der
crontab
Befehl überprüft, wie die meisten Befehle, die einen Texteditor ausführen, die UmgebungsvariablenVISUAL
undEDITOR
(in dieser Reihenfolge), um zu entscheiden, welches Programm ausgeführt werden soll. Dabei wird auf einen Systemstandard zurückgegriffen. Wenn eine dieser Variablen auf gesetzt isted
, ändern oder entfernen Sie sie.Unter Ubuntu (und Debian und anderen) ist der Standardeditor des Systems
/etc/alternatives/editor
, der über den Alternativmechanismus verwaltet wird . Standardmäßig wird der beste installierte Editor ausgewählt, wobei der beste durch die von den Paketbetreuern festgelegten Prioritäten definiert wird. Verwenden Sieupdate-alternatives
diese Option, um eine Alternative zu konfigurieren. Mit können Sie sich die verfügbaren Editoren und deren Prioritäten anzeigen lassened
hat die Priorität -100, wohingegen alle anderen "vernünftigen" Editoren eine positive Priorität haben. Die einzige Möglichkeit, wie dies standardmäßig verwendet wird, ist, wenn kein Editor installiert wurde. Bei einer Standardinstallation von Ubuntu wird Nano als Standardeditor mit der Priorität 400 verwendet. Wenn die Alternative auf festgelegt wurde,ed
können Sie sie mit ändernquelle
ps
mitpstree -sap $$
? (leichter herauszufinden, welcher Editor gestartet wurde, da er jetzt in einem Baumformat vorliegt)/usr/bin/editor
ist ein Symlink zu/etc/alternatives/editor
. Die Tatsache, dass Anwendungen aufgerufen werden,/usr/bin/editor
ist ein Detail, das ich übersprungen habe.EDITOR
undVISUAL
. Sie sind in der Tat die richtige Art, einen Editor auszuwählen, da dies eine Benutzerpräferenz und keine systemweite Präferenz ist. Ich bleibe lieberps
hier, um die Dinge einfach zu halten.Aus Ihrer Frage geht hervor, dass Ihr
vim
Standard-Editor dies nicht ist und Sie Probleme mit dem aktuellen Standard-Editor haben.Der folgende Befehl setzt den Standard-EDITOR auf
vim
Nach dem Einstellen des Standard - Editor zu sein
vim
, läuftcrontab -e
wird verwendenvim
als Editor.Anmerkungen:
vim
permanent, werden Sie den obigen Befehl zu Ihrer hinzufügen müssen~/.bashrc
oder~/.profile
oder ähnliche Datei.quelle
Verwenden Sie den folgenden Befehl, um den VI-Editor zum Bearbeiten der Crontab zu verwenden.
Oder, wenn Sie mit einem anderen Editor wie gedit, nano usw. bearbeiten möchten, ersetzen Sie einfach vi durch den Namen des Editors.
quelle