O que é o comando `editor` no bash?

Eu estava procurando um comando que abra o editor de texto favorito do usuário atual, porque estou escrevendo algumas instruções com comandos em um blog. Eu estava esperando um comando como edit e encontrei editor. Para mim, ele iniciou o vim no terminal, que é quase o que Eu queria; eu uso vim-gtk. Comecei a pesquisar uma maneira de fazer o editor usar vim-gtk e encontrei esta pergunta que explica uma $EDITOR variável de ambiente, mas não tenho certeza se isso está relacionado ao comando editor. Tentei man editor , mas isso apenas abriu a página de manual do vim.

Como posso fazer editor usar um editor de texto de minha escolha ou devo usar um comando diferente?

Resposta

Este é um Debian-ismo (e, portanto, aparece no Ubuntu, Mint, etc.). Eles “foram configurados uma ligação de link ed editor. Você pode rastreá-lo da seguinte maneira:

$ 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 

Assim, você pode ver que editor é apenas um link Unix para o executável vim.gnome.

Usando editor?

Eu não acho que ” d ir na direção de configurar editor de qualquer maneira significativa para os usuários, visto que não é o que eu consideraria padrão.

Além disso, você pode definir o $EDITOR variável de ambiente para apontar para o que você quiser, vim, gedit, emacs, etc. Mas essa variável só tem garantia de uso por outras ferramentas, como sudo, git e subversion que são especificamente projetados para serem vinculados ao uso da variável $EDITOR.

Ideias de implementação

Eu meramente configuraria um alias de sua escolha e instruiria os usuários que ele está disponível para eles por meio de seu $HOME/.bashrc arquivo como alias X ou configurá-lo como uma configuração do sistema no arquivo /etc/profile.d/our_aliases.sh, como alias X.

Ou você pode apenas dizer aos usuários que os sistemas “fornecem gedit, gvim, vim, emacs, etc. e corte a cobertura de açúcar e ensine-os sobre essas coisas imediatamente.

Ou você pode fornecer um texto arquivo chamado /etc/help.txt que eles podem executar por meio de um comando help (alias help="less /etc/help.txt") em um shell que forneceria comandos básicos e como executar várias tarefas. Essa abordagem permite que você personalize a ajuda com o passar do tempo com novos recursos ou dicas e oferece a eles mais do que apenas o editor comando de conveniência.

Comentários

  • Sim, os usuários saberão como se chama seu editor e eu apenas lhes direi para editar um arquivo específico em vez de mostrar um exemplo de código. Eu estava indo bem com os exemplos de código e não ‘ não percebi que estava ficando um pouco pedante. É ‘ uma pena que o Ubuntu não ‘ t defina a variável $EDITOR, agora eu não pode ‘ confiar nisso ou no editor link simbólico.
  • s/Ubuntu/Debian/g
  • padrões , suspiro …

Resposta

O programa editor chamado por alguns programas quando você lhes diz para editar um arquivo. Você deve definir a variável de ambiente sozinho.

Se você usar csh ou tcsh, no prompt do shell:

setenv EDITOR vim 

Se você usar bash ou ksh e, em seguida, digite:

EDITOR=vim; export EDITOR 

(Substitua “vim” pelo editor que deseja usar.)

O EDITOR variável é a que você precisa por padrão para alguns aplicativos para chamar o editor. Existe outra variável chamada VISUAL usada para especificar o editor orientado para a tela. Geralmente, você desejará defini-lo com o mesmo valor da variável EDITOR. Originalmente, EDITOR seria definido como ed (um editor baseado em linha) e VISUAL seria “definido como vi (uma tela editor baseado).

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

Quando você tiver feito isso, a maioria dos programas Unix que usam editores de texto usarão o editor que você configurou. Seguindo os comandos acima, você definirá o editor padrão apenas para a sessão de computação atual. Para tornar essas alterações permanentes, você precisará colocar os comandos apropriados descritos acima em .login ou .cshrc arquivos (para usuários csh ou tcsh) ou seu arquivo .profile (se você usar bash ou ksh).

Há também outra variável de ambiente, se você pretende usar Emacs. É “s ALTERNATE_EDITOR e tem o mesmo efeito, mas” é usado quando o Emacs é invocado com a opção --alternate-editor.

Do Manual GNU Emacs :

A opção --alternate-editor=command é útil ao executar emacsclient em um script. Ele especifica um comando a ser executado se emacsclient falhar em contatar o Emacs. Por exemplo, a seguinte configuração para a variável de ambiente EDITOR sempre fornecerá um editor, mesmo se o Emacs não estiver em execução:

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

Comentários

  • Dizer sh doesn ‘ não faz sentido. sh é geralmente o shell do sistema ‘. Costumava ser o shell Thomson, depois o shell Bourne e hoje em dia na maioria dos sistemas, um shell ou outro implementando a especificação POSIX sh. A sintaxe export EDITOR=vim é POSIX, mas não é Bourne nem Thomson. O export VISUAL=$EDITOR funciona em bash e algumas implementações de ksh. Você precisa de export VISUAL="$EDITOR" na maioria dos outros shells. VISUAL=$EDITOR export VISUAL funcionará em todos os shells tipo Bourne, incluindo o shell Bourne.
  • É comum e aceito definir EDITOR para um valor de várias palavras como esse? Nesse caso, não posso usar com segurança which "$EDITOR" ou which $EDITOR para verificar se ele está presente.

Resposta

Você terá que especificar editor na variável de ambiente EDITOR. Adicione o seguinte comando em seu .profile:

export EDITOR=editor 

Se desejar vim como seu editor padrão, você adicionará em seu lugar

export EDITOR=vim

Preferência pessoal: eu uso o nome do caminho absoluto do editor na variável de ambiente. Por exemplo,

export EDITOR=/usr/bin/vim

Resposta

O O comando editor é específico do ubuntu. Não é portátil ou mesmo comum (fora do Ubuntu). O comando também é definido em todo o sistema e não por usuário. A forma como funciona é que /usr/bin/editor é apenas um link simbólico para um editor no sistema. Como tal, é o mesmo para todos os usuários.

A variável de ambiente $EDITOR é razoavelmente padrão. É usado por muitos programas que precisam que o usuário edite algo. Como tal, é esta variável que você deve usar quando quiser invocar o editor do usuário.

Comentários

  • Não é específico do Ubuntu, ele vem do Debian e usa o mecanismo ‘ s alternativas do Debian. Ele ‘ está disponível em todos os derivados do Debian, não apenas Ubuntu.

Resposta

Isto é o que estou usando em meu 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" 

Não envolvi aspas na chamada final para $editor para garantir que o exemplo emacsclient acima funcionará.

Por causa disso, acho importante sempre definir algum valor para editor, caso contrário, a última linha poderia executar involuntariamente $ filename . No meu caso, escolhi no_editor_found, mas você também poderia use pico ou ed lá.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *