在 Alt-F2 对话框中使用别名

在 Alt-F2 对话框中使用别名

.bashrc文件中,可以为命令添加别名,例如

alias geditm = 'gedit --display=D1'

现在我可以geditm在终端中运行并在显示器 D1 中打开 gedit。我很好奇是否有办法定义从 Alt-F2 菜单运行命令的别名,这样我就可以Alt+ F2,键入geditm并获得相同的结果。

我对此很感兴趣,不仅仅是为了 gedit。

答案1

不是,不是。我不确定细节,但我认为 +Alt只是F2将您运行的命令传递给非交互式、非登录 shell。此类 shell 将无法访问别名,如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指向包含别名定义的文件即可。不幸的是,非交互式 shell 无法使用别名。再次引用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但这样做不起作用,因为该文件将被读取,但在不同的 shell 中。

我知道这很令人困惑。归根结底,您无法为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所需的选项。

答案2

注意:在重新阅读你的问题并经过更长时间的思考后,我认为 terdon 的答案可能是你想要的,而不是这个;这个太笼统了,需要更多的打字。

如果我理解正确的话,似乎您可能希望将其附加--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 ...”

相关内容