Hva er `editor`-kommandoen i bash?

Jeg lette etter en kommando som forhåpentligvis åpner den nåværende brukerens favoritttekstredigerer, fordi jeg skriver ut noen instruksjoner med kommandoer i en blogg. Jeg ventet en kommando som edit, og jeg fant editor. For meg startet det vim i terminalen, som er nær det Jeg ville; jeg bruker vim-gtk. Jeg begynte å søke etter en måte å få redaktøren til å bruke vim-gtk og fant dette spørsmålet som forklarer et $EDITOR miljøvariabel, men jeg er ikke sikker på om det til og med er relatert til editor -kommandoen. Jeg prøvde man editor , men det trakk bare opp vim-siden.

Hvordan kan jeg få editor til å bruke en tekstredigerer etter eget valg, eller skal jeg bruke en annen kommando?

Svar

Dette er en Debian-isme (og vises derfor i Ubuntu, Mint osv.). De har satt opp en koblingsanrop ed editor. Du kan spore den tilbake på følgende måte:

$ 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 en Unix-lenke til den kjørbare vim.gnome.

Ved hjelp av editor?

Jeg tror ikke jeg » d gå i den retningen for å sette opp editor på en hvilken som helst meningsfull måte for brukerne, gitt at det ikke er det jeg anser som standard.

I tillegg kan du stille inn $EDITOR miljøvariabel for å peke på alt du vil, vim, gedit, emacs osv. Men denne variabelen blir bare garantert brukt av andre verktøy som sudo, git og subversion som er spesielt designet for å være knyttet til variabelen $EDITOR.

Implementeringsideer

Jeg vil bare sette opp et alias etter eget valg og enten instruere brukerne om at det er tilgjengelig for dem via $HOME/.bashrc -filen som alias X, eller sett den opp som en systemkonfigurasjon i filen /etc/profile.d/our_aliases.sh, som alias X.

Eller du kan bare fortelle brukerne at systemene «gir gedit, gvim, vim, emacs osv. og skjær gjennom sukkerbelegget og lær dem om disse tingene rett utenfor flaggermusen.

Eller du kan gi en tekst fil kalt /etc/help.txt som de kunne kjøre via en kommando help (alias help="less /etc/help.txt") i et skall som vil gi grunnleggende kommandoer og hvordan du skal utføre forskjellige oppgaver. Denne tilnærmingen lar deg tilpasse hjelpen etter hvert med nye funksjoner eller tips, og den gir dem mer enn bare editor bekvemmelighetskommando.

Kommentarer

  • Ja, brukerne vil vite hva redaktøren deres heter, og jeg vil bare be dem redigere en bestemt fil i stedet for å vise et kodeeksempel. Jeg var på rulle med kodeeksemplene, og jeg skjønte ikke ‘ at jeg ble litt pedantisk. Det ‘ er så ille at Ubuntu ikke ‘ t angir $EDITOR variabelen, nå kan ‘ ikke stole på det eller editor symlinket.
  • s/Ubuntu/Debian/g
  • standarder , sukk …

Svar

Redigeringsprogrammet som noen programmer kaller når du ber dem redigere en fil. Du må stille inn miljøvariabelen selv.

Hvis du bruker csh eller tcsh, ved shell-ledeteksten:

setenv EDITOR vim 

Hvis du bruker bash eller ksh, skriv deretter inn:

EDITOR=vim; export EDITOR 

(Erstatt «vim» med redigeringsprogrammet du vil bruke.)

EDITOR -variabelen er den du trenger som standard for noen applikasjoner for å påkalle redaktøren. Det er en annen variabel kalt VISUAL som brukes til å spesifisere skjermorientert editor. Vanligvis vil du sette den til samme verdi som EDITOR -variabelen. Opprinnelig ville EDITOR være satt til ed (en linjebasert editor) og VISUAL ville blitt satt til vi (en skjerm- basert editor).

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

Når du har gjort dette, bruker de fleste Unix-programmer som bruker tekstredigeringsprogrammer redigeringsprogrammet du har angitt. Ved å følge kommandoene ovenfor, du vil bare angi standardredigeringsprogrammet for den aktuelle databehandlingen. For å gjøre disse endringene permanente, må du plassere de aktuelle kommandoene beskrevet ovenfor i .login eller .cshrc filer (for brukere av csh eller tcsh) eller .profile -filen (hvis du bruker bash eller ksh).

Det er også en annen miljøvariabel hvis du later til å bruke Emacs. Den «s ALTERNATE_EDITOR, og har samme effekt, men den brukes når Emacs påkalles med --alternate-editor -alternativet.

Fra GNU Emacs Manual :

Alternativet --alternate-editor=command er nyttig når du kjører emacsclient i et skript. Den spesifiserer en kommando som skal kjøres hvis emacsclient ikke klarer å kontakte Emacs. For eksempel vil følgende innstilling for EDITOR miljøvariabelen alltid gi en redaktør, selv om Emacs ikke kjører:

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

Kommentarer

  • Å si sh betyr ikke ‘ t gir mening. sh er vanligvis systemet ‘ s skall. Det pleide å være Thomson-skallet, så Bourne-skallet, og i dag på de fleste systemer, et eller annet skall som implementerte POSIX sh -spesifikasjonen. export EDITOR=vim syntaksen er POSIX, men ikke Bourne eller Thomson. export VISUAL=$EDITOR fungerer i bash og noen implementeringer av ksh. Du trenger export VISUAL="$EDITOR" i de fleste andre skall. VISUAL=$EDITOR export VISUAL fungerer i alle Bourne-lignende skall, inkludert Bourne-skallet.
  • Er det vanlig og akseptert å sette EDITOR til en slik ordverdi? I så fall kan jeg ikke trygt bruke which "$EDITOR" eller which $EDITOR for å sjekke om den er tilstede.

Svar

Du må spesifisere editor i miljøvariabelen EDITOR. Legg til følgende kommando i .profile:

export EDITOR=editor 

Hvis du vil ha vim som standardredigerer, vil du legge til i stedet

export EDITOR=vim

Personlig preferanse: Jeg bruker redaktørens absolutte stienavn i miljøvariabelen. For eksempel

export EDITOR=/usr/bin/vim

Svar

editor -kommandoen er ubuntu-spesifikk. Det er ikke bærbart eller til og med vanlig (utenfor ubuntu). Kommandoen er også satt hele systemet, og ikke per bruker. Måten det fungerer på er at /usr/bin/editor bare er en symlink til en redaktør på systemet. Som sådan er det det samme for alle brukere.

Miljøvariabelen $EDITOR er ganske standard. Den brukes av mange programmer som trenger brukeren til å redigere noe. Som sådan er det denne variabelen du bør bruke når du vil påkalle brukerens redaktør.

Kommentarer

  • Den er ikke Ubuntu-spesifikk, den kommer fra Debian og bruker Debian ‘ s alternativer mekanisme. Den ‘ er tilgjengelig i alle Debian-derivater, ikke bare Ubuntu.

Svar

Dette er hva jeg bruker i skriptet mitt:

# 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 anførselstegn rundt den siste samtalen til $editor for å sikre at emacsclient-eksemplet ovenfor fungerer.

Derfor tror jeg det er viktig å alltid sette noen verdi for editor, ellers den siste linjen kunne utilsiktet utføre $ filnavn . I mitt tilfelle valgte jeg no_editor_found men du kunne like bruk pico eller ed der.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *