Intereting Posts
Что представляют собой все изображения на передней панели «Руководства по системному администрированию Unix и Linux»? Как заставить символы unicode и шрифты TrueType работать в xterm / uxterm? Когда полезно использовать «grep – SOMEPATTERN»? Как перезаписать ярлыки по умолчанию терминала в xfce? Как я могу заполнить массив в цикле сценариев оболочки Bash Как узнать, использует ли что-то последовательный порт? Существует ли обратная команда разреза? Как я могу автоматически определить логин пользователя? cifs-mount с несколькими общими папками на сервере Windows Почему печать работает с awk, но с эхом нет? Не могу загрузиться ни на одной ОС Как писать повторяющиеся строки свободной формы в файл, так же быстро, как «dd»? Как отлаживать разрешения файловой системы? Постоянное сохранение команды в истории bash Выполнение арифметики с плавающей запятой в определениях переменных сценария оболочки

Есть ли одна '03 зарегистрированная UNIX, которая не может делать rm -foo в этот момент?

Я пытаюсь развеять эту неопределенность, я имею об использовании двойной тире (два дефиса, -) в качестве конца разделителя опций (в отличие от длинного опционного префикса ). Возможно, возникла некоторая путаница, когда кто-то прочитал, что длинные варианты – это соглашение GNU, а длинные варианты начинаются с -- . Но это просто не связано с окончанием разделителя опций .

Использование которых полностью соответствует стандарту IEEE Std 1003.1, 2013. Руководство по использованию синтаксиса 10 :

Первый аргумент, который не является аргументом option, должен приниматься как разделитель, указывающий конец опций. Любые следующие аргументы следует рассматривать как операнды, даже если они начинаются с символа «-».

Таким образом, можно посмотреть на rm файлы для OSX (или FreeBSD ), AIX , Solaris и HPUX – известных Unix -03 зарегистрированных Unices:

  • OSX, AIX и Solaris 1 относятся к разделителю дословно в man rm
  • HPUX не обсуждает его в man rm, но имеет другие команды, которые позволяют указанному разделителю (например, touch )

Есть ли один UNIX 03 зарегистрированный продукт, который сегодня не может работать с rm -- -foo ? Это Solaris … HPUX? Могут ли они это сделать, даже если они не документируют это? Можем ли мы обобщить это на все команды на этих платформах в этот момент?


1. Руководство Solaris 11 в заключительной заметке: Если a – и a – оба отображаются в одной командной строке, вторая интерпретируется как файл. Между двумя первыми дефисами пробегает пробел. Это просто дефис или что-нибудь, что начнется с дефиса в этом контексте, который будет интерпретироваться как файл?

От Solaris 10:

 ~ touch testfile ~ rm -- testfile ~ ls testfile testfile: No such file or directory ~ touch testfile ~ rm -- -f testfile -f: No such file or directory ~ ls testfile testfile: No such file or directory ~ rm - - -f testfile -: No such file or directory -f: No such file or directory testfile: No such file or directory ~ 

Поэтому, чтобы ответить на ваш вопрос, в Solaris 10, если второй экземпляр начинается с дефиса, он рассматривается как файл.