¿No te encanta cuando dos comandos hacen cada uno lo que quieres pero tampoco los dos?
Esto es lo que cal
hace. Buen formato. Sin embargo, carece de números semanales:
$ 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
Esto es lo que ncal
hace. Formato extraño, pero con números de semana:
$ 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
El tipo de salida que quiero, en realidad un cruce entre cal
y 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
fuente
fuente
gcal --starting-day=Monday --with-week-number
se ajusta más a mis necesidades pero esta herramienta es excelente.Esto resalta la fecha de hoy y puede mostrar cualquier mes a través
$1
del formulario:YYYY-mm-dd
... Por defecto es la fecha de hoyEstá configurado para mostrar los números de semana ISO, y el primer día de la semana es el lunes.
Aquí está la pantalla de este mes (con
20
resaltado)fuente
08
e09
interpretado como octal en lugar de decimal ... Ahora debería estar bien ...Puede usar
nl
para numerar las líneas (ese es el propósito del programa :). Pero necesitas extraer la primera semana del mes de algún lado. Se puede hacer desdencal
sí mismo:Insertamos esto como un parámetro para
nl
la opción-v
(número de línea inicial), y le decimos que solo numere líneas con números o espacios.Sin embargo, todo esto es terriblemente frágil. De todos modos, si no necesita
cal
las opciones más avanzadas, funcionará. Puede ponerlo en un archivo y reemplazarlo"$@"
donde lo puse2 2012
.EDITAR: ¡Pero esto está EQUIVOCADO!¡Acabo de notar que la primera semana de enero puede tener el número 52 o 53! Así que solo tenemos que hacer una excepción para enero, o simplemente extraer todos los números de la semana
ncal
y aplicarlos a la salida decal
.Esta es la solución que pensé originalmente, pero pensé (erróneamente) que lo simplificaría usando
nl
. Utilizapaste
, que combina archivos uno al lado del otro. Como no hay ningún archivo, tenemos que usar el bashism<(...)
; eso es lo que estaba tratando de evitar.Nuestro primer "archivo" será una lista de los números de la semana, con dos líneas vacías al principio:
El segundo, solo la salida de
cal
. Todos juntos, como parámetros parapaste
:Mucho más desordenado e incompatible que el otro. En fin ...
fuente
Genere la secuencia de semanas con
ncal
y usepaste
para tener ambas salidas juntas.Si no le gusta tener pestañas como delimitadores, simplemente agregue algo como
sed 's/\t/ /'
Editar : mucho más simple, no hay que preocuparse por las pestañas:
fuente
cal
yncal
(otros enfoques replican el comportamiento de cualquieracal
oncal
).Una forma de usar Perl (mi idioma de salida del
cal
comando es español, pero espero que el resultado no varíe del inglés):Salida:
Explicación:
fuente
cal 02 2012
? Parecía funcionar en mi prueba.Sin suficiente representante para comentar la respuesta de slm, gcal se puede instalar en Mac OS usando
brew install gcal
.(Encontré la respuesta aquí primero, luego esta respuesta en ask different, pero la respuesta de Unix carecía de toda la información que necesitaba para instalar en la Mac).
fuente
Aquí está mi solución, que tiene un código más corto y funciona bien para otras fechas que no sean el mes actual. Lo sentimos para los estadounidenses, esto utiliza el formato ISO, es decir, el primer día de la semana es lunes. Esto se hace con la opción -m para cal y la opción% V para fecha
fuente
Hice este script para generar un calendario de servicio para los equipos. Genera calendario con números de semana y les asigna nombres (simplemente round-robin). Después de imprimir la salida, solo necesita copiarla en Excel y hacer "texto a columna" por; y una vez más realice "texto a columna" en la primera columna usando la opción "fijo". El beneficio de este calendario (en comparación con la orientación horizontal) es que puede usar el filtro automático (Alt + dff) y encontrar solo sus semanas.
Lo sentimos, el código es un poco desagradable ... y no hay comentarios ... pero funciona bien;)
fuente
Realmente no quiero instalar
gcal
, y no pude hacer que funcione correctamente en mi sistema. Entonces, sin gcal, la respuesta de funollet es de hecho la mejor solución. Simplemente lo cambié un poco para que también conserve el formato, como el resaltado del día , los colores , etc., utilizando el comando También eliminé caracteres redundantes, por lo que es adecuado como un alias, como tal:script
O reemplazar
cal
con una nueva función. Sin embargo, con esto no puedes hacer cosas comocal -3
. Obtiene las semanas correctas pero no están alineadas correctamente. Una solución simple pero no completa es verificar sical
se llama sin argumentos, así:fuente