0

我正在使用 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工作,虽然有上述字体错误消息。

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

4

2 回答 2

3

使用函数而不是别名。当我们必须处理参数时,它更易于使用。将以下函数放入您的.bashrc文件中:

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

在这个例子中,当你运行时ne file.txt,你调用这个函数来执行nedit带有你传递的所有参数的命令("$@")。

看看这个关于何时应该使用别名或函数的解释。这很棒

于 2012-11-16T21:51:43.740 回答
2

你的别名的问题是你&放错了地方。扩展别名时,您会得到

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”没有执行权限。

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

于 2012-11-17T02:54:29.643 回答