Was ist der Befehl `editor` in bash?

Ich suchte nach einem Befehl, der hoffentlich den bevorzugten Texteditor des aktuellen Benutzers öffnen würde, da ich einige Anweisungen mit Befehlen in einem Blog schreibe. Ich hatte einen Befehl wie edit erwartet und editor gefunden. Für mich wurde vim im Terminal gestartet, was in der Nähe von was liegt Ich wollte, ich benutze vim-gtk. Ich suchte nach einer Möglichkeit, den Editor dazu zu bringen, vim-gtk zu verwenden, und fand diese Frage, die eine Umgebungsvariable, aber ich bin nicht sicher, ob dies überhaupt mit dem Befehl editor zusammenhängt. Ich habe man editor versucht , aber das hat gerade die vim-Manpage aufgerufen.

Wie kann ich editor dazu bringen, einen Texteditor meiner Wahl zu verwenden, oder sollte ich einen anderen Befehl verwenden?

Antwort

Dies ist ein Debian-Ismus (und erscheint daher in Ubuntu, Mint usw.). Sie wurden eingerichtet ein Linkaufruf ed editor. Sie können es wie folgt zurückverfolgen:

$ which editor /usr/bin/editor $ ls -l /usr/bin/editor lrwxrwxrwx 1 root root 24 Nov 24 19:10 /usr/bin/editor -> /etc/alternatives/editor $ ls -l /etc/alternatives/editor lrwxrwxrwx 1 root root 18 Nov 24 19:46 /etc/alternatives/editor -> /usr/bin/vim.gnome $ ls -l /usr/bin/vim.gnome -rwxr-xr-x 1 root root 2403392 Oct 26 2012 /usr/bin/vim.gnome 

Sie können also sehen, dass editor nur ein Unix-Link zu ist die ausführbare Datei vim.gnome.

Verwenden von editor?

Ich glaube nicht, dass ich “ d Gehen Sie in diese Richtung, um editor auf eine für Benutzer sinnvolle Weise einzurichten, da dies nicht das ist, was ich als Standard betrachten würde.

Zusätzlich können Sie die festlegen $EDITOR Umgebungsvariable, die auf alles zeigt, was Sie möchten, vim, gedit, emacs usw. Diese Variable wird jedoch garantiert nur von anderen Tools wie sudo, git und subversion, die speziell für die Verwendung der Variablen $EDITOR entwickelt wurden.

Implementierungsideen

Ich würde lediglich einen Alias Ihrer Wahl einrichten und entweder die Benutzer anweisen, dass er verfügbar ist sie über ihre Datei $HOME/.bashrc als Alias X oder als Systemkonfiguration in der Datei /etc/profile.d/our_aliases.sh als Alias X einrichten.

Oder Sie können den Benutzern einfach mitteilen, dass die Systeme „gedit, gvim, vim, emacs usw. und schneiden Sie die Zuckerbeschichtung durch und bringen Sie ihnen diese Dinge sofort bei.

Oder Sie können einen Text bereitstellen Datei mit dem Namen /etc/help.txt, die über einen Befehl help (alias help="less /etc/help.txt") in einer Shell ausgeführt werden kann das würde grundlegende Befehle und das Ausführen verschiedener Aufgaben bereitstellen. Mit diesem Ansatz können Sie die Hilfe im Laufe der Zeit mit neuen Funktionen oder Tipps anpassen und erhalten mehr als nur den Befehl editor.

Kommentare

  • Ja, Benutzer wissen, wie ihr Editor heißt, und ich werde ihnen nur sagen, dass sie eine bestimmte Datei bearbeiten sollen, anstatt ein Codebeispiel anzuzeigen. Ich war mit den Codebeispielen auf dem Laufenden und habe ‚ nicht bemerkt, dass ich ein wenig pedantisch wurde. ‚ ist zu schade, dass Ubuntu ‚ die Variable $EDITOR nicht setzt, jetzt ich ‚ kann sich nicht darauf oder auf den editor Symlink verlassen.
  • s/Ubuntu/Debian/g
  • Standards , seufz …

Antwort

Das Editorprogramm, das von einigen Programmen aufgerufen wird, wenn Sie sie anweisen, eine Datei zu bearbeiten. Sie müssen die Umgebungsvariable selbst festlegen.

Wenn Sie csh oder tcsh verwenden, geben Sie an der Shell-Eingabeaufforderung Folgendes ein:

setenv EDITOR vim 

Wenn Sie verwenden bash oder ksh, dann geben Sie Folgendes ein:

EDITOR=vim; export EDITOR 

(Ersetzen Sie „vim“ durch den Editor, den Sie verwenden möchten.)

Das EDITOR Variable ist die Variable, die Sie standardmäßig für einige Anwendungen benötigen, um den Editor aufzurufen. Es gibt eine weitere Variable namens VISUAL, mit der der bildschirmorientierte Editor angegeben wird. Im Allgemeinen möchten Sie den gleichen Wert wie die Variable EDITOR festlegen. Ursprünglich wäre EDITOR auf ed (ein zeilenbasierter Editor) und VISUAL auf vi (ein Bildschirm-) gesetzt worden. basierter Editor).

