Co to jest polecenie `edytor` w bash?

Szukałem polecenia, które, mam nadzieję, otworzy ulubiony edytor tekstu bieżącego użytkownika, ponieważ piszę kilka instrukcji z poleceniami na blogu. Spodziewałem się polecenia takiego jak edit i znalazłem editor. Dla mnie uruchomił Vima w terminalu, co jest bliskie Chciałem; używam vim-gtk. Zacząłem szukać sposobu, aby edytor używał vim-gtk i znalazłem to pytanie, które wyjaśnia $EDITOR zmienną środowiskową, ale nie jestem pewien, czy jest to w ogóle związane z poleceniem editor. Próbowałem man editor , ale to właśnie spowodowało wyświetlenie strony podręcznika vima.

Jak mogę sprawić, by editor używał wybranego przeze mnie edytora tekstu, czy powinienem używać innego polecenia?

Odpowiedź

To jest Debian-ism (i dlatego pojawia się w Ubuntu, Mint itp.). wywołanie łącza ed editor. Możesz to prześledzić w następujący sposób:

$ 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 

Więc możesz zobaczyć, że editor to tylko uniksowe łącze do plik wykonywalny vim.gnome.

Używanie editor?

Nie sądzę, żebym to zrobił idź w tym kierunku, aby skonfigurować editor w jakikolwiek znaczący dla użytkowników sposób, biorąc pod uwagę, że nie jest to coś, co uważam za standard.

Dodatkowo możesz ustawić $EDITOR zmienna środowiskowa wskazująca na cokolwiek chcesz, vim, gedit, emacs itd. Jednak ta zmienna jest używana tylko przez inne narzędzia, takie jak sudo, git i subversion, które są specjalnie zaprojektowane do powiązania ze zmienną $EDITOR.

Pomysły na implementację

Po prostu skonfigurowałbym alias według własnego wyboru i albo poinstruował użytkowników, że jest on dostępny je za pomocą pliku $HOME/.bashrc jako alias X lub skonfiguruj go jako konfigurację systemu w pliku /etc/profile.d/our_aliases.sh, jako alias X.

Lub możesz po prostu powiedzieć użytkownikom, że systemy „zapewniają gedit, gvim, vim, emacs itp. i przeciąć powłokę cukrową i od razu nauczyć ich o tych rzeczach.

Lub możesz podać tekst plik o nazwie /etc/help.txt, który można uruchomić za pomocą polecenia help (alias help="less /etc/help.txt") w powłoce które zawierałyby podstawowe polecenia i sposoby wykonywania różnych zadań. Takie podejście umożliwia dostosowywanie pomocy w miarę upływu czasu dzięki nowym funkcjom lub wskazówkom i daje im więcej niż tylko wygodne polecenie editor.

Komentarze

  • Tak, użytkownicy będą wiedzieć, jak nazywa się ich edytor, a ja po prostu powiem im, aby edytować określony plik zamiast pokazywać przykładowy kod. Byłem na fali z przykładami kodu i nie ' nie zdawałem sobie sprawy, że robię się trochę pedantyczny. ' szkoda, że Ubuntu nie ' nie ustawił zmiennej $EDITOR, teraz ja nie może ' polegać na tym ani na editor linku symbolicznym.
  • s/Ubuntu/Debian/g
  • standardy , westchnij …

Odpowiedź

Edytor wywoływany przez niektóre programy, gdy każesz im edytować plik. Musisz samodzielnie ustawić zmienną środowiskową.

Jeśli używasz csh lub tcsh, po znaku zachęty powłoki:

setenv EDITOR vim 

Jeśli używasz bash lub ksh, a następnie wpisz:

EDITOR=vim; export EDITOR 

(Zastąp „vim” edytorem, którego chcesz użyć).

EDITOR jest tą, której domyślnie potrzebujesz, aby niektóre aplikacje wywoływały edytor. Istnieje inna zmienna o nazwie VISUAL, używana do określenia edytora ekranowego. Zwykle będziesz chciał ustawić tę samą wartość, co zmienna EDITOR. Pierwotnie EDITOR miałoby być ustawione na ed (edytor liniowy), a VISUAL zostałoby ustawione na vi (ekran- oparty na edytorze).

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

Po wykonaniu tej czynności większość programów uniksowych, które używają edytorów tekstu, będzie używać ustawionego edytora. Wykonując powyższe polecenia ustawisz domyślny edytor tylko dla bieżącej sesji obliczeniowej. Aby te zmiany były trwałe, musisz umieścić odpowiednie polecenia opisane powyżej w swoim .login lub .cshrc (dla użytkowników csh lub tcsh) lub plik .profile (jeśli używasz bash lub ksh).

Jest też inna zmienna środowiskowa, jeśli udajesz, że używasz Emacsa. Jest ALTERNATE_EDITOR i ma ten sam efekt, ale jest używany, gdy wywoływany jest Emacs z opcją --alternate-editor.

Z Podręcznika GNU Emacsa :

Opcja --alternate-editor=command jest przydatne podczas uruchamiania emacsclient w skrypcie. Określa polecenie do wykonania, jeśli emacsclient nie skontaktuje się z Emacsem. Na przykład następujące ustawienie dla zmiennej środowiskowej EDITOR zawsze daje edytorowi, nawet jeśli Emacs nie jest uruchomiony:

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

Komentarze

  • Powiedzenie sh nie ' t ma sens. sh jest zwykle powłoką systemu '. Kiedyś była to powłoka Thomson, potem powłoka Bournea, a obecnie w większości systemów taka czy inna powłoka implementująca specyfikację POSIX sh. Składnia export EDITOR=vim jest zgodna z POSIX, ale nie Bourne ani Thomson. export VISUAL=$EDITOR działa w bash i niektórych implementacjach ksh. W większości innych powłok potrzebujesz export VISUAL="$EDITOR". VISUAL=$EDITOR export VISUAL będzie działać we wszystkich powłokach typu Bourne, w tym w powłoce Bournea.
  • Czy często i akceptowane jest ustawienie EDITOR do wartości składającej się z wielu słów? Jeśli tak, nie mogę bezpiecznie użyć which "$EDITOR" lub which $EDITOR, aby sprawdzić, czy jest obecny.

Odpowiedź

Będziesz musiał określić editor w zmiennej środowiskowej EDITOR. Dodaj następujące polecenie do swojego .profile:

export EDITOR=editor 

Jeśli chcesz vim jako domyślny edytor dodasz zamiast tego

export EDITOR=vim

Osobiste preferencje: używam bezwzględnej nazwy ścieżki edytora w zmiennej środowiskowej. Na przykład

export EDITOR=/usr/bin/vim

Answer

Polecenie editor jest specyficzne dla systemu Ubuntu. Nie jest przenośny ani nawet powszechny (poza Ubuntu). Polecenie jest również ustawiane dla całego systemu, a nie dla poszczególnych użytkowników. Działa to tak, że /usr/bin/editor jest po prostu dowiązaniem symbolicznym do edytora w systemie. Jako taka jest taka sama dla wszystkich użytkowników.

Zmienna środowiskowa $EDITOR jest dość standardowa. Jest używany przez wiele programów, które wymagają od użytkownika edycji. W związku z tym jest to ta zmienna, której należy używać, gdy chcesz wywołać edytor użytkownika.

Komentarze

  • Nie jest specyficzna dla Ubuntu, pochodzi z Debiana i wykorzystuje mechanizm alternatyw Debiana '. ' jest dostępny we wszystkich pochodnych Debiana, nie tylko Ubuntu.

Odpowiedź

Oto, czego używam w moim skrypcie:

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

Ostateczne wywołanie $editor nie otoczyłem cudzysłowami, aby upewnić się, że powyższy przykład emacsclient zadziała.

Dlatego uważam, że ważne jest, aby zawsze ustawić jakąś wartość dla editor, w przeciwnym razie ostatnia linia może przypadkowo wykonać $ filename . W moim przypadku wybrałem no_editor_found, ale równie dobrze możesz użyj pico lub ed tam.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *