我通过 SSH 连接到嵌入式主板(运行 Ubuntu 14.04 的 Jetson TK1)。我使用 -X 选项,这样我就可以使用 gedit 编辑文本文件。从终端执行时,gedit 会在终端上输出一堆垃圾。只需输入以下命令即可轻松解决此问题
gedit [file] > /dev/null 2>&1 &
最后一个 & 符号将进程发送到后台,这样我就可以继续使用终端。每次输入都很累,所以我想定义一个别名:
alias gedit="gedit $@ > /dev/null 2>&1 &"
然而这不起作用。定义别名后(第一次尝试时,我直接在 bash 命令行上定义),输入
gedit [file]
Bash 回应说
-bash: [file]: command not found
并使用未命名的文本文件打开 gedit。删除别名定义中的尾随 & 符号会使别名按预期打开指定的文件,但现在显然不会将 gedit 发送到后台。出了什么问题?
答案1
我的回答主要基于这篇文章:http://ubuntuforums.org/showthread.php?t=2011495
别名则不然,参数总是传递到命令末尾。以您的别名为例,gedit filename
实际上将运行以下命令:
gedit $@ > /dev/null 2>&1 & filename
代替
gedit filename > /dev/null 2>&1 &
这导致 bash 认为您输入了第二个名为 的命令filename
。
您需要做的是在文件中创建一个函数~/.bashrc
,它将运行 gedit 命令:
以下代码片段是经过稍微修改的版本drmrgd 的代码
function gedit-bg() {
if [ ! -n "$1" ]; then
echo "USAGE: gedit-bg <filename>";
else
( gedit "$1" > /dev/null 2>&1 & );
fi
}
您需要重新登录才能使更改生效,完成后,您可以使用如下方法:
gedit-bg filename
答案2
我用于学生帐户的服务器上的警告gedit
对学生来说非常分散注意力。稍微修改一下 Dan 的答案,学生仍然可以gedit
照常打字。我把这个放进去了/etc/profile.d/custom.sh
(在 Centos 7 中,但大概在 Ubuntu 中也可以用,或者在用户的.profile
文件中)
function gedit-bg() {
if [ ! -n "$1" ]; then
echo "USAGE: gedit <filename>";
else
( \gedit "$1" > /dev/null 2>&1 & );
fi
}
alias gedit="gedit-bg"
答案3
鱼类:
alias gedit="gedit-bg"
function gedit-bg
bash -c "gedit $argv 2> /dev/null &"
end
唯一对我有用的东西