Получить дату последнего дня последнего месяца в сценарии оболочки

su ( s witch u ser или s ubstitute u ser) позволяет переключать пользователя. su в основном запускает другой экземпляр оболочки с привилегиями предполагаемого пользователя.По умолчанию он переключает вас на пользователя root , если мы хотим переключить конкретного пользователя, нам нужно передать пользователя следующим образом:

$ su bob  # switches to bob (requires bob's password)

su - означает, что переменные среды будут сброшены на root и su означает переменные среды от имени старого пользователя.

например: домашний каталог root, если вы используете su - , или домашний каталог старого пользователя, если вы используете su .

sudo ( s uper u ser do ) - это утилита командной строки, которая позволяет пользователям запускать программы с привилегиями безопасности другого пользователя с помощью по умолчанию - суперпользователь, т.е. root . Он использует файл конфигурации / etc / sudoers , в котором перечислены пользователи, имеющие права на определенные действия.

sudo следует читать как / ˈsuːduː / . синтаксис команда sudo то есть s witch u ser и выполняют эту команду.

  • su эквивалентно sudo -i и имитирует вход в учетную запись root. Ваш рабочий каталог будет / root , и он будет читать root's .profile и т. Д. Запрос изменится с $ на #, указывая, что у вас есть root-доступ.

  • sudo -s запускает оболочку от имени пользователя root, но не меняет ваш рабочий каталог .

  • sudo bash где bash - команда для запуска с sudo . Эта команда запускает bash от имени суперпользователя.

  • С помощью sudo можно регистрировать все, что кто-то делает.
  • Использование sudo предотвращает необходимость знания пользователем пароля root.
  • Используя sudo , мы можем ограничить команды, которым разрешено запускать.
11
16.08.2015, 22:33
2 ответа

Попробуйте использовать этот код

date -d "-$(date +%d) days  month" +%Y-%m-%d
-1
27.01.2020, 19:56

Вот версия, которая работает в Mac OS и использует утилиту BSD date :

date -v1d -v-1d +% d% b% Y

Аргументы применяются по порядку. Вы можете представить себе, что дата передается по конвейеру от одного аргумента к другому. Например:

  • Начать с текущей даты ( date ) -> 2017-03-06
  • Установите для этой даты 1-й день месяца ( -v1d ) -> 2017-03-01
  • Вычтите из этого один день ( -v-1d) -> 2017-02-28
  • Отформатируйте дату ( +% d% b% Y ) -> 28Feb2017

Вы можете перейти на любое количество месяцев вперед или назад, используя date -v-1m -v1d -v-1d , заменив -1m на количество месяцев назад или вперед ( + 1m ), которое вы хотите.

Это общий ответ. Этот вопрос конкретно касается дат относительно начальной даты. Утилита Mac OS / BSD date не позволяет указывать дату для начала, но вы можете установить каждый элемент даты индивидуально:

date -v2015y -v1m -v15d -v1d -v-1d +% d% b% Г -> 31 декабря 2014

2
27.01.2020, 19:56

Теги

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