VISUAL="vim"; export VISUAL VISUAL="$EDITOR"; export VISUAL #even better 

Wenn Sie dies getan haben, verwenden die meisten Unix-Programme, die Texteditoren verwenden, den von Ihnen festgelegten Editor. Befolgen Sie die obigen Befehle, Sie legen den Standardeditor nur für die aktuelle Computersitzung fest. Um diese Änderungen dauerhaft zu machen, müssen Sie die oben beschriebenen entsprechenden Befehle in Ihr .login oder -Dateien (für csh- oder tcsh-Benutzer) oder Ihre .profile -Datei (wenn Sie bash oder ksh verwenden).

Es gibt auch eine andere Umgebungsvariable, wenn Sie vorgeben, Emacs zu verwenden. Es ist ALTERNATE_EDITOR und hat den gleichen Effekt, wird jedoch verwendet, wenn Emacs mit der Option --alternate-editor aufgerufen wird.

Aus dem GNU Emacs-Handbuch :

Die Option --alternate-editor=command ist nützlich, wenn emacsclient in einem Skript ausgeführt wird. Es gibt einen Befehl an, der ausgeführt werden soll, wenn emacsclient Emacs nicht kontaktiert. Die folgende Einstellung für die Umgebungsvariable EDITOR gibt beispielsweise immer einen Editor an, auch wenn Emacs nicht ausgeführt wird:

EDITOR="emacsclient --alternate-editor vi +%d %s" 

Kommentare

  • sh sagt nicht ‚ macht keinen Sinn. sh ist normalerweise die Shell des Systems ‚. Früher war es die Thomson-Shell, dann die Bourne-Shell und heutzutage auf den meisten Systemen die eine oder andere Shell, die die POSIX sh -Spezifikation implementiert. Die Syntax export EDITOR=vim lautet POSIX, jedoch weder Bourne noch Thomson. Die export VISUAL=$EDITOR funktioniert in bash und einigen Implementierungen von ksh. In den meisten anderen Shells benötigen Sie export VISUAL="$EDITOR". VISUAL=$EDITOR export VISUAL funktioniert in allen Bourne-ähnlichen Shells, einschließlich der Bourne-Shell.
  • Ist es üblich und akzeptiert, EDITOR auf einen solchen Mehrwortwert? In diesem Fall kann ich which "$EDITOR" oder which $EDITOR nicht sicher verwenden, um zu überprüfen, ob es vorhanden ist.

Antwort

Sie müssen die editor in der Umgebungsvariablen EDITOR. Fügen Sie den folgenden Befehl in Ihre .profile ein:

export EDITOR=editor 

Wenn Sie vim Als Standardeditor fügen Sie stattdessen

export EDITOR=vim

hinzu. Persönliche Präferenz: Ich verwende den absoluten Pfadnamen des Editors in der Umgebungsvariablen. Beispiel:

export EDITOR=/usr/bin/vim

Antwort

Die Der Befehl editor ist ubuntu-spezifisch. Es ist nicht tragbar oder sogar üblich (außerhalb von Ubuntu). Der Befehl ist auch systemweit und nicht pro Benutzer festgelegt. Die Funktionsweise ist, dass /usr/bin/editor nur ein Symlink zu einem Editor im System ist. Als solches ist es für alle Benutzer gleich.

Die Umgebungsvariable $EDITOR ist ziemlich Standard. Es wird von vielen Programmen verwendet, bei denen der Benutzer etwas bearbeiten muss. Daher ist es diese Variable, die Sie verwenden sollten, wenn Sie den Editor des Benutzers aufrufen möchten.

Kommentare

  • Sie ist nicht Ubuntu-spezifisch. Es kommt von Debian und verwendet den Mechanismus = ivi “ “ „“ „“. nicht nur Ubuntu.

Antwort

Dies ist, was ich in meinem Skript verwende:

# Find a suitable text editor editor="$VISUAL" [ -z "$editor" ] && editor="$EDITOR" [ -z "$editor" ] && which editor >/dev/null && editor=editor [ -z "$editor" ] && which nano >/dev/null && editor=nano [ -z "$editor" ] && which vi >/dev/null && editor=vi [ -z "$editor" ] && editor=no_editor_found # Use the editor we found $editor "$filename" 

Ich habe den letzten Aufruf von $editor nicht in Anführungszeichen gesetzt, um sicherzustellen, dass das obige emacsclient-Beispiel funktioniert.

Aus diesem Grund halte ich es für wichtig, immer einen Wert für editor festzulegen, andernfalls für die letzte Zeile könnte unbeabsichtigt $ filename ausführen. In meinem Fall habe ich no_editor_found gewählt, aber Sie könnten es auch Verwenden Sie dort pico oder ed.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.