nedit 命令别名导致功能中断



我正在使用nedit在我的工作站中编辑源代码。但是,它以以下错误开始:

Cannot convert string "-*-helvetica-medium-r-normal-*-*-120-*-*-*-iso8859-1" to type FontStruct
Cannot convert string "-*-helvetica-bold-r-normal-*-*-120-*-*-*-iso8859-1" to type FontStruct
Cannot convert string "-*-helvetica-medium-o-normal-*-*-120-*-*-*-iso8859-1" to type FontStruct
Cannot convert string "-*-courier-medium-r-normal-*-*-120-*-*-*-iso8859-1" to type FontStruct
Cannot convert string "-*-courier-bold-r-normal-*-*-120-*-*-*-iso8859-1" to type FontStruct
Cannot convert string "-*-courier-medium-o-normal-*-*-120-*-*-*-iso8859-1" to type FontStruct

不知道如何修复这些错误,我使用别名开始编辑:ne='nedit &>/dev/null &'

这是为了抑制向 stdout 和 stderr 吐出的警告消息,并让 nedit 在后台运行,以便我可以在当前终端窗口中键入下一个命令。

但是,如果我使用此别名直接打开文件,它会给我一个错误消息,例如:

[qxu@merlin:/home/qxu/work/src]# ne abc.c
[4] 24969304
-bash: ./abc.c: The file access permissions do not allow the specified action.

然而,nedit abc.c工作,尽管有上述字体错误消息。

有没有办法让我使用上面的别名并给它一个文件名直接打开?

使用函数而不是别名。当我们必须处理参数时,使用起来更简单。将以下函数放在.bashrc文件中:

function ne() {
    command nedit "$@" &>/dev/null &
}

在此示例中,当您运行 ne file.txt 时,您调用此函数,该函数使用您传递的所有参数nedit执行命令 ("$@" )。

看看这个解释,什么时候应该使用别名或函数。这很好

您的别名的问题在于您在错误的位置&。当别名展开时,你会得到

nedit &>/dev/null & abc.c

& 是命令分隔符,因此这等效于

nedit &>/dev/null &     # launch nedit in the background without a file to edit
abc.c                   # execute abc.c

显然"abc.c"没有执行权限。

正如维克多所说,使用函数。

相关内容

  • 没有找到相关文章

最新更新