Используйте псевдонимы в диалоговом окне Alt-F2

В .bashrc файл, можно добавить псевдоним для команды, сказать

alias geditm = 'gedit --display=D1'

Теперь я могу работать geditm в терминале и имеют gedit, открытый в дисплее D1. Мне любопытно, если существует способ определить псевдоним для выполнения команд из меню Alt-F2, так, чтобы я мог Alt+F2, ввести geditm и имейте тот же результат.

Я интересуюсь выполнением этого обычно, не только для gedit.

8
задан 2 November 2018 в 01:18

2 ответа

Не совсем, нет. Я не уверен в деталях, но полагаю, что Alt + F2 просто передает команды, которые вы запускаете, в неинтерактивную оболочку без входа в систему. Этот тип оболочки не будет иметь доступа к псевдонимам, как объясняется в 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.

Итак, вы можете подумать, что можете просто установить BASH_ENV , чтобы указать на файл, содержащий псевдоним определения. К сожалению, псевдонимы недоступны для неинтерактивных оболочек. Снова из 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).

Вы можете подумать, что можете добавить shopt -s expand_aliases в файл, определенный в $ BASH_ENV , но это не сработает потому что этот файл будет прочитан, но в другой оболочке.

Я знаю, что это сбивает с толку. В итоге, вы не можете сделать псевдонимы доступными для диалогового окна Alt + F2 .


Временное решение

Итак, поскольку вы не можете сделать это с псевдонимами, что вы можете сделать это с помощью скриптов:

sudo -H gedit /usr/bin/geditm

Это вызовет новое окно gedit , добавьте в него эти строки и сохраните файл:

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

Сделайте скрипт исполняемым :

sudo chmod a+x /usr/bin/geditm

Теперь вы можете нажать Alt + F2 , написать geditm , и этот сценарий будет запущен, который в свою очередь запустит gedit с желаемыми параметрами.

9
ответ дан 23 November 2019 в 07:34

Примечание: перечитав свой вопрос и подумав над ним, я думаю, что ответ Тердона, вероятно, будет тем, который вам нужен, а не этим; этот слишком общий и требует больше ввода.

Если я правильно понимаю, похоже, что вы можете добавить - display = D1 к любой программе, запускаемой с помощью Alt-F2; это верно? После некоторого обсуждения, вероятно, нет, поэтому обязательно посмотрите «EDIT2» вместе с этим для другого варианта.

Если так, похоже, вы могли бы создать простой скрипт, который будет жить в какой-то папке на вашем пути, например ~ / bin , это будет просто

#!/bin/bash
$1 --display=D1

. Если вы назовете скрипт "display", то с помощью Alt-F2 вы можете запустить display gedit , и он должен добавить "--display = D1 ".

РЕДАКТИРОВАТЬ: Я думаю, вам нужно будет сделать его исполняемым, используя chmod + x display

Я не могу легко это проверить, но он должен работать (если это то, что вы хотите сделать.

РЕДАКТИРОВАТЬ2: Кажется, я не полностью понял ваш вопрос, но я думаю, что вы все еще можете использовать аналогичный метод. Вместо указания флага вы можете использовать подстановки как для команды, так и для флагов. Я думаю вы можете просто сказать

$*

вместо

$1 --display=D1

. Тогда команда Alt-F2 будет выглядеть так: «display xxxx yyyy ...»

1
ответ дан 23 November 2019 в 07:34

Другие вопросы по тегам:

Похожие вопросы: