Quest-ce que la commande `editor` dans bash?

Je cherchais une commande qui, espérons-le, ouvrirait léditeur de texte préféré de lutilisateur actuel, car jécris des instructions avec des commandes dans un blog. Je mattendais à une commande comme edit, et jai trouvé editor. Pour moi, cela a démarré vim dans le terminal, ce qui est proche de ce que Je voulais; jutilise vim-gtk. Jai commencé à chercher un moyen de faire en sorte que léditeur utilise vim-gtk et jai trouvé cette question qui explique une $EDITOR variable denvironnement, mais je ne sais pas si cela est même lié à la commande editor. Jai essayé man editor , mais cela vient de faire apparaître la page de manuel de vim.

Comment puis-je faire en sorte que editor utilise un éditeur de texte de mon choix, ou devrais-je utiliser une commande différente?

Réponse

Ceci est un Debian-ism (et apparaît donc dans Ubuntu, Mint, etc.). Ils sont installés un appel de lien ed editor. Vous pouvez le retracer comme suit:

$ 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 

Ainsi, vous pouvez voir que editor nest quun lien Unix vers lexécutable vim.gnome.

Utilisation de editor?

Je ne « crois pas » d aller dans cette direction en configurant editor de manière significative pour les utilisateurs, étant donné que ce n’est pas ce que je considère comme standard.

De plus, vous pouvez définir le $EDITOR variable denvironnement pour pointer vers tout ce que vous voulez, vim, gedit, emacs, etc. Mais cette variable nest garantie que pour être utilisée par dautres outils tels que sudo, git et subversion qui sont spécifiquement conçus pour être liés à lutilisation de la variable $EDITOR.

Idées de mise en œuvre

Je voudrais simplement configurer un alias de votre choix et soit indiquer aux utilisateurs quil est disponible pour les via leur fichier $HOME/.bashrc en tant qualias X, ou le configurer comme configuration système dans le fichier /etc/profile.d/our_aliases.sh, en tant qualias X.

Ou vous pouvez simplement dire aux utilisateurs que les systèmes « fournissent gedit, gvim, vim, emacs, etc. et découpez lenrobage de sucre et apprenez-leur ces choses dès le départ.

Ou vous pouvez fournir un texte fichier appelé /etc/help.txt quils pourraient exécuter via une commande help (alias help="less /etc/help.txt") dans un shell qui fournirait des commandes de base et comment effectuer diverses tâches. Cette approche vous permet de personnaliser laide au fil du temps avec de nouvelles fonctionnalités ou astuces et leur donne plus que la simple commande de commodité editor.

Commentaires

  • Oui, les utilisateurs sauront comment sappelle leur éditeur, et je leur dirai simplement déditer un fichier particulier au lieu de montrer un exemple de code. Jétais sur une lancée avec les exemples de code et je ne ‘ pas réalisé que je devenais un peu pédant. Il ‘ est dommage quUbuntu ne ‘ t fixe la variable $EDITOR, maintenant je ‘ t se fier à cela ou au lien symbolique editor.
  • s/Ubuntu/Debian/g
  • standards , soupir …

Réponse

Le programme dédition appelé par certains programmes lorsque vous leur dites déditer un fichier. Vous devez définir la variable denvironnement vous-même.

Si vous utilisez csh ou tcsh, à linvite du shell:

setenv EDITOR vim 

Si vous utilisez bash ou ksh, puis entrez:

EDITOR=vim; export EDITOR 

(Remplacez « vim » par léditeur que vous souhaitez utiliser.)

Le EDITOR est celle dont vous avez besoin par défaut pour que certaines applications invoquent léditeur. Il existe une autre variable appelée VISUAL utilisée pour spécifier léditeur orienté écran. En général, vous souhaiterez lui attribuer la même valeur que la variable EDITOR. À lorigine, EDITOR aurait été défini sur ed (un éditeur basé sur des lignes) et VISUAL aurait été défini sur vi (un écran- basé sur léditeur).

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

Lorsque vous avez fait cela, la plupart des programmes Unix utilisant des éditeurs de texte utiliseront léditeur que vous avez défini. En suivant les commandes ci-dessus, vous définirez léditeur par défaut pour la session de calcul en cours uniquement. Pour rendre ces modifications permanentes, vous devrez placer les commandes appropriées décrites ci-dessus dans votre .login ou .cshrc (pour les utilisateurs csh ou tcsh) ou votre fichier .profile (si vous utilisez bash ou ksh).

Il existe également une autre variable denvironnement, si vous faites semblant dutiliser Emacs. Il « s ALTERNATE_EDITOR, et a le même effet, mais il est utilisé lorsque Emacs est invoqué avec loption --alternate-editor.

Du Manuel GNU Emacs :

Loption --alternate-editor=command est utile lors de lexécution de emacsclient dans un script. Il spécifie une commande à exécuter si emacsclient ne parvient pas à contacter Emacs. Par exemple, le paramètre suivant pour la variable denvironnement EDITOR donnera toujours un éditeur, même si Emacs nest pas en cours dexécution:

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

Commentaires

  • Dire sh doesn ‘ t a du sens. sh est généralement le shell du système ‘. Cétait le shell Thomson, puis le shell Bourne et de nos jours sur la plupart des systèmes, un shell ou un autre implémentant la spécification POSIX sh. La syntaxe export EDITOR=vim est POSIX, mais pas Bourne ni Thomson. export VISUAL=$EDITOR fonctionne dans bash et certaines implémentations de ksh. Vous avez besoin de export VISUAL="$EDITOR" dans la plupart des autres shells. VISUAL=$EDITOR export VISUAL fonctionnera dans tous les shells de type Bourne, y compris le shell Bourne.
  • Est-il courant et accepté de définir EDITOR à une valeur multi-mots comme ça? Si tel est le cas, je ne peux pas utiliser en toute sécurité which "$EDITOR" ou which $EDITOR pour vérifier sil est présent.

Réponse

Vous devrez spécifier le editor dans la variable denvironnement EDITOR. Ajoutez la commande suivante dans votre .profile:

export EDITOR=editor 

Si vous voulez vim comme éditeur par défaut, vous lajouterez à la place

export EDITOR=vim

Préférence personnelle: jutilise le nom de chemin absolu de léditeur dans la variable denvironnement. Par exemple,

export EDITOR=/usr/bin/vim

Answer

Le La commande editor est spécifique à ubuntu. Ce nest pas portable ni même courant (en dehors dubuntu). La commande est également définie à léchelle du système et non par utilisateur. La façon dont cela fonctionne est que /usr/bin/editor est juste un lien symbolique vers un éditeur sur le système. En tant que tel, il en est de même pour tous les utilisateurs.

La variable denvironnement $EDITOR est assez standard. Il est utilisé par de nombreux programmes qui demandent à lutilisateur de modifier quelque chose. En tant que telle, cest cette variable que vous devez utiliser lorsque vous souhaitez appeler léditeur de lutilisateur.

Commentaires

  • Ce nest pas spécifique à Ubuntu il vient de Debian et utilise le mécanisme de ‘ s alternatives . Il ‘ est disponible dans tous les dérivés Debian, pas seulement Ubuntu.

Réponse

Voici ce que jutilise dans mon 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" 

Je nai pas mis de guillemets autour de lappel final à $editor pour massurer que lexemple emacsclient ci-dessus fonctionnera.

Pour cette raison, je pense quil est important de toujours définir une valeur pour editor, sinon la dernière ligne pourrait exécuter involontairement $ filename . Dans mon cas, jai choisi no_editor_found mais vous pouvez également utilisez pico ou ed ici.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *