Tidakkah Anda hanya menyukainya ketika dua perintah masing-masing melakukan satu hal yang Anda inginkan tetapi juga tidak keduanya?
Inilah yang cal
dilakukan. Pemformatan yang bagus. Tidak memiliki angka minggu:
$ 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
Inilah yang ncal
dilakukan. Pemformatan yang aneh, tetapi dengan angka minggu:
$ 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
Jenis output yang saya inginkan, sebenarnya persilangan antara cal
dan 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
sumber
sumber
gcal --starting-day=Monday --with-week-number
lebih sesuai dengan kebutuhan saya namun alat ini sangat bagus.Ini menyoroti tanggal hari ini, dan dapat menampilkan bulan apa pun melalui
$1
formulir:YYYY-mm-dd
... Ini default ke tanggal hari iniIni diatur untuk menunjukkan angka minggu ISO, dan hari kerja pertama adalah hari Senin.
Ini tampilan bulan ini (dengan yang
20
disorot)sumber
08
dan09
ditafsirkan sebagai oktal bukan desimal .. Seharusnya tidak apa-apa sekarang ...Anda dapat menggunakan
nl
nomor baris (itulah tujuan program :). Tetapi Anda perlu mengekstrak minggu pertama di bulan tersebut dari suatu tempat. Itu bisa dilakukan denganncal
sendirinya:Kami menyisipkan ini sebagai parameter untuk
nl
opsi-v
(mulai nomor baris), dan kirim ke hanya nomor baris dengan angka atau spasi.Ini semua sangat rapuh. Lagi pula, jika Anda tidak akan membutuhkan
cal
opsi yang lebih canggih, itu akan berhasil. Anda bisa memasukkannya ke dalam file dan mengganti"$@"
tempat saya meletakkan2 2012
.EDIT: Tapi ini SALAH! Saya baru memperhatikan bahwa minggu pertama bulan Januari dapat memiliki nomor 52 atau 53! Jadi kita harus membuat pengecualian untuk Januari, atau cukup mengekstrak semua angka minggu dari
ncal
dan menerapkannya pada outputcal
.Ini adalah solusi yang saya pikir awalnya, tetapi saya pikir (keliru) saya akan menyederhanakannya menggunakan
nl
. Ini menggunakanpaste
, yang menggabungkan file berdampingan. Karena tidak ada file, kita harus menggunakan bashism<(...)
; itulah yang saya coba hindari."File" pertama kami akan menjadi daftar angka minggu, dengan dua baris kosong di awal:
Yang kedua, hanya output dari
cal
. Secara keseluruhan, sebagai parameter untukpaste
:Jauh lebih berantakan dan tidak kompatibel dengan yang lain. En fin ...
sumber
Hasilkan urutan minggu dengan
ncal
dan gunakanpaste
untuk memiliki kedua output berdampingan.Jika Anda tidak suka memiliki tab sebagai pembatas, tambahkan saja sesuatu seperti
sed 's/\t/ /'
Edit : lebih sederhana, tidak perlu peduli tentang tab:
sumber
cal
danncal
(pendekatan lain meniru perilaku salah satucal
atauncal
).Salah satu cara menggunakan Perl (bahasa output saya dari
cal
perintah adalah Spanyol, tapi saya harap hasilnya tidak berbeda dari bahasa Inggris):Keluaran:
Penjelasan:
sumber
cal 02 2012
? Tampaknya berhasil dalam pengujian saya.Tanpa perwakilan yang cukup untuk mengomentari jawaban oleh slm, gcal dapat diinstal pada Mac OS menggunakan
brew install gcal
.(Saya menemukan jawabannya di sini terlebih dahulu, kemudian jawaban ini pada bertanya berbeda, tetapi jawaban unix tidak memiliki semua informasi yang saya butuhkan untuk menginstal pada mac.)
sumber
Berikut ini solusi saya yang lebih pendek dalam kode dan berfungsi dengan baik untuk tanggal lain dari bulan saat ini. Maaf untuk orang-orang AS, ini menggunakan format ISO, yaitu hari pertama minggu adalah Senin. Ini dilakukan dengan opsi -m untuk kal dan opsi% V untuk tanggal
sumber
Saya melakukan script ini untuk menghasilkan kalender yang sedang bertugas untuk tim. Ini menghasilkan kalender dengan angka minggu dan memberikan nama kepada mereka (hanya round-robin). Setelah output dicetak, Anda hanya perlu menyalinnya ke excel dan melakukan "teks ke kolom" dengan; dan sekali lagi melakukan "teks ke kolom" pada kolom pertama dengan menggunakan opsi "tetap". Manfaat dari kalender ini (dibandingkan dengan orientasi horisontal) adalah Anda dapat menggunakan filter otomatis (Alt + dff) dan hanya menemukan minggu-minggu Anda.
Maaf, kode agak jahat ... dan tidak ada komentar ... tetapi berfungsi dengan baik;)
sumber
Saya tidak benar-benar ingin menginstal
gcal
, dan saya tidak bisa membuatnya berfungsi dengan baik pada sistem saya. Jadi tanpa gcal, jawaban funollet memang solusi terbaik. Saya baru saja mengubahnya sedikit sehingga juga mempertahankan format seperti highlight hari , warna dll menggunakan perintah. Saya juga menghapus karakter yang berlebihan, sehingga cocok sebagai alias, seperti:script
Atau ganti
cal
dengan fungsi baru. Namun, dengan ini Anda tidak dapat melakukan hal-hal sepertical -3
. Anda mendapatkan minggu yang benar tetapi mereka tidak selaras dengan benar. Solusi sederhana namun tidak lengkap adalah memeriksa apakahcal
dipanggil tanpa argumen, seperti:sumber