Это выделяет сегодняшнюю дату и может отобразить любой месяц через $1
в форме: YYYY-mm-dd
... Это принимает значение по умолчанию на сегодняшнюю дату
Это настраивается для показа недельных чисел ISO, и первый рабочий день, будучи понедельником.
#!/bin/bash
# Input reference date is expected in 'YYYY-mm-dd' format
#
today=($(date '+%Y %m %d')); Y=0; m=1; d=2 # establish today's date
[[ -z $1 ]] && ref=(${today[@]}) || ref=(${1//-/ }) # get input date
dNbA=$(date --date="$(date +%Y-%m-01)" +'%u') # day-number of 1st day of reference month
today[m]=$((10#${today[m]})); ref[m]=$((10#${ref[m]})) # remove leading zero (octal clash)
today[d]=$((10#${today[d]})); ref[d]=$((10#${ref[d]})) # remove leading zero (octal clash)
nxtm=$(( ref[m]==12 ?1 :ref[m]+1 )) # month-number of next month
nxtY=$(( ref[m]==12 ?ref[Y]+1:ref[Y] )) # year-number of next month
nxtA="$nxtY-$nxtm-1" # date of 1st day of next month
refZ=$(date --date "$(date +$nxtA) yesterday" +%Y-%m-%d) # date of last day of reference month
days=$(date --date="$refZ" '+%d') # days in reference month
h1="$(date --date="${ref[Y]}-${ref[m]}-${ref[d]}" '+%B %Y')" # header 1
h2="Mo Tu We Th Fr Sa Su" # header 2
printf " %$(((${#h2}-${#h1}-1)/2))s%s\n" " " "$h1"
printf " %s\n" "$h2"
# print week rows
printf "%2d " "$((10#$(date -d "$(date +${ref[Y]}-${ref[m]}-01)" +'%V')))" # week-number (of year) with suppressed leading 0
printf "%$(((dNbA-1)*3))s" # lead spaces (before start of month)
dNbW=$dNbA # day-number of week
dNbM=1 # day-number of month
while ((dNbM <= days)) ;do
if (( today[Y]==ref[Y] &&
today[m]==ref[m] &&
today[d]==dNbM )) ;then
printf "\x1b[7m%2d\x1b[0m " "$dNbM" # highlight today's date
else
printf "%2d " "$dNbM"
fi
((dNbM++))
if ((dNbW >=7)) ;then
cdate=$((10#$(date -d "$(date +${ref[Y]}-${ref[m]}-$dNbM)" +'%V'))) # remove leading zero (octal clash)
printf "\n%2d " "$cdate" # week-number of year
dNbW=0
fi
((dNbW++))
done
printf "%$(((8-dNbW)*3))s\n" # trailing spaces (after end of month)
Вот дисплей этого месяца (с 20
выделенный)
January 2012
Mo Tu We Th Fr Sa Su
52 1
1 2 3 4 5 6 7 8
2 9 10 11 12 13 14 15
3 16 17 18 19 20 21 22
4 23 24 25 26 27 28 29
5 30 31
whereis
не показывает Вам двоичный файл для export
потому что это - встроенная оболочка. Можно найти его в странице справочника удара. Поскольку это - встроенное, не двоичный файл, оболочка не ищет PATH
для него, таким образом, это будет работать независимо от текущего пути. Кстати, это - то, почему Рекомендуется использовать type
для наблюдения, что выполняется, когда Вы даете команду:
$ which export
$ whereis export
$ type export
export is a shell builtin
export
. Каков другой созданный ins? – user3539 08.12.2012, 17:54man bash
, Вы будете видеть, вероятно, посмотрите Bash ВСТРОЕННЫЕ КОМАНДЫ около вершины. – goldilocks 08.12.2012, 17:56help
:help export
. Кроме того,type -a
шоу Вы все способы, которыми найдена команда (искажать/функционировать/встроены/внешние) – glenn jackman 08.12.2012, 20:53man bash-builtins
– yuvilio 02.01.2015, 04:04