TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #396 9.95K
Чипи-чипи, чапа-чапа. Привет, на скрине 🚫некий Linux бедолага очень обрадовался, когда нашел пасхалку в команде date. Этакий нигде недокументированный аргумент.

date --iso=seconds


Ну да, если запросить help либо глянуть в гуглах, такая конструкция нигде не упоминается.

Молодец чо. НО, если бы он знал про функцию getopt_long, то вряд ли сделал открытие. Ща расскажу в чем прикол.

Короче, куча программ и утилит используют функцию getopt_long для перебора командной строки. И эта функция распознает сокращения в длинных аргументах и опциях.

Функция getopt_long входит в состав пакета GNU C (glibc)


Собственно вот оригинальная команда:

date --iso-8601=seconds


Но если пропустить её через getopt_long, получим ту самую «пасхалку»:

date --iso=seconds


✔️ Еще примеры для понимания:

1. nano --smart --book
2. ls --hyper --show
3. du --one --human --sum


1. --smarthome --bookstyle
2. --hyperlink --show-control-chars
3. --one-file-system --human-readable --summarize


Понял в чем прикол? Но это еще не всё!

Утилиты из состава пакета coreutils, поддерживают сокращения аргументов и опций. Смотри:

for i in d h m s n; do date -I"$i"; done

2024-05-14
2024-05-14T09+00:00
2024-05-14T09:59+00:00
2024-05-14T09:59:37+00:00
2024-05-14T09:59:37,850707267+00:00


-Id == -Idate
-Ih == -Ihours
-Im == -Iminutes
-Is == -Iseconds
-In == -Ins


Аналогично с длинными опциями:

for i in d h m s n; do date --iso="$i"; done

2024-05-14
2024-05-14T10+00:00
2024-05-14T10:01+00:00
2024-05-14T10:01:57+00:00
2024-05-14T10:01:57,460027853+00:00


--iso=d == --iso-8601=date
--iso=h == --iso-8601=hours
--iso=m == --iso-8601=minutes
--iso=s == --iso-8601=seconds
--iso=n == --iso-8601=ns


Ну и на примере ls и sort:

ls --col=al | cat


--col=al == --color=always


printf '%s\n' {20..1} | sort --so=n


--so=n == --sort=numeric


Вся эта байда с сокращением, реализуется с помощью функций из библиотеки Gnulib, которые в свою очередь опираются на функции glibc.

Что имеем? Не нужно искать пасхалки, там где их нет.

Такие дела!

tags: #linux
—
🔔 @bashdays
More from @bashdays
  1. Sep 29, 2026Самый жаркий холивар в команде — это не systemd, а какие заказать роллы на всю команду. Од…
  2. Sep 24, 2026Post #1565
  3. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
  4. Sep 22, 2026Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой сто…
  5. Sep 15, 2026Всем привет, с вами TagdTagd. И это вторая часть. Практическая. С первой частью можешь озн…
  6. Sep 11, 2026🤖 DevOps в эпоху AI трансформации: что работает уже сейчас! 17 сентября Сбер собирает Dev…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →