一、【问题描述】
最近隔壁组有人把crontab删了,crontab这个命令有点反人类,它的参数特别容易误操作:
crontab - 是删除计划表
crontab -e 是编辑,总之就是特别容易输入错误。
好在可以通过mail命令找回,但是mail是一个远古命令,他的操作也很反人类
二、【命令展示】
在 Linux 中使用 mail
命令时,可以通过以下操作来导航和操作邮件内容:
- 上下移动:使用
j
和k
键来向下和向上移动。 - 左右移动:可以使用
h
和l
键来向左和向右移动。 - 查看邮件:输入邮件编号并按 Enter 键来查看特定邮件。例如,输入
1
并按 Enter 键查看第一封邮件。 - 删除邮件:输入
d
加邮件编号,然后按 Enter 键删除特定邮件。例如,输入d 1
删除第一封邮件。 - 退出邮件客户端:输入
q
并按 Enter 键退出mail
命令
三、【总结】
笔者去查了一下,这个mail命令究竟有多远古, 原文是这么写的
The most ancient command is mail,
which was included in Unix 1st Edition in 1971 according to the manuals.
At this time, Unix had no remote communication facility at all,
so mail would simply write to other users' files on a single machine.
GPT是这么回复的
所以总的来说,mail的操作习惯不同是因为其本身就是一个远古命令,如果希望用好使一点的,可以用mutt来平替
四、【参考】
这篇文章是笔者查资料看到的,有兴趣可以看看
mail, Mail, mailx, nail—history notes (sourceforge.net)
1. 机翻
mail, Mail, mailx, nail—history notes:
邮件命令在Unix系统中的名称长期以来一直存在混淆。以下是一些澄清:
最古老的命令是mail,根据手册,它是在1971年的Unix第一版中包含的。那时,Unix根本没有远程通信设施,所以邮件只是简单地写入到单台机器上其他用户的文件中。
随后的Unix版本中,mail进行了一些更新;它可以调用uux,后来是sendmail,用于发送远程消息,并至少具有一些交互式命令用于在邮箱中导航。像这样的邮件命令是通过System V接口定义(SVID)和Single Unix规范(直到1998年版)标准化的。
随着后续版本的System V,mail仍然获得了一些更多的功能,例如打印头部摘要的功能。这样的邮件命令的开源版本作为Heirloom Toolchest软件包的一部分是可用的;查看其手册页以获取其功能概述。然而,所有派生自原始mail的命令仍然有些原始;因为它们既不调用分页器查看超过CRT屏幕的消息,也没有提供设置主题行的方法,所以它们不太适合用于互联网邮件。尽管如此,它们仍然适用于发送短消息。
然而,从中应该学到的是,使用mail命令的-s选项在shell脚本中设置主题行是不可移植的,不会在某些Unix实现上起作用。
在1978年,Kurt Shoens为Unix编写了另一个邮件用户代理:Berkeley Mail。它不是原始邮件命令的派生版本。当它被包含在2BSD发布版中时(这仍然只是Unix第6或第7版系统的附加组件),它的用户界面已经完整(所以如果在Heirloom mailx中设置了bsdcompat选项,它实际上看起来和感觉都一样)。安装后,Berkeley Mail被发现为/usr/ucb/Mail,但Unix mail仍然可以在/bin/mail中找到。
混淆真正开始于3BSD发布版(一个完整的系统,而不是一个附加组件),因为它还提供了一个/usr/ucb/mail命令,它只是一个指向Mail的链接。因此,根据PATH设置,输入mail可能会调用Unix mail或Berkeley Mail。这在所有Berkeley发布版本中一直保持不变,直到4.3BSD-Tahoe及其派生版本;最终,Unix mail被完全删除,但名称在所有位置上仍然保持为指向Mail的链接。
对于System V Release 3,创建了Berkeley Mail的一个派生版本:mailx。它基本上与Mail兼容,但有一些附加功能,并且用户界面略有改变(如果未设置bsd...兼容变量,Heirloom mailx使用类似的界面)。
这个System V mailx命令随后也在1992年被标准化为POSIX.2,包括许多扩展。
Linux发行版使情况变得更加混乱。它们只能使用原始的Berkeley Mail(直到2005年的OpenSolaris发布,System V mailx是封闭源代码)。然而,由于Mail和mailx对于大多数应用程序来说足够相似,对于许多应用程序来说,也似乎适合于具有简单的mailx命令,该命令只是Mail,因此不足以达到正式的POSIX.2一致性。大多数发行版也使mail调用Mail,因为Unix mail也是封闭源代码,直到2002年1月。
为了完全混淆,一些商业Unix供应商随着时间的推移放弃了对原始mail的支持,并使其调用mailx。
Heirloom mailx源自Berkeley Mail。自版本10以来,Heirloom mailx还具有System V和POSIX mailx添加的独立实现。
Heirloom mailx以前是以nail的名称开发的,并于2006年3月整合到Heirloom项目中。
如果被称为Mail,则应创建一个简短的shell脚本,在调用mailx之前设置bsdcompat变量。但mail是一个完全不同的命令,如果需要使用开源版本,则应从Heirloom Toolchest获取。可移植的脚本应该在不带任何选项的情况下调用mail,或者应该使用标准化的mailx接口。在任何情况下,它们应将MAILRC变量设置为/dev/null以绕过用户的配置。由于这个变量存在于mailx中,但不存在于Mail中,因此在脚本中使用Mail不太可靠,应该避免。(实际上,这意味着在许多BSD衍生版本和Linux发行版上,没有可靠的方法从脚本发送邮件。但这是一个人必须面对的事实。)