Mi a `editor` parancs a bash-ban?

Olyan parancsot kerestem, amely remélhetőleg megnyitja az aktuális felhasználó kedvenc szövegszerkesztőjét, mert néhány utasítást parancsokkal írok ki egy blogba. Olyan parancsra számítottam, mint a edit, és megtaláltam a editor parancsot. Számomra a terminálban indult el vim, ami közel áll ahhoz, Szerettem volna; a vim-gtk-t használom. Elkezdtem keresni a szerkesztő vim-gtk használatának módját, és ezt a kérdést találtam, amely magyarázatot ad egy $EDITOR környezeti változó, de nem vagyok biztos benne, hogy ez összefügg-e még a editor paranccsal. Megpróbáltam a man editor , de ez csak felhúzta a vim manpage-ot.

Hogyan érhetem el, hogy editor az általam választott szövegszerkesztőt használjam, vagy használjak más parancsot?

Válasz

Ez egy Debian-ism (ezért megjelenik az Ubuntuban, a Mint-ben stb.). linkhívás ed editor. A következőképpen vezetheti vissza:

$ 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 

Tehát láthatja, hogy a editor csak egy Unix-link a a futtatható vim.gnome.

A editor?

nem hiszem, hogy használnám d menj abba az irányba, hogy bármilyen értelmes módon beállítsd a editor t a felhasználók számára, tekintettel arra, hogy ezt nem én tartanám szabványosnak.

Ezenkívül beállíthatod a $EDITOR környezeti változó, amire bármit mutat, vim, gedit, emacs stb. De ezt a változót csak más eszközök garantálják, például sudo, git és subversion, amelyeket kifejezetten a $EDITOR változó használatához kötnek.

Megvalósítási ötletek

Csak beállítanék egy ön által választott álnevet, és vagy utasítanám a felhasználókat, hogy elérhetőek legyenek őket $HOME/.bashrc fájljukon keresztül X aliasként, vagy beállíthatják rendszerkonfigurációként az /etc/profile.d/our_aliases.sh fájlban, más néven X.

Vagy egyszerűen elmondhatja a felhasználóknak, hogy a rendszerek “biztosítják gedit, gvim, vim, emacs stb., és vágja át a cukorbevonatot, és tanítsa meg őket ezekről a dolgokról rögtön.

Vagy megadhat egy szöveget /etc/help.txt nevű fájl, amelyet egy help (alias help="less /etc/help.txt") parancs segítségével futtathatnak egy shellben amely megadná az alapvető parancsokat és a különböző feladatok végrehajtását. Ez a megközelítés lehetővé teszi a súgó testreszabását az idő múlásával új funkciókkal vagy tippekkel, és nemcsak a editor kényelmi parancsot nyújtja nekik.

Megjegyzések

  • Igen, a felhasználók tudni fogják, hogy hívják szerkesztőjüket, és csak azt mondom nekik, hogy egy kódfájl bemutatása helyett szerkesszenek egy adott fájlt. Nyilvántartásban voltam a kód példákkal, és nem tudtam, hogy ‘ nem vettem észre, hogy kicsit pedáns vagyok. ‘ nagyon rossz, hogy az Ubuntu nem ‘ nem állítja be a $EDITOR változót, most én ‘ nem támaszkodhat erre vagy a editor szimbólumra.
  • s/Ubuntu/Debian/g
  • szabványok , sóhajt …

Válasz

A szerkesztőprogram, amelyet néhány program hívott, amikor utasítást adott nekik, hogy szerkesszenek egy fájlt. Magának be kell állítania a környezeti változót.

Ha csh vagy tcsh fájlt használ, akkor a shell parancssorban:

setenv EDITOR vim 

Ha használja bash vagy ksh, majd írja be:

EDITOR=vim; export EDITOR 

(Cserélje le a “vim” szót a használni kívánt szerkesztőre.)

A EDITOR változó az, amelyre alapértelmezés szerint szüksége van néhány alkalmazás számára, hogy meghívja a szerkesztőt. Van egy másik VISUAL nevű változó, amelyet a képernyő-orientált szerkesztő megadására használnak. Általában ugyanarra az értékre szeretné beállítani, mint a EDITOR változót. Eredetileg a EDITOR -t ed-re (egy soros szerkesztő), a VISUAL -et pedig vi-re (egy alapú szerkesztő).

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

Ha ezt megtette, a legtöbb szövegszerkesztőt használó Unix program az Ön által beállított szerkesztőt használja. A fenti parancsok követésével csak az aktuális számítási munkamenethez állítja be az alapértelmezett szerkesztőt. Ahhoz, hogy ezek a változások véglegessé váljanak, el kell helyeznie a fent leírt megfelelő parancsokat a .login vagy .cshrc fájlok (csh vagy tcsh felhasználók számára) vagy .profile fájlja (ha bash vagy ksh fájlt használ).

Van egy másik környezeti változó is, ha úgy teszel, mintha Emacs-t használnál. Ez “s ALTERNATE_EDITOR, és ugyanaz a hatása, de akkor használja, ha az Emacs-t --alternate-editor opcióval hívják meg.

A GNU Emacs kézikönyvből :

Az opció Az --alternate-editor=command akkor hasznos, ha a emacsclient parancsfájlban fut. Megad egy futtatandó parancsot, ha emacsclient nem sikerül kapcsolatba lépnie az Emacs-szal. Például a EDITOR környezeti változó következő beállítása mindig szerkesztőt ad, még akkor is, ha az Emacs nem fut:

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

Megjegyzések

  • Mondom, hogy sh nem ‘ nincs értelme. sh általában a rendszer ‘ rendszerhéja. Ez korábban a Thomson-héj volt, majd a Bourne-héj, majd manapság a legtöbb rendszeren egyik vagy másik héj valósította meg a POSIX sh specifikációt. Az export EDITOR=vim szintaxis POSIX, de nem Bourne és Thomson. A export VISUAL=$EDITOR a bash és a ksh néhány megvalósításában működik. A legtöbb más héjban export VISUAL="$EDITOR" szükséges. A VISUAL=$EDITOR export VISUAL minden Bourne-szerű héjban működik, beleértve a Bourne-héjat is.
  • Gyakori és elfogadott-e a EDITOR ilyen többszavas értékre? Ha igen, akkor nem használhatom biztonságosan a which "$EDITOR" vagy a which $EDITOR felhasználást annak ellenőrzésére, hogy van-e.

Válasz

Meg kell adnia a editor -t a EDITOR. Adja hozzá a következő parancsot a .profile mezőbe:

export EDITOR=editor 

Ha azt szeretné, hogy vim mint alapértelmezett szerkesztő, helyette hozzáadod

export EDITOR=vim

Személyes beállítás: A szerkesztő abszolút elérési útjának nevét használom a környezeti változóban. Például

export EDITOR=/usr/bin/vim

Válasz

A A editor parancs az ubuntu-specifikus. Nem hordozható, sőt nem is gyakori (az ubuntun kívül). A parancs szintén rendszerszintű, és nem felhasználónként. Úgy működik, hogy az /usr/bin/editor csak egy szimbólum link a rendszer szerkesztőjéhez. Mint ilyen, minden felhasználónál azonos.

A $EDITOR környezeti változó meglehetősen szabványos. Sok olyan program használja, amelyeknek a felhasználónak szerkeszteniük kell valamit. Mint ilyen, ezt a változót kell használnia, amikor meg szeretné hívni a felhasználó szerkesztőjét.

Megjegyzések

  • Ez nem az Ubuntu specifikus, a Debianból származik, és a Debian ‘ s alternatívák mechanizmust használja. ‘ minden debian származékban elérhető, nemcsak az Ubuntu.

Válasz

Ezt használom a szkriptemben:

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

Nem tettem idézőjeleket a $editor címre küldött utolsó hívás köré annak biztosítására, hogy a fenti emacsclient példa működjön.

Emiatt fontosnak tartom, hogy mindig beállítson valamilyen értéket a editor számára, különben az utolsó sor akaratlanul is végrehajthatta $ fájlnév t. Esetemben a no_editor_found -t választottam, de ugyanúgy használja pico vagy ed ott.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük