Разве вам не нравится, когда две команды выполняют одну вещь, которую вы хотите, но ни одна не делает обе?
Это то, что cal
делает. Хорошее форматирование. Не хватает номера недели, хотя:
$ cal
January 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 31
Это то, что ncal
делает. Странное форматирование, но с номерами недель:
$ ncal -w
January 2012
Su 1 8 15 22 29
Mo 2 9 16 23 30
Tu 3 10 17 24 31
We 4 11 18 25
Th 5 12 19 26
Fr 6 13 20 27
Sa 7 14 21 28
1 2 3 4 5
Тип вывода, который я хочу, на самом деле скрещивание между cal
и ncal -w
:
$ cal --magik-calendar-week-option
January 2012
Su Mo Tu We Th Fr Sa
1 1 2 3 4 5 6 7
2 8 9 10 11 12 13 14
3 15 16 17 18 19 20 21
4 22 23 24 25 26 27 28
5 29 30 31
bash
command-line
terminal
calendar
k0pernikus
источник
источник
gcal --starting-day=Monday --with-week-number
больше соответствует моим потребностям, но этот инструмент великолепен.Это выделяет сегодняшнюю дату и может отображать любой месяц с помощью
$1
формы:YYYY-mm-dd
... По умолчанию используется сегодняшняя дата.Он настроен так, чтобы показывать номера недель по ISO, а первый день недели - понедельник.
Вот показ этого месяца (с
20
выделенным)источник
08
и09
интерпретировался как восьмеричное, а не десятичное . Теперь все должно быть хорошо ...Вы можете использовать
nl
для нумерации строк (это цель программы :). Но вам нужно извлечь первую неделю месяца откуда-то. Это можно сделать изncal
себя:Мы вставляем это как параметр в параметр
nl
's-v
(начальный номер строки) и сообщаем его только числовым строкам с номерами или пробелами.Это все очень хрупкий, хотя. В любом случае, если вам не нужны
cal
более продвинутые опции, это сработает. Вы можете положить его в файл и заменить,"$@"
где я положил2 2012
.РЕДАКТИРОВАТЬ: Но это НЕПРАВИЛЬНО! Я только заметил, что первая неделя января может иметь номер 52 или 53! Таким образом, мы просто должны сделать исключение для января или просто извлечь все номера недель из
ncal
и применить их к выходным даннымcal
.Это решение, которое я думал первоначально, но я думал (ошибочно), что упростил бы его использование
nl
. Он используетpaste
, который объединяет файлы бок о бок. Поскольку файла нет, мы должны использовать bashism<(...)
; это то, чего я пытался избежать.Наш первый «файл» будет список номеров недели, с двумя пустыми строками в начале:
Второй, просто вывод
cal
. Все вместе, как параметры дляpaste
:Гораздо более грязный и несовместимый, чем другой. Эн фин ...
источник
Создайте последовательность недель с помощью
ncal
и используйтеpaste
для получения обоих выходов рядом.Если вам не нравятся вкладки в качестве разделителей, просто добавьте что-то вроде
sed 's/\t/ /'
Изменить : гораздо проще, не нужно заботиться о вкладках:
источник
cal
иncal
(другие подходы повторяют поведение либоcal
илиncal
).Один из способов использования Perl (мой выходной язык
cal
команды - испанский, но я надеюсь, что результат не отличается от английского):Выход:
Объяснение:
источник
cal 02 2012
? Казалось, сработало в моем тесте.Без достаточного количества представителей, чтобы прокомментировать ответ с помощью slm , gcal можно установить на Mac OS с помощью
brew install gcal
.(Сначала я нашел ответ здесь, затем этот ответ на другой вопрос, но в ответе unix не было всей информации, необходимой для установки на Mac.)
источник
Вот мое решение, которое короче в коде и отлично работает для других дат, чем текущий месяц. Извините за жителей США, здесь используется формат ISO, т.е. 1-й день недели - понедельник. Это делается с помощью опции -m для cal и опции% V для даты
источник
Я сделал этот скрипт для генерации дежурного календаря для команд. Он генерирует календарь с номерами недель и назначением им имен (просто циклический перебор). После того, как вывод напечатан, вам просто нужно скопировать его в Excel и сделать «текст в столбец»; и еще раз выполнить «текст в столбец» в первом столбце, используя опцию «исправлено». Преимущество этого календаря (по сравнению с горизонтальной ориентацией) заключается в том, что вы можете использовать автофильтр (Alt + dff) и находить только свои недели.
Извините, код немного неприятный ... и без комментариев ... но он работает хорошо;)
источник
Я действительно не хочу устанавливать
gcal
, и я не мог заставить его работать должным образом в моей системе. Так что без gcal ответ funollet - действительно лучшее решение. Я чуть-чуть изменил его, чтобы он также сохранял форматирование, такое как дневная подсветка , цвета и т. Д., С помощьюscript
команды. Я также удалил лишние символы, что делает его пригодным для использования в качестве псевдонима:Или заменить
cal
на новую функцию. Тем не менее, с этим вы не можете делать такие вещи, какcal -3
. Вы получаете правильные недели, но они не выровнены должным образом. Простое, но не полное решение - проверить,cal
вызывается ли без аргументов, например:источник