Я хотел бы знать, какие стандартные команды доступны в каждой системе Linux.
Например, если вы получили Debian / Ubuntu / Redhat / Suse / Arch / Slackware и т. Д., Вы всегда найдете там такие команды, как:
cd, mkdir, ls, echo, grep, sed, awk, ping и т. д.
Я знаю, что некоторые из упомянутых команд встроены в оболочку, а другие нет, но они все еще всегда есть (основываясь на моих знаниях и опыте).
С другой стороны, такие команды, как gawk, parted, traceroute и другие довольно известные команды, по умолчанию не установлены в разных дистрибутивах Linux.
Я сделал разные поиски в Интернете, но я не нашел прямого ответа на это.
Цель состоит в том, чтобы я хотел создать сценарий оболочки, и он должен выполнить некоторые проверки работоспособности, если команды, используемые в сценарии, доступны в системе. Если нет, он должен предложить пользователю установить необходимые двоичные файлы.
Ответы:
К сожалению, нет никакой гарантии, что что-то будет доступно.
Тем не менее, большинство систем будет иметь GNU coreutils . Это само по себе обеспечивает около 105 команд. Вы, вероятно, можете положиться на них, если только это не встроенная система, которая может использовать BusyBox .
Вы также можете полагаться на bash , cron , GNU findutils , GNU grep , gzip , iproute2 , iputils , man-db , module-init-tools , net-tools , passwd ( passwd или shadow ), procps , tar и util- линукс .
Обратите внимание, что некоторые программы могут иметь некоторые различия между дистрибутивами. Например,
/usr/bin/awk
может быть gawk или mawk ./bin/sh
может быть тире или bash в режиме POSIX . В некоторых старых системах/usr/bin/host
синтаксис не совпадает с синтаксисом версии BIND , поэтому может быть лучше использовать dig .Если вы ищете какие-то стандарты, в Linux Standard Base определены некоторые распространенные программы , но не во всех дистрибутивах утверждается, что они соответствуют стандарту, а некоторые делают это только при установке дополнительного пакета совместимости LSB. Как пример этого, некоторые системы, которые я видел, не входят
lsb_release
в установку по умолчанию.Кроме того, может быть полезен список команд, стандартизированный POSIX .
Другой подход к вашей проблеме заключается в том, чтобы упаковать ваш скрипт с использованием инструментов упаковки каждого дистрибутива (например, RPM для Red Hat, DEB для Debian и т. Д.) И объявить зависимость от любых других программ или пакетов, которые вам нужны. Это небольшая работа, но это означает, что пользователи увидят более дружеское сообщение об ошибке, сообщающее им не только о том, чего не хватает, но и о том, какие пакеты им нужно установить.
Больше информации:
источник
:)
В не встроенных системах Linux вы можете рассчитывать на большинство утилит GNU:
find
иxargs
, не обязательноlocate
иupdatedb
)плюс пакет util-linux и пакет procps . Обратите внимание, что
/bin/sh
это не всегда bash, это может быть оболочка с меньшим количеством функций, таких как одна из множества вилок пепла .Standard Base Linux определяет набор общих утилит , с функциями , которые , как ожидаются , на все соответствующие системы. Вы также можете ожидать большинство утилит, указанных в POSIX . Заметным исключением является то
pax
, что оно не является частью установки по умолчанию для многих дистрибутивов.Если вы хотите, чтобы все было просто, запросите установку
lsb_release
пакета. Многие дистрибутивы имеют такой пакет, который включает все зависимости, требуемые LSB.Во встроенной системе все ставки отключены. Встраиваемые Linux-системы обычно работают на BusyBox , но многие утилиты и функции не являются обязательными, поэтому вы можете быть уверены, что получите очень мало.
источник
Существует большинство команд, если не все дистрибутивы Linux, и в этом отношении также будут предоставлены дистрибутивы Unix. Это обязательные команды, указанные в стандарте POSIX .
Большинство команд , которые цитируют (
cd
,mkdir
,ls
,echo
,grep
,sed
,awk
и т.д.) из него. Исключением являетсяping
WhiteWinterWolf, правильно прокомментированный.источник
ping
не является частью POSIX ...ping
,ifconfig
,telnet
и т.д. , не являются частью этого стандарта (ни какой - либо другой AFAIK, они просто достичь совместимости с «историческими реализациями» на основе максимальных усилий).