¿Qué es el comando `editor` en bash?

Estaba buscando un comando que, con suerte, abriría el editor de texto favorito del usuario actual, porque estoy escribiendo algunas instrucciones con comandos en un blog. Esperaba un comando como edit y encontré editor. Para mí, inició vim en la terminal, que está cerca de lo que Quería; uso vim-gtk. Comencé a buscar una manera de hacer que el editor usara vim-gtk y encontré esta pregunta que explica una $EDITOR variable de entorno, pero no estoy seguro si eso está relacionado con el comando editor. Probé man editor , pero eso acaba de abrir la página de manual de vim.

¿Cómo puedo hacer que editor use un editor de texto de mi elección, o debería usar un comando diferente?

Respuesta

Este es un Debian-ismo (y por lo tanto aparece en Ubuntu, Mint, etc.). Han configurado una llamada de enlace ed editor. Puede rastrearlo de la siguiente manera:

$ 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 

Entonces puede ver que editor es solo un enlace Unix a el ejecutable vim.gnome.

¿Usa editor?

No «creo que yo» Iré en esa dirección de configurar editor de una manera significativa para los usuarios, dado que no es lo que yo consideraría estándar.

Además, puede configurar el $EDITOR variable de entorno para apuntar a cualquier cosa que desee, vim, gedit, emacs, etc. Pero esta variable solo está garantizada para ser utilizada por otras herramientas como sudo, git y subversion que están específicamente diseñadas para vincularse al uso de la variable $EDITOR.

Ideas de implementación

Simplemente configuraría un alias de su propia elección e indicaría a los usuarios que está disponible para ellos a través de su archivo $HOME/.bashrc como alias X, o configúrelo como una configuración del sistema en el archivo /etc/profile.d/our_aliases.sh, como alias X.

O simplemente podría decirles a los usuarios que los sistemas «proporcionan gedit, gvim, vim, emacs, etc. y elimine la capa de azúcar y enséñeles sobre estas cosas desde el principio.

O podría proporcionar un texto archivo llamado /etc/help.txt que podrían ejecutar mediante un comando help (alias help="less /etc/help.txt") en un shell que proporcionaría comandos básicos y cómo realizar varias tareas. Este enfoque le permite personalizar la ayuda a medida que pasa el tiempo con nuevas funciones o consejos y les brinda más que solo el editor comando de conveniencia.

Comentarios

  • Ya, los usuarios sabrán cómo se llama su editor, y yo les diré que editen un archivo en particular en lugar de mostrar un ejemplo de código. Estaba en una buena racha con los ejemplos de código y no ‘ no me di cuenta de que me estaba volviendo un poco pedante. Es ‘ una lástima que Ubuntu no ‘ t establezca la $EDITOR variable, ahora ¿Puede ‘ t confiar en eso o en el editor enlace simbólico.
  • s/Ubuntu/Debian/g
  • estándares , suspiro …

Responder

El programa editor llamado por algunos programas cuando les dice que editen un archivo. Debe configurar la variable de entorno usted mismo.

Si usa csh o tcsh, en el indicador de shell:

setenv EDITOR vim 

Si usa bash o ksh, luego ingrese:

EDITOR=vim; export EDITOR 

(Reemplace «vim» con el editor que desea usar).

El EDITOR variable es la que necesita por defecto para que algunas aplicaciones invoquen el editor. Hay otra variable llamada VISUAL que se usa para especificar el editor orientado a pantalla. Por lo general, querrá establecerlo en el mismo valor que la variable EDITOR. Originalmente EDITOR se habría configurado en ed (un editor basado en líneas) y VISUAL se habría «configurado en vi (una pantalla- editor basado en).

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

Cuando haya hecho esto, la mayoría de los programas Unix que usan editores de texto usarán el editor que ha configurado. Siguiendo los comandos anteriores, establecerá el editor predeterminado solo para la sesión informática actual. Para que estos cambios sean permanentes, deberá colocar los comandos apropiados descritos anteriormente en su .login o .cshrc archivos (para usuarios de csh o tcsh) o su archivo .profile (si usa bash o ksh).

También hay otra variable de entorno, si pretende utilizar Emacs. Es ALTERNATE_EDITOR y tiene el mismo efecto, pero se usa cuando se invoca a Emacs con la opción --alternate-editor.

Del Manual de GNU Emacs :

La opción --alternate-editor=command es útil cuando se ejecuta emacsclient en un script. Especifica un comando para ejecutar si emacsclient no se comunica con Emacs. Por ejemplo, la siguiente configuración para la variable de entorno EDITOR siempre proporcionará un editor, incluso si Emacs no se está ejecutando:

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

Comentarios

  • Decir sh doesn ‘ no tiene sentido. sh suele ser el shell ‘ del sistema. Solía ser el shell de Thomson, luego el shell de Bourne y, en la actualidad, en la mayoría de los sistemas, un shell u otro implementaba la especificación POSIX sh. La sintaxis export EDITOR=vim es POSIX, pero no Bourne ni Thomson. El export VISUAL=$EDITOR funciona en bash y algunas implementaciones de ksh. Necesita export VISUAL="$EDITOR" en la mayoría de los demás shells. VISUAL=$EDITOR export VISUAL funcionará en todos los shells similares a Bourne, incluido el shell Bourne.
  • ¿Es común y aceptado establecer EDITOR a un valor de varias palabras como ese? Si es así, no puedo usar which "$EDITOR" o which $EDITOR de forma segura para verificar si está presente.

Respuesta

Deberá especificar el editor en la variable de entorno EDITOR. Agregue el siguiente comando en su .profile:

export EDITOR=editor 

Si desea vim como editor predeterminado, agregará en su lugar

export EDITOR=vim

Preferencia personal: uso la ruta absoluta del editor en la variable de entorno. Por ejemplo,

export EDITOR=/usr/bin/vim

Responder

El El comando editor es específico de ubuntu. No es portátil ni siquiera común (fuera de ubuntu). El comando también se establece en todo el sistema y no por usuario. La forma en que funciona es que /usr/bin/editor es solo un enlace simbólico a un editor en el sistema. Como tal, es la misma para todos los usuarios.

La variable de entorno $EDITOR es bastante estándar. Es utilizado por muchos programas que necesitan que el usuario edite algo. Como tal, es esta variable la que debe utilizar cuando desee invocar el editor del usuario.

Comentarios

  • No es específico de Ubuntu, viene de Debian y usa el mecanismo de alternativas de Debian ‘ s. Está ‘ s disponible en todos los derivados de Debian, no solo Ubuntu.

Respuesta

Esto es lo que estoy usando en mi 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" 

No he envuelto entre comillas la llamada final a $editor para asegurarme de que el ejemplo anterior de emacsclient funcionará.

Por eso, creo que es importante establecer siempre algún valor para editor; de lo contrario, la última línea podría ejecutar involuntariamente $ filename . En mi caso, elegí no_editor_found pero podrías igualmente use pico o ed allí.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *