Я видел много команд, которые принимают «синтаксис BSD», а также их стандартный синтаксис. Возьмите ps
команду для одного примера:
To see every process on the system using standard syntax:
ps -e
ps -ef
ps -eF
ps -ely
To see every process on the system using BSD syntax:
ps ax
ps axu
Так в чем же разница между этими двумя маршрутами? Вообще, когда они говорят в синтаксисе BSD, какие элементы я должен помнить? Этот синтаксис только для тех команд, которые они есть в BSD?
command-line
syntax
Мохаммед Реза Резвани
источник
источник
ps
Исследовать исторические различия между тем, как системы со временем внедряют optargs, - значит стоять на краю пропасти. Человек не должен был знать.Ответы:
В чем разница между MS Office и LibreOffice? Между Firefox и Chrome?
Они делают примерно то же самое, но они от разных людей с немного разными целями.
Возможно, лучший вопрос: почему в дистрибутивах BSD, Linux, OSX и Unix используется так много команд? Это сводится к соответствию POSIX . POSIX - это набор стандартов для Unix-подобных операционных систем; в нем указывается базовый API, команды и как эти команды должны работать.
В случае
ps
(обусловленной POSIX команды) требуются определенные аргументы. К ним относятся эти BSD. Все производные от POSIX команды имеют свои собственные справочные страницы, но они нуждаются в отдельной установке. Дляps
:Так почему же BSD не использует наш
ps
(или наоборот)?ps
пакет (procps
смdpkg -S $(which ps)
) является вилкой из другогоprocps
пакета . Оба они имеют лицензию GPL. Это несовместимо с лицензией BSD, поэтому не может быть включено туда. ( Мы могли бы включить BSD, но не обязательно).ps
довольно специфично для ядра. Я считаю, что они технически несовместимы.А как насчет других приложений?
Большинство команд для соответствия POSIX приходят из
coreutils
пакета Ubuntu . Этот пакет представляет GNU в GNU / Linux и также имеет лицензию GPL. BSD выпускает свои собственные BSD-совместимые версии с лицензией, которые соответствуют POSIX, но не обязательно полностью совпадают с их аналогами GNU.ps
это не единственная команда POSIX, которая не является GNU . Есть множество из них.Как я понимаю, почему они должны быть? Они разными людьми за очень, очень долгое время. Это короткий ответ здесь.
источник
Это восходит к нескольким извилистой истории Unix (Википедия имеет упрощенную схему , которая далека от завершения). В частности, какое-то время существовало два основных направления: System V, разработанная AT & T, и BSD, разработанная в Калифорнийском университете в Беркли. Это было в начале 1980-х, задолго до Linux (1991), не говоря уже об Ubuntu (2004). Зачастую эти два потока принимали разные решения, и даже сегодня вы иногда найдете ссылки на варианты или функции «System V» и «BSD».
Эта
ps
команда восходит к одному из первых выпусков Unix (ее не было в версии 1, самая ранняя страница руководства, которую я могу найти в Интернете, относится к версии 5 (с.94) в 1974 году). В то времяps
просто было несколько вариантов, напримерps a
, отображал бы все процессы, а не только пользователя, иps x
отображал процессы без присоединенного терминала. Вы заметите, что параметры не начинаются с-
: в то время соглашение об использовании-
параметров не было почти систематическим, как сегодня, это было в основном для команд, которые принимали имена файлов в качестве обычных аргументов.Со временем различные направления Unix расширились
ps
и получили еще больше возможностей. Вариант BSD решил сохранить исходный синтаксис без лидирующего-
,a
иx
до сих пор существует сегодня. Вариант System V решил принять синтаксическое соглашение-
для опций и использовал разные буквы (например,ps -e
для отображения всех процессов). Oracle (ранее Sun) Solaris является примером варианта System V (Solaris также поставляет отдельныйps
исполняемый файл в каталоге, который не используется по умолчаниюPATH
для приложений, написанных с учетом BSD).Когда Linux появился на сцене, люди, которые его использовали, часто имели опыт работы с тем или иным вариантом Unix. Иногда Linux делал что-то в стиле System V, иногда в BSD, иногда по-своему, либо исходя из технических соображений, либо исходя из опыта и вкусов тех, кто реализовывал эту функцию.
ps
Команда Linux начиналась с BSD-подобных опций, например,ps ae
для отображения всех процессов и включения переменных среды в листинг. Со временем (в конце 1990 - х годов, я не помню точно когда), авторы для Linuxps
добавлены опции для людей , которые были использованы для System V. Таким образом , сегодня либоps ax
илиps -e
перечислит все процессы под Linux, и есть даже переменная окружения (PS_PERSONALITY
) сделатьps
вести себя более как различные старые Unix-варианты Unix, ради старых сценариев и людей с заданными привычками.Людям, которые использовали несколько вариантов Unix, не нравилось, что им придется изменять свои программы и свои привычки при переходе с одного варианта Unix на другой. Поэтому была предпринята попытка стандартизировать подмножество функций. Это привело к стандарту POSIX (ведомому IEEE ), которому в целом следует Ubuntu. Первое издание, в которое входила
ps
команда, вышло в 1992 году; этот не доступен онлайн, но выпуск 1997 года . Для этойps
команды, как и во многих других случаях, POSIX принял System V способ действий.В
ps
стандартном синтаксисе командный является один , который совместит с System V и POSIX. Кроме того, можно сказать, что этот синтаксис является стандартным, поскольку он использует-
параметры по умолчанию. Некоторые параметры существуют только в одном из двух синтаксисов; к счастью, они могут быть смешаны в одном вызове.Вообще говоря, «BSD» против «System V» не имеет никаких технических последствий. Это относится к истории: «BSD» - это тот выбор, который BSD сделала в 1980-х годах и около того, «System V» - это любой выбор AT & T и их партнеров (особенно Sun). «POSIX» - это тот выбор, который сделал комитет по стандартизации IEEE.
источник
«Стандартный» синтаксис, на который вы ссылаетесь, на самом деле является операционной системой GNU, которая была разработана в 1980-х годах. Основанные на GNU утилиты и философия были объединены с ядром Linux для разработки большинства современных дистрибутивов Linux (включая Ubuntu).
Операционная система BSD была разработана в конце 1970-х годов, независимо от GNU, а позже разветвлена до современных версий, таких как FreeBSD или OpenBSD.
И GNU, и BSD вдохновлены Unix, и у них немного другая философия, синтаксис и т. Д.
источник
Coreutils в Ubuntu - это набор приложений, поддерживаемых GNU, который включает в себя множество вещей (посмотрите на apt-cache show coreutils). BSD имеют свои собственные версии (GNU не совместима с лицензией BSD).
источник