Hvad er kommandoen `editor` i bash?

Jeg ledte efter en kommando, der forhåbentlig ville åbne den aktuelle brugers foretrukne teksteditor, fordi jeg skriver nogle instruktioner med kommandoer i en blog. Jeg forventede en kommando som edit, og jeg fandt editor. For mig startede det vim i terminalen, hvilket er tæt på hvad Jeg ville; jeg bruger vim-gtk. Jeg begyndte at søge efter en måde at få redaktøren til at bruge vim-gtk og fandt dette spørgsmål, der forklarer et $EDITOR miljøvariabel, men jeg er ikke sikker på, om det engang er relateret til editor -kommandoen. Jeg prøvede man editor , men det trak netop vim manpage op.

Hvordan kan jeg få editor til at bruge en teksteditor efter eget valg, eller skal jeg bruge en anden kommando?

Svar

Dette er en Debian-isme (og vises derfor i Ubuntu, Mint osv.). De har opsat et linkopkald ed editor. Du kan spore det tilbage som følger:

$ 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 

Så du kan se, at editor bare er et Unix-link til den eksekverbare vim.gnome.

Brug editor?

Jeg tror ikke jeg ” d gå i den retning af opsætning af editor på en meningsfuld måde for brugerne, da det ikke er, hvad jeg ville betragte som standard.

Derudover kan du indstille $EDITOR miljøvariabel for at pege på alt hvad du vil, vim, gedit, emacs osv. Men denne variabel er kun garanteret at blive brugt af andre værktøjer såsom sudo, git og subversion, der er specielt designet til at blive bundet til at bruge variablen $EDITOR.

Implementeringsideer

Jeg vil blot oprette et alias efter eget valg og enten instruere brugerne om, at det er tilgængeligt for dem via deres $HOME/.bashrc -fil som alias X, eller indstil den som en systemkonfiguration i filen /etc/profile.d/our_aliases.sh, som alias X.

Eller du kan bare fortælle brugerne, at systemerne “giver gedit, gvim, vim, emacs osv. og skær sukkerbelægningen igennem og lær dem om disse ting lige uden for flagermusen.

Eller du kan give en tekst fil kaldet /etc/help.txt som de kunne køre via en kommando help (alias help="less /etc/help.txt") i en skal der giver grundlæggende kommandoer og hvordan man udfører forskellige opgaver. Denne tilgang giver dig mulighed for at tilpasse hjælpen, når tiden går, med nye funktioner eller tip, og det giver dem mere end bare editor kommandoen til bekvemmelighed.

Kommentarer

  • Ja, brugerne ved, hvad deres editor hedder, og jeg vil bare bede dem om at redigere en bestemt fil i stedet for at vise et kodeeksempel. Jeg var i gang med kodeeksemplerne, og jeg indså ‘ ikke, at jeg blev lidt pedant. Det ‘ er alt for dårligt, at Ubuntu ikke ‘ ikke indstiller $EDITOR variablen, nu har jeg kan ‘ ikke stole på det eller editor symlinket.
  • s/Ubuntu/Debian/g
  • standarder , suk …

Svar

Editorprogrammet, som nogle programmer kalder på, når du beder dem om at redigere en fil. Du skal selv indstille miljøvariablen.

Hvis du bruger csh eller tcsh, skal du ved shellprompten:

setenv EDITOR vim 

Hvis du bruger bash eller ksh, og indtast derefter:

EDITOR=vim; export EDITOR 

(Udskift “vim” med den editor, du vil bruge.)

EDITOR -variablen er den, du som standard har brug for for nogle applikationer for at påkalde editoren. Der er en anden variabel kaldet VISUAL, der bruges til at specificere den skærmorienterede editor. Generelt vil du indstille den til den samme værdi som EDITOR variablen. Oprindeligt ville EDITOR være indstillet til ed (en linjebaseret editor) og VISUAL ville “være indstillet til vi (en skærm- baseret editor).

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

Når du har gjort dette, vil de fleste Unix-programmer, der bruger teksteditorer, bruge den editor, du har indstillet. Ved at følge ovenstående kommandoer, du indstiller kun standardeditoren til den aktuelle computersession. For at gøre disse ændringer permanente skal du placere de relevante kommandoer beskrevet ovenfor i din .login eller .cshrc filer (til csh- eller tcsh-brugere) eller din .profile -fil (hvis du bruger bash eller ksh).

Der er også en anden miljøvariabel, hvis du foregiver at bruge Emacs. Det “s ALTERNATE_EDITOR og har den samme effekt, men det bruges, når Emacs påkaldes med --alternate-editor mulighed.

Fra GNU Emacs Manual :

Indstillingen --alternate-editor=command er nyttigt, når du kører emacsclient i et script. Den specificerer en kommando, der skal køres, hvis emacsclient ikke kontakter Emacs. For eksempel vil følgende indstilling for EDITOR miljøvariablen altid give en editor, selvom Emacs ikke kører:

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

Kommentarer

  • At sige sh betyder ikke ‘ t giver mening. sh er normalt systemet ‘ s skal. Det plejede at være Thomson-skallen, så Bourne-skallen og derefter i dag på de fleste systemer, en eller anden skal implementere POSIX sh -specifikationen. export EDITOR=vim syntaksen er POSIX, men ikke Bourne eller Thomson. export VISUAL=$EDITOR fungerer i bash og nogle implementeringer af ksh. Du har brug for export VISUAL="$EDITOR" i de fleste andre skaller. VISUAL=$EDITOR export VISUAL fungerer i alle Bourne-lignende skaller inklusive Bourne-skallen.
  • Er det almindeligt og accepteret at indstille EDITOR til en sådan værdi med flere ord? I så fald kan jeg ikke trygt bruge which "$EDITOR" eller which $EDITOR til at kontrollere, om den er til stede.

Svar

Du bliver nødt til at specificere editor i miljøvariablen EDITOR. Tilføj følgende kommando i din .profile:

export EDITOR=editor 

Hvis du vil have vim som din standard editor, vil du i stedet tilføje

export EDITOR=vim

Personlig præference: Jeg bruger editorens absolutte stienavn i miljøvariablen. For eksempel

export EDITOR=/usr/bin/vim

Svar

editor -kommandoen er ubuntu-specifik. Det er ikke bærbart eller endda almindeligt (uden for ubuntu). Kommandoen er også indstillet i hele systemet og ikke pr. Bruger. Den måde, det fungerer på er, at /usr/bin/editor kun er et symlink til en editor på systemet. Som sådan er det det samme for alle brugere.

Miljøvariablen $EDITOR er ret standard. Det bruges af mange programmer, som har brug for brugeren til at redigere noget. Som sådan er det denne variabel, du skal bruge, når du vil påkalde brugerens editor.

Kommentarer

  • Det er ikke Ubuntu-specifikt, den kommer fra Debian og bruger Debian ‘ s alternativer mekanisme. Den ‘ er tilgængelig i alle Debian-derivater, ikke kun Ubuntu.

Svar

Dette bruger jeg i mit script:

# 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" 

Jeg har ikke pakket citater omkring det sidste opkald til $editor for at sikre, at det emacsclient-eksempel ovenfor fungerer.

Derfor synes jeg, det er vigtigt altid at indstille en værdi for editor, ellers den sidste linje kunne utilsigtet udføre $ filnavn . I mit tilfælde valgte jeg no_editor_found men du kunne lige brug pico eller ed der.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *