“Alias” es para Alt-F2

3

No arquivo .bashrc, pode-se adicionar

alias geditm = 'gedit --display=D1'

Por exemplo, e então eu posso rodar "geditm" e ter o gedit aberto no display D1. Estou curioso para saber se existe uma maneira de fornecer um tipo similar de alias para executar comandos a partir do menu Alt-F2, para que eu possa Alt + F2 , geditm e ter o mesmo resultado. (Disclaimer-- Estou interessado em fazer isso geralmente, não para gedit).

    
por Jonathan Gallagher 13.04.2014 / 04:53

2 respostas

6

Não é verdade, não. Não tenho certeza sobre os detalhes, mas imagino que o Alt + F2 esteja simplesmente passando os comandos que você executa para um shell não-interativo, não-login. Esse tipo de shell não terá acesso a aliases, conforme explicado em man bash :

   When bash is started non-interactively, to  run  a  shell  script,  for
   example, it looks for the variable BASH_ENV in the environment, expands
   its value if it appears there, and uses the expanded value as the  name
   of  a  file to read and execute.  Bash behaves as if the following com‐
   mand were executed:
          if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
   but the value of the PATH variable is not used to search for  the  file
   name.

Assim, você pode pensar que pode definir apenas BASH_ENV para apontar para um arquivo contendo definições de alias. Infelizmente, os aliases não estão disponíveis para shells não interativos. Novamente a partir de man bash :

   Aliases are not expanded when the shell is not interactive, unless  the
   expand_aliases  shell option is set using shopt (see the description of
   shopt under SHELL BUILTIN COMMANDS below).

Você pode pensar que poderia adicionar shopt -s expand_aliases ao arquivo definido por $BASH_ENV , mas isso não funcionará porque esse arquivo será lido, mas em um shell diferente.

Eu sei que isso é confuso. Bottom line, você não pode fazer aliases disponíveis para o diálogo Alt + F2 .

Uma solução alternativa

Então, como você não pode fazer isso com aliases, o que você pode fazer é fazer isso com scripts:

sudo gedit /usr/bin/geditm

Isso abrirá uma nova janela gedit , adicionará essas linhas a ele e salvará o arquivo:

#!/bin/bash
gedit --display=D1

Torne o script executável:

sudo chmod a+x /usr/bin/geditm

Agora, você pode pressionar Alt + F2 , escrever geditm e o script será iniciado, o que por sua vez inicia gedit com as opções desejadas.

    
por terdon 13.04.2014 / 17:18
1

Nota: depois de reler sua pergunta e pensar sobre ela por mais tempo, acho que a resposta de Terdon provavelmente é a que você quer, não essa; este é muito genérico e exige mais digitação.

Se bem entendi, parece que você pode querer acrescentar --display=D1 a qualquer programa executado a partir de Alt-F2; isso está correto? Depois de alguma discussão, provavelmente não, então não deixe de ver "EDIT2" junto com isso para um take diferente.

Se sim, parece que você poderia criar um script simples que viveria em alguma pasta em seu caminho, como ~/bin , que simplesmente diria

#!/bin/bash
 --display=D1

Se você nomear o script "display", então a partir de Alt-F2 você pode executar display gedit , e ele deve acrescentar "--display = D1".

EDIT: Eu acho que você vai precisar para torná-lo executável, usando chmod +x display

Eu não posso testar isso facilmente, mas deve funcionar (supondo que isso é o que você quer fazer.

EDIT2: Parece que não entendi totalmente sua pergunta, mas acho que você ainda pode usar um método semelhante. Em vez de especificar o sinalizador, você pode usar substituições para o comando e os sinalizadores. Eu acho que você poderia simplesmente dizer

$*

em vez de

 --display=D1

Em seguida, o comando Alt-F2 seria "display xxxx yyyy ..."

    
por Marty Fried 13.04.2014 / 18:18