标签: cal

`cal`坏了吗?1752 年 9 月发生了什么?

如果你看一下你的输出,cal 9 1752你会看到这个奇怪的输出:

   September 1752
 S  M Tu  W Th  F  S
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Run Code Online (Sandbox Code Playgroud)

以下标题为“ cal 9 1752 解释”的故事是 90 年代初从新闻列表中复制的,并在David G. Wiseman(大学计算机科学系的网络经理)为计算机观众收集的有趣内容下存档西安大略省)。

最初在某些旧版本 7 机器上编写“cal”命令的人在他的代码中出现了一个逐一错误。当 malloc 变量用零覆盖 12 个额外字节时,这表现为一些错误的输出,从而导致上面看到的奇怪的日历输出。

现在,没有人真正关心 1752 年 9 月的日历。甚至1752 年的想法在 UNIX 下都不存在,因为 UNIX 的时间直到 1970 年初才开始。结果,甚至没有人知道“cal "直到很久以后才出现这个错误。到那时,已经有数千个“cal”的副本四处飘散,其中许多只有二进制文件。修复它们为时已晚。

所以在 1975 年年中,AT&T 的一些高级官员会见了教皇,并达成协议。日历被追溯更改,使 1752 年 9 月与 UNIX 现实保持一致。由于历是计数改为向后从1752年9月14日,没有日期后受到了影响。之前的日期都移动了 12 …

history cal

29
推荐指数
1
解决办法
3万
查看次数

最近的 Debian 中未突出显示 cal 中的当前日期

正如在突出显示校准中的当前日期中所回答的

如果输出到终端,输出形式 cal 中的当前日期会自动突出显示(反色)。

这就是我一直得到的。

然而,对于我当前的 Debian GNU/Linux,情况不再如此,我想知道修复是什么。

在此输入图像描述

$ echo $TERM
xterm

$ lsb_release -a 
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux bullseye/sid
Release:        testing
Codename:       bullseye
Run Code Online (Sandbox Code Playgroud)

linux debian highlighting cal

18
推荐指数
2
解决办法
2396
查看次数

使用 cal 输出当前日期

我被要求使用cal命令输出当天。

到目前为止,我发现在当前日期之前有一个_符号。我决定在grep这里使用: cal | grep '\b_*',但它输出整个星期。我尝试了几种变体,但没有成功。

其实也有一种情况,当日只有一位数,看来我得用在tr -d ' '这里了。

我不知道如何将所有这些命令组合在一起。

command-line grep cal output

7
推荐指数
2
解决办法
1745
查看次数

在 cal 中突出显示当前日期

我想在cal命令的输出中突出显示今天的日期。什么是最好的方法?

这是我到目前为止:

cal -m | grep -C6 --color "$(date +%e)"
Run Code Online (Sandbox Code Playgroud)

但它不适用于所有情况,例如,当日期只有一位数时。我还希望突出显示在我显示一年的日历时起作用。

highlighting date cal

6
推荐指数
3
解决办法
7253
查看次数

如何在`cal`命令中按颜色强调假期

我想通过颜色cal或类似命令来强调假期。

我正在使用 OS X 和 Ubuntu 14,是否有简单的方法来启用该功能?

cal

6
推荐指数
1
解决办法
3750
查看次数

如何使 OSX 中的 `cal` 工具突出显示当天?

在 Ubuntu 和 Fedora 中,当我cal在命令行上输入时,我会得到一个 ASCII 日历,其中突出显示了当天。

在 OSX 中,当我输入 时cal,我得到一个 ASCII 日历,但没有突出显示日期。

如何在 OSX 中突出显示当前日期?

osx cal

5
推荐指数
1
解决办法
1500
查看次数

为什么“cal”使用奇怪的 08 / ^H / \b 终端代码来突出显示以及它是如何工作的?

当您在 Linux 上运行 cal 时,当月的输出将反转视频突出显示当天。当我将该输出发送到 hexdump -c 时,我得到了一些有趣的结果:

0000000               N   o   v   e   m   b   e   r       2   0   1   6
0000010                          \n   S   u       M   o       T   u    
0000020   W   e       T   h       F   r       S   a          \n        
0000030                       1           2       _  \b       _  \b   3
0000040           4           5          \n       6           7        
0000050   8           9       1   0       1   1       1   2          \n
0000060   1   3       1   4       1   5       1   6       1   7       1
0000070   8       1   9          \n …
Run Code Online (Sandbox Code Playgroud)

highlighting escape-characters cal ansi-term

5
推荐指数
1
解决办法
816
查看次数

是否可以允许后台进程连续输出到终端?

这是一个用例来澄清我的问题。假设我有一个设置为在 中运行的日历程序,~/.bashrc它确保流输出覆盖相同的行块。

是否可以在不破坏新输入的情况下从后台进程在终端中显示流输出?我已经看过在终端的特定位置显示后台进程的标准输出,但是提问者需要在终止时输出新行,我不需要这样做。

这是程序输出的屏幕截图,当前在前台运行并在输出一次格式化文本后终止: 程序输出后的终端

我只希望格式化的文本不断替换自身,同时允许前台进程正常运行。在 Bash、C 和/或 C++ 中使用类似zsh或 ANSI 转义序列的解决方案对我来说是完美的。

作为参考,这是我正在使用的当前 C 代码,但如果对您来说更容易,您可以制定一个解决方案来cal代替:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

const char months[12][10] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
const char weekDays[7][10] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void printCalendar(void);
int getWeekDay(int, int, int, int, int);
int getMaxDay(int, int);
void getDate(int *, int *, int *, int *, int *, int …
Run Code Online (Sandbox Code Playgroud)

command-line c terminal cal background-process

5
推荐指数
1
解决办法
528
查看次数

OS X 中日历 (cal) 中的多月视图

我希望运行本文中列出的一些命令,例如:

cal -3
Run Code Online (Sandbox Code Playgroud)

它应该显示上个月,本月和下个月。

该命令没有在OS X中运行

$ cal -3
cal: illegal option -- 3
usage: cal [-jy] [[month] year]
       cal [-j] [-m month] [year]
       ncal [-Jjpwy] [-s country_code] [[month] year]
       ncal [-Jeo] [year]
Run Code Online (Sandbox Code Playgroud)

是否有我可以在 OS X 中使用的替代形式?

以供参考:

$ which cal
/usr/bin/cal
Run Code Online (Sandbox Code Playgroud)

$ man cal 
Run Code Online (Sandbox Code Playgroud)

表明这可能是默认的 OS X 版本: "...BSD General Commands Manual..."

osx shell zsh cal

4
推荐指数
1
解决办法
2112
查看次数

校准无空格分隔符

我是 OpenBSD 用户,我正在编写一个 awk 脚本,它会为我教授的所有课程自动生成 TeX 课程日历。为了从系统中获取实际日历,我使用 Unix cal 命令。问题是 cal 命令的输出使用空格作为分隔符,当我将 nawk 脚本应用于它时,这会产生各种问题。我查看了 cal 的源代码,似乎除了破解源代码之外,没有什么会强制 cal 命令使用空格以外的分隔符。让日历看起来像这样的最简单方法是什么

        June 2012
Su, Mo, Tu, We, Th, Fr, Sa
  ,   ,   ,   ,   ,  1,  2
 3,  4,  5,  6,  7,  8,  9
10, 11, 12, 13, 14, 15, 16
17, 18, 19, 20, 21, 22, 23
24, 25, 26, 27, 28, 29, 30
Run Code Online (Sandbox Code Playgroud)

text-processing cal calendar

3
推荐指数
1
解决办法
297
查看次数

Zeller 的一致性和 cal 命令

根据泽勒的同余论,1600 年 2 月 29 日是星期二。但是,cal 命令将其显示为 Friday.Cal 的代码中是否存在错误,或者 Zeller 的同余可以预测这一天的年份范围是否存在限制。

history cal

2
推荐指数
1
解决办法
137
查看次数

如何将字符串附加到每个单元格(使用 awk)?

这是 的输出cal<SPACE>向每个单元格附加一个附加项的最简单方法是什么?

     June 2021        
Su Mo Tu We Th Fr Sa  
       1  2  3  4  5  
 6  7  8  9 10 11 12  
13 14 15 16 17 18 19  
20 21 22 23 24 25 26  
27 28 29 30
Run Code Online (Sandbox Code Playgroud)

预期结果:

     June 2021
Su  Mo  Tu  We  Th  Fr  Sa
         1   2   3   4   5
 6   7   8   9  10  11  12
13  14  15  16  17  18  19
20  21  22  23  24  25 …
Run Code Online (Sandbox Code Playgroud)

awk cal

-2
推荐指数
1
解决办法
102
查看次数