我正在使用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"没有执行权限。
正如维克多所说,使用函数。