понеділок, 5 квітня 2010 р.

date - не така проста команда як здається

Побачив тут одну статтю, яка сподобалась... і вирішив я її скопіпастити ;) Отже приступимо, попутно я її перекладу на українську мову


Час від часу доводиться поправляти годинник або дізнаватися в консолі точний час - для цього, як відомо, використовується команда date. Проте у неї є безліч іншиш можливостей, про які користувачі UNIX-систем можуть і не здогадуватись. Отже ...

Просто переглянути час можна командою:

jin@aspirin:~$ date
Mon Apr 5 19:06:15 EEST 2010
jin@aspirin:~$

Щоб змінити час, необхідно з-під рута (чи за допомогою sudo) написати:

$ date MMDDhhmm

Тобто у вигляді МісяцьДеньГодинаХвилина, інше [MMDDhhmm [[CC] YY] [. Ss]] за смаком. Про це добре (і головне в самому верху) написано у man date, решта ж писалося, судячи з усього, роботами для роботів ;)

Серед функцій date є також вичислення дат. Наприклад, після будуна ви хочете дізнатись, яке число було вчора:


jin@aspirin:~$ date --date="yesterday" +%F
2010-04-04
jin@aspirin:~$ date --date="1 days ago" +%F
2010-04-04

Або, скажімо, яке число буде в неділю через два тижні:




jin@aspirin:~$ date --date="next sunday 2 week"
Sun Apr 25 00:00:00 EEST 2010

Якщо спеціально не обумовлено термін, то назви днів тижня командою date будуть сприйматися як найближчі. Наприклад, дізнатися про дату найближчої тяпниціп'ятниці:


jin@aspirin:~$ date --date="friday"
Fri Apr  9 00:00:00 EEST 2010

Той же результат ви отримаєте, якщо додасте до дня тижня слово this тобто
jin@aspirin:~$ date --date="this friday"
Fri Apr  9 00:00:00 EEST 2010

Минулі дні тижня вказуються за допомогою ключового слова last наприклад, яке число було минулої п'ятниці:


jin@aspirin:~$ date --date="last friday"
Fri Apr  2 00:00:00 EEST 2010

Думаю, що це гарний привід ще раз за чаркою чаю почитати man date українською, російською чи англійською.

А ще можна дивитися не лише дати, а і календарик ;) Для цього є чудова команда cal - без параметрів вона видасть календар на поточний місяць:


jin@aspirin:~$ cal
     April 2010    
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  
                   
jin@aspirin:~$

Просто і зі смаком. Якщо ж вам потрібен календар на рік:


jin@aspirin:~$ cal 2010
                             2010                             

      January               February               March       
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                1  2      1  2  3  4  5  6      1  2  3  4  5  6
 3  4  5  6  7  8  9   7  8  9 10 11 12 13   7  8  9 10 11 12 13
10 11 12 13 14 15 16  14 15 16 17 18 19 20  14 15 16 17 18 19 20
17 18 19 20 21 22 23  21 22 23 24 25 26 27  21 22 23 24 25 26 27
24 25 26 27 28 29 30  28                    28 29 30 31        
31                                                             
       April                  May                   June       
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
             1  2  3                     1         1  2  3  4  5
 4  5  6  7  8  9 10   2  3  4  5  6  7  8   6  7  8  9 10 11 12
11 12 13 14 15 16 17   9 10 11 12 13 14 15  13 14 15 16 17 18 19
18 19 20 21 22 23 24  16 17 18 19 20 21 22  20 21 22 23 24 25 26
25 26 27 28 29 30     23 24 25 26 27 28 29  27 28 29 30        
                      30 31                                    
        July                 August              September     
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
             1  2  3   1  2  3  4  5  6  7            1  2  3  4
 4  5  6  7  8  9 10   8  9 10 11 12 13 14   5  6  7  8  9 10 11
11 12 13 14 15 16 17  15 16 17 18 19 20 21  12 13 14 15 16 17 18
18 19 20 21 22 23 24  22 23 24 25 26 27 28  19 20 21 22 23 24 25
25 26 27 28 29 30 31  29 30 31              26 27 28 29 30     
                                                               
      October               November              December     
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
                1  2      1  2  3  4  5  6            1  2  3  4
 3  4  5  6  7  8  9   7  8  9 10 11 12 13   5  6  7  8  9 10 11
10 11 12 13 14 15 16  14 15 16 17 18 19 20  12 13 14 15 16 17 18
17 18 19 20 21 22 23  21 22 23 24 25 26 27  19 20 21 22 23 24 25
24 25 26 27 28 29 30  28 29 30              26 27 28 29 30 31  
31                                                             
jin@aspirin:~$


Календар на місяць можна приготувати так: cal 05 2010 видасть календар на травень 2010 року.


jin@aspirin:~$ cal 05 2010
      May 2010     
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              
jin@aspirin:~$

Окрім cal існує також ncal, який виводить "вертикальний" календар, на зразок


jin@aspirin:~$ ncal
    April 2010
Mo     5 12 19 26  
Tu     6 13 20 27  
We     7 14 21 28  
Th  1  8 15 22 29  
Fr  2  9 16 23 30  
Sa  3 10 17 24     
Su  4 11 18 25     
jin@aspirin:~$

До речі, вивід цієї команди дуже добре вставляється в Inkscape і далі можна швидко накидати простий календар для щоденника.

Пост основан на материалах ЛинСовета и конкретно на этом посте ув.тов. bliznezz.
Спасибо ув.тов. Minoru за напоминание про ncal.

Я ж у свою чергу скопіпастив статтю із Записки дебианщика, нагло скориставшись вспедозволеністю в інтернеті, проте зилишив лінк, як і просив автор скопіпащеного допису

PS: перевіряв на своїй Linux-базованій системі, але повинно працювати і на інших UNIX-like ОС

UPD: тестував у Debian, Ubuntu, SLES та OS X


mba01:~ jin$ ncal 2013
                                  2013
    Січня             Лютого            Березня           Квітня
пн     7 14 21 28        4 11 18 25        4 11 18 25     1  8 15 22 29
вт  1  8 15 22 29        5 12 19 26        5 12 19 26     2  9 16 23 30
ср  2  9 16 23 30        6 13 20 27        6 13 20 27     3 10 17 24
чт  3 10 17 24 31        7 14 21 28        7 14 21 28     4 11 18 25
пт  4 11 18 25        1  8 15 22        1  8 15 22 29     5 12 19 26
сб  5 12 19 26        2  9 16 23        2  9 16 23 30     6 13 20 27
нд  6 13 20 27        3 10 17 24        3 10 17 24 31     7 14 21 28
    Травня            Червня            Липня             Серпня
пн     6 13 20 27        3 10 17 24     1  8 15 22 29        5 12 19 26
вт     7 14 21 28        4 11 18 25     2  9 16 23 30        6 13 20 27
ср  1  8 15 22 29        5 12 19 26     3 10 17 24 31        7 14 21 28
чт  2  9 16 23 30        6 13 20 27     4 11 18 25        1  8 15 22 29
пт  3 10 17 24 31        7 14 21 28     5 12 19 26        2  9 16 23 30
сб  4 11 18 25        1  8 15 22 29     6 13 20 27        3 10 17 24 31
нд  5 12 19 26        2  9 16 23 30     7 14 21 28        4 11 18 25
    Вересня           Жовтня            Листопада         Грудня
пн     2  9 16 23 30     7 14 21 28        4 11 18 25        2  9 16 23 30
вт     3 10 17 24     1  8 15 22 29        5 12 19 26        3 10 17 24 31
ср     4 11 18 25     2  9 16 23 30        6 13 20 27        4 11 18 25
чт     5 12 19 26     3 10 17 24 31        7 14 21 28        5 12 19 26
пт     6 13 20 27     4 11 18 25        1  8 15 22 29        6 13 20 27
сб     7 14 21 28     5 12 19 26        2  9 16 23 30        7 14 21 28
нд  1  8 15 22 29     6 13 20 27        3 10 17 24        1  8 15 22 29
mba01:~ jin$ uname -a
Darwin mba01 12.2.1 Darwin Kernel Version 12.2.1: Thu Oct 18 16:32:48 PDT 2012; root:xnu-2050.20.9~2/RELEASE_X86_64 x86_64
mba01:~ jin$ 

1 коментар: