使用默认别名“alert”

默认别名Alert用于该命令

notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')" 

执行alert会发出包含文本警报和终端图标的通知。 用一个像alert !!!!!一样的param执行它alert !!!!! 通知文本提醒!!!!!!!!!!

那么,简单的notify-send命令和这个使用notify-send,echo,history,tail和sed的复杂别名之间的区别是什么?

在哪种情况下这个别名是有用的,或者它只是为双关语创建(有点像使用sudo sudo sudo sudo sudo apt-get install

我正在使用Ubuntu 12.10

您可以使用手册页来获取有关此处组合的命令的详细信息。 这里有一些关于这些命令的目的:

 "$([ $? = 0 ] && echo terminal || echo error)" 

这将根据执行状态回显终端错误 – 分别成功失败最后一个命令; 结果是作为显示图标的notify-send-i开关的值。

 history|tail -n1 

..以获取最后一个命令。

sed解析文本以显示它与notify-send消息。


要了解这些,请尝试以下方法:

 true; echo "$([ $? = 0 ] && echo terminal || echo error)" 

..这会回应终端

 false; echo "$([ $? = 0 ] && echo terminal || echo error)" 

..这会回应错误

 notify-send -i terminal 'Please note the icon..' 'the default icon for the terminal has been used. You can specify any other icon of your choice' 

和,

 echo $? 

..知道最后执行的命令的退出值非常有用。

 echo "$(echo "the output of this command enclosed within \$(...)") is being supplied here in the outer echo command where is used as an argument." 

..nested echo是一个在命令组合中使用$()的简单演示。

让我试着解释一下这里发生了什么:

 notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')" 

1 – --urgency=low

-u,–urgency = LEVEL指定紧急程度(低,正常,严重)。

2 -i "$([ $? = 0 ] && echo terminal || echo error)"

  -i, --icon=ICON[,ICON...] Specifies an icon filename or stock icon to display. 

这部分"$([ $? = 0 ] && echo terminal || echo error)"$? 是返回的最后一个错误(或成功)。 因此,如果最后一个命令退出代码为0,则返回文本“terminal”,没有错误。 如果退出代码不为0,则返回“error”。

最后我们得到“终端”或“错误”图标。

3 $(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')

history|tail -n1返回历史记录中的最后一个命令。

sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')这可以分成几个2块sed。

3.1。 sed 's/^\s*[0-9]\+\s*//'删除所有前面的空格和制表符,之后全部数字,并删除末尾的空格和制表符。

3.2。 s/[;&|]\s*alert$//删除前面的符号; & | ,任何标签和空格和单词“警报”。

它只是符号中最后执行的命令,最后是“alert”一词。

所以如果你使用这样的东西:

 echo "Hello alert" | alert 

它将使用上一个命令显示警报。

我认为目前的答案解释警报工作的内部运作方式(这是我想要从好奇心中找到的,哪些让我在这里)。 但是我认为最初的OP会询问我将尝试解释哪些是有用的,正如我从其声明的上述赞誉中所理解的那样。

它基本上用于在命令完成时提醒您,当您无法坐在终端上等待它完成时。 按照推荐的例子sleep 10; alert sleep 10; alert将显示该命令的通知(在这种情况下为sleep 10 ),如果成功则显示终端图标(睡眠10将需要10秒才能完成)。

从中您可以看到它应该用作; alert ; alert用命令替换命令的位置。 我个人每天都要通过wget下载video,因为它会定期失败。 所以我只是附加带警报的下载命令,以便在失败时立即通知我,以便它可以再次继续(我的警报被修改为也发出哔声以引起我的注意)。

sedtailhistory之所以存在,是因为它需要获取您键入的消息。 (由于某种原因,)您输入的内容不能通过任何变量直接获得。 因此,它必须使用history来获取您键入的所有内容的列表,使用tail -n1来获取您输入的最后一个内容,并使用一些正则表达式来开始删除“alert”命令。

为了扩展这个,有一个条件命令在那里测试看看是否$? = 0 $? = 0是真的。 据我所知,如果是真的,那么它来自终端,应该被视为正常的消息。 否则,它应被视为错误,并将出现错误图标。