使用 gedit 别名来抑制终端输出

使用 gedit 别名来抑制终端输出

我通过 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

唯一对我有用的东西

相关内容