linux mail命令及其历史
一、【问题描述】
最近隔壁组有人把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发行版上,没有可靠的方法从脚本发送邮件。但这是一个人必须面对的事实。)
相关文章:

linux mail命令及其历史
一、【问题描述】 最近隔壁组有人把crontab删了,crontab这个命令有点反人类,它的参数特别容易误操作: crontab - 是删除计划表 crontab -e 是编辑,总之就是特别容易输入错误。 好在可以通过mail命令找回,但是mai…...
数据驱动(Data-Driven)和以数据为中心(Data-Centric)的区别
一、什么是数据驱动? 数据驱动(Data-Driven)是在管理科学领域经常提到的名词。数据驱动决策(Data-Driven Decision Making,简称DDD)是一种方法论,即在决策过程中主要依赖于数据分析和解释&…...

aosp14的分屏接口ISplitScreen接口获取方式更新-学员疑问答疑
背景: 有学员朋友在学习马哥的分屏pip自由窗口专题时候,做相关分屏做小桌面项目时候,因为原来课程版本是基于android 13进行的讲解的,但是现在公司已经开始逐渐进行相关的android 14的适配了,但是android 14这块相比a…...
定积分求解过程是否变限问题 以及当换元时注意事项
目录 定积分求解过程是否变限问题 文字理解: 实例理解: 易错点和易混点: 1:定积分中的换元指什么? 2: 不定积分中第一类换元法和第二类换元法的本质和区别 3: df(x) ----> df(x)这…...
保研机试算法训练个人记录笔记(七)
输入格式: 在第1 行给出不超过10^5 的正整数N, 即参赛}人数。随后N 行,每行给出一位参赛者的 信息和成绩,包括其所代表的学校的编号(从1 开始连续编号)及其比赛成绩(百分制)…...
【MySQL精通之路】SQL优化(1)-查询优化(23)-避免全表扫描
当MySQL使用全表扫描来解析查询时,EXPLAIN的输出在type列中显示ALL。 这种情况通常发生在以下情况下: 该表非常小,因此执行全表扫描比查找关键字更快。这对于少于10行且行长较短的表来说很常见。 对于索引列,ON或WHERE子句中没有…...

【Linux】写时拷贝技术COW (copy-on-write)
文章目录 Linux写时拷贝技术(copy-on-write)进程的概念进程的定义进程和程序的区别PCB的内部构成 程序是如何被加载变成进程的?写时复制(Copy-On-Write, COW)写时复制机制的原理写时拷贝的场景 fork与COWvfork与fork Linux写时拷贝技术(copy-…...
用python使用主成分分析数据
import pandas as pd #导入处理二维表格的库 import numpy as np #导入数值计算的库 from sklearn.preprocessing import StandardScaler #导入数据标准化模块 import matplotlib.pyplot as plt #导入画图的包 from sklearn.decomposition import PCA #导入主成…...

用WPS将多张图片生成一个pdf文档,注意参数设置
目录 1 新建一个docx格式的文档 2 向文档中插入图片 3 设置页边距 4 设置图片大小 5 导出为pdf格式 需要把十几张图片合并为一个pdf文件,本以为很简单,迅速从网上找到两个号称免费的在线工具,结果浪费了好几分钟时间,发现需要…...

virtual box ubuntu20 全屏展示
virtual box 虚拟机 ubuntu20 系统 全屏展示 ubuntu20.04 视图-自动调整窗口大小 视图-自动调整显示尺寸 系统黑屏解决 ##设备-安装增强功能 ##进入终端 ##终端打不开,解决方案-传送门ubuntu Open in Terminal打不开终端解决方案-CSDN博客 ##点击cd盘按钮进入文…...
react中的数据驱动视图,useState()的使用
前端开发如今有一个很重要的思想就是数据驱动视图,数据发生变化使ui发生变化,比如一个变量count,为0显示三个按钮,为1显示一个按钮,为2显示两个按钮。这就是一个简单的数据驱动视图。 import { useState } from reactf…...
金融数据库,实时行情,股票财务数据在线查询
jvQuant在线SQL 文档(current)接入 测试 查询 #股票代码股票简称最新价(元)2024-05-21股东总户数(户)截至2024-05-21上市板块是否ST股票区间涨跌幅(%)2024-05-15-2024-05-21市盈率(TTM)(倍)2024-05-21营业收入(元)截至2024-03-31总市值(元)2024-05-21量比2024-05-21利润率(%…...

开源模型应用落地-LangSmith试炼-入门初体验-数据集评估(三)
一、前言 LangSmith是一个用于构建生产级 LLM 应用程序的平台,它提供了调试、测试、评估和监控基于任何 LLM 框架构建的链和智能代理的功能,并能与LangChain无缝集成。通过使用LangSmith帮助开发者深入了解模型在不同场景下的表现,让开发者能…...
设计模式 15 Decorator Pattern 装饰器模式
设计模式 15 Decorator Pattern 装饰器模式 1.定义 Decorator Pattern 装饰器模式是一种结构型设计模式,它允许在运行时给对象添加新的行为或职责,而无需修改对象的源代码。这种模式通过创建一个包装对象,也称为装饰器,来包裹原…...
cuda11.8安装torch2.0.1
pip install torch2.0.1 torchvision0.15.2 torchaudio2.0.2 --index-url https://download.pytorch.org/whl/cu118...
新手困 ViewModel与Activting的databinding2个对象 区别
在Android开发中,ViewModel与Activity的Binding并不是同一个概念,它们分别指的是不同的功能和用途。 ViewModel: ViewModel是一个为UI界面提供数据的类,它负责管理Activity或Fragment的数据。ViewModel类持有数据的引用,即使配置…...
Cocos Creator 声音播放与管理详解
Cocos Creator 是一款非常流行的游戏开发引擎,它提供了丰富的功能和工具,让开发者可以轻松构建出高质量的游戏。在游戏开发中,声音是一个非常重要的元素,可以为游戏增添氛围和趣味性。在本文中,我们将详细介绍Cocos Cr…...

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月26日,星期日
每天一分钟,知晓天下事! 2024年5月26日 星期日 农历四月十九 1、 医保局:支持将符合条件的村卫生室纳入医保定点,方便农村居民就医。 2、 网传养老金储备严重不足?央视辟谣:这笔钱二十多年来从未动用过&a…...

IDEA快速生成类注释和方法注释的方法
1.生成类、接口、枚举、注解等文件的注释,不仅仅是class 2.生成方法注释的 可在方法上方空行输入/** 按enter键快速生成。生成的样式如下: PS:生成的返回值带一堆英文文字说明,感觉没必要 如果想生成比较全面的方法注释,如作者&…...
[集群聊天服务器]----(七)业务模块之一对一聊天、添加好友函数、好友类以及离线消息类
接着[集群聊天服务器]----(六)业务模块之用户注册、登录、退出以及客户端异常退出函数中对于业务模块的用户注册、登录、退出以及客户端异常退出函数的剖析,现在我们对点对点聊天以及添加好友的实现进行剖析。 点对点聊天 当客户端输入msgidONE_CHAT_MSG时&#x…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...