Ne l'aimez-vous pas simplement quand deux commandes font chacune une chose que vous voulez, mais pas les deux non plus?
C'est ce qui cal
fait. Joli formatage. Il manque cependant des numéros de semaine:
$ 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
C'est ce qui ncal
fait. Formatage étrange, mais avec des numéros de semaine:
$ 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
Le type de sortie que je veux, en fait un croisement entre cal
et 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
la source
la source
gcal --starting-day=Monday --with-week-number
correspond plus à mes besoins mais cet outil est génial.Cela met en évidence la date du jour et peut afficher n'importe quel mois via
$1
sous la forme:YYYY-mm-dd
... Il s'agit par défaut de la date du jourIl est configuré pour afficher les numéros de semaine ISO et le premier jour de la semaine étant le lundi.
Voici l'affichage de ce mois-ci (avec
20
surligné)la source
08
et09
était interprété comme octal au lieu de décimal .. Ça devrait aller maintenant ...Vous pouvez utiliser
nl
pour numéroter les lignes (c'est le but du programme :). Mais vous devez extraire la première semaine du mois de quelque part. Cela peut se faire dencal
lui-même:Nous l'insérons en tant que paramètre de
nl
l'option-v
(numéro de ligne de départ), et nous le disons uniquement aux lignes de numéro avec des nombres ou des espaces.Mais tout cela est terriblement fragile. Quoi qu'il en soit, si vous n'avez pas besoin
cal
des options plus avancées, cela fonctionnera. Vous pouvez le mettre dans un fichier et remplacer"$@"
où je l'ai mis2 2012
.EDIT: Mais c'est faux! Je viens de remarquer que la première semaine de janvier peut avoir le numéro 52 ou 53! Nous devons donc soit faire une exception pour janvier, soit extraire tous les numéros de semaine de
ncal
et les appliquer à la sortie decal
.C'est la solution que je pensais à l'origine, mais j'ai pensé (à tort) que je la simplifierais en utilisant
nl
. Il utilisepaste
, qui fusionne les fichiers côte à côte. Puisqu'il n'y a pas de fichier, nous devons utiliser le bashisme<(...)
; c'est ce que j'essayais d'éviter.Notre premier "fichier" sera une liste des numéros de semaine, avec deux lignes vides au début:
Le second, juste la sortie de
cal
. Tous ensemble, comme paramètrespaste
:Beaucoup plus désordonné et incompatible que l'autre. En fin ...
la source
Générez la séquence des semaines avec
ncal
et utilisezpaste
pour avoir les deux sorties côte à côte.Si vous n'aimez pas avoir des onglets comme délimiteurs, ajoutez simplement quelque chose comme
sed 's/\t/ /'
Edit : beaucoup plus simple, pas besoin de se soucier des onglets:
la source
cal
etncal
(d'autres approches reproduisent le comportement de l'uncal
ou de l'autrencal
).Une façon d'utiliser Perl (ma langue de sortie de la
cal
commande est l'espagnol, mais j'espère que le résultat ne varie pas de l'anglais):Production:
Explication:
la source
cal 02 2012
t-il? Cela semblait fonctionner dans mon test.Sans suffisamment de représentants pour commenter la réponse de slm, gcal peut être installé sur Mac OS en utilisant
brew install gcal
.(J'ai trouvé la réponse ici d'abord, puis cette réponse sur demander différente, mais la réponse unix manquait toutes les informations dont j'avais besoin pour installer sur le mac.)
la source
Voici ma solution qui est plus courte dans le code et fonctionne bien pour d'autres dates que le mois en cours. Désolé pour le peuple américain, cela utilise le format ISO, c'est-à-dire que le 1er jour de la semaine est lundi. Cela se fait avec l'option -m pour cal et l'option% V pour date
la source
J'ai fait ce script pour générer un calendrier de garde pour les équipes. Il génère un calendrier avec des numéros de semaine et leur attribue des noms (simplement un round-robin). Une fois la sortie imprimée, il vous suffit de la copier pour exceller et de faire du "texte dans la colonne" par; et encore une fois, effectuez "text to column" sur la première colonne en utilisant l'option "fixed". L'avantage de ce calendrier (par rapport à l'orientation horizontale) est que vous pouvez utiliser un filtre automatique (Alt + dff) et ne trouver que vos semaines.
Désolé, code un peu méchant ... et pas de commentaires ... mais ça marche bien;)
la source
Je ne veux pas vraiment installer
gcal
, et je n'ai pas pu le faire fonctionner correctement sur mon système. Donc sans gcal, la réponse de funollet est en effet la meilleure solution. Je l'ai juste changé un tout petit peu pour qu'il préserve également la mise en forme comme le surlignage du jour , les couleurs, etc. en utilisant la commande. J'ai également supprimé les caractères redondants, le rendant approprié comme alias, en tant que tel:script
Ou remplacez-la
cal
par une nouvelle fonction. Cependant, avec cela, vous ne pouvez pas faire des choses commecal -3
. Vous obtenez les bonnes semaines mais elles ne sont pas alignées correctement. Une solution simple mais pas complète consiste à vérifier sical
est appelé sans arguments, comme ceci:la source