Если вы находитесь в bash
(, а не вsh
)и вам НЕ нужна точность ниже -секунды, вы можете вообще пропустить вызов date
и сделать это без порождения каких-либо дополнительных процессов, без необходимости разделения комбинированный вывод и без необходимости захвата и анализа вывода каких-либо команд:
# SECONDS is a bash special variable that returns the seconds since set.
SECONDS=0
mycmd <infile >outfile 2>errfile
DURATION_IN_SECONDS=$SECONDS
# Now `$DURATION_IN_SECONDS` is the number of seconds.
Просто. Это НЕ возможности пользователя. Это возможности самого себя. Так что вещи, которые он унаследовал от своего родителя.
Я помню, (несколько лет назад ), участвуя в обсуждении capsh
, мы пытались выяснить, для чего он нужен. Мы решили, что это почти бесполезно, обсуждение привело к изобретению возможностей окружения (Унаследованных и эффективных ). Я не пробовал capsh
с момента существования эмбиентных возможностей. Они нужны только при создании sudo
возможностей (, таких какcapsh
). Или когда-нибудь более специализированная обертка.
capsh
— это инструмент для изучения того, как использовать и проверять возможности и предложения API libcap
. Вы можете использовать его для отладки того, что происходит при типах вопросов.
Важным свойством capsh
является то, что аргументы оцениваются строго слева направо. Итак, когда вы пытаетесь выяснить, почему что-то не заканчивается в желаемом состоянии, вы можете вставить аргумент --print
, чтобы понять это.:--print
просто выводит текущее состояние выполняющегося процесса capsh
.
Вы должны думать об этом как о своего рода швейцарском -армейском -ноже с функциями, связанными с возможностями. Дерево сборки libcap
использует его вquicktest.sh
для проверки того, что библиотека все еще работает с современными ядрами и т. д.Этот сценарий содержит целую кучу проработанных примеров и ожидаемых результатов использования libcap
и функций ядра.
Это включает в себя возможности Ambient, а также не -стандартные режимы работы ядра (, также известные какlibcap
режимы).
Например, из-за того, как работает ядро, эти две последовательности дают разные результаты:
$ sudo capsh --iab=^cap_dac_override --user=$(whoami) --print
$ sudo capsh --user=$(whoami) --iab=^cap_dac_override --print
Вы можете автоматизировать ответ на вопрос Повышает ли это окружающий бит примерно так:
$ sudo capsh --user=$(whoami) --iab=^cap_dac_override --has-a=cap_dac_override && echo yes
Кроме того, если вы хотите исследовать мир так, как его представлял проектный комитет POSIX.1e , вы можете попробовать что-то вроде этого:
$ sudo capsh --mode=PURE1E --user=$(whoami) --