nedit命令别名导致功能破坏

时间:2012-11-16 21:10:31

标签: linux bash alias

我正在使用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可行,但上面的字体错误是msgs。

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

2 个答案:

答案 0 :(得分:3)

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

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

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

当您应该使用别名或函数时,请查看此explanation。这是非常好的

答案 1 :(得分:2)

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

nedit &>/dev/null & abc.c

&command separator,因此相当于

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

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

正如Victor所说,使用一个函数。