Где “экспорт” управляет, прибывают из?

Это выделяет сегодняшнюю дату и может отобразить любой месяц через $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                
4
09.12.2012, 01:36
1 ответ

whereis не показывает Вам двоичный файл для export потому что это - встроенная оболочка. Можно найти его в странице справочника удара. Поскольку это - встроенное, не двоичный файл, оболочка не ищет PATH для него, таким образом, это будет работать независимо от текущего пути. Кстати, это - то, почему Рекомендуется использовать type для наблюдения, что выполняется, когда Вы даете команду:

$ which export
$ whereis export
$ type export
export is a shell builtin
10
27.01.2020, 20:48
  • 1
    @Kevin, Где я мог получить информацию о встроенном export. Каков другой созданный ins? –  user3539 08.12.2012, 17:54
  • 2
    Если Вы смотрите на man bash, Вы будете видеть, вероятно, посмотрите Bash ВСТРОЕННЫЕ КОМАНДЫ около вершины. –  goldilocks 08.12.2012, 17:56
  • 3
    @user3539 Вы видите весь builtins в странице справочника удара или справочнике удара. –  Kevin 08.12.2012, 17:57
  • 4
    Для документации об определенной команде удара использовать help: help export. Кроме того, type -a шоу Вы все способы, которыми найдена команда (искажать/функционировать/встроены/внешние) –  glenn jackman 08.12.2012, 20:53
  • 5
    Локально, можно просмотреть их через man bash-builtins –  yuvilio 02.01.2015, 04:04

Теги

Похожие вопросы