Могут ли имена файлов VMS объединять логические имена и подкаталоги? - PullRequest
1 голос
/ 16 марта 2012

Меня интересует очевидное ограничение гибкости использования имен файлов и логических имен (псевдонимы имен файлов в этом контексте) в VMS.У вас могут быть имена, такие как [dir] name или [.subdir] name, и вы можете комбинировать их с устройством, например dskxy: [dir] name или даже dskxy: [. Subdir] name.Затем есть логические имена, например, SYS $ LOGIN, и вы можете сформировать имена файлов, такие как SYS $ LOGIN: name.Естественным использованием этого было бы имя SYS $ LOGIN: [. Subdir], но это, кажется, не принято.Я что-то упустил или это так же негибко?

Ответы [ 2 ]

2 голосов
/ 25 мая 2012

sys $ login не является хорошим эквивалентом для «домашнего» корня, поскольку это скорее логический каталог, в который вам нужно «установить значение по умолчанию».

В случае, если вам нужно сослаться на каталоги в разделе «home», вы можете определить root / device-logic, который соответствует каталогу sys $ login.

$ define / job home $ r 'f $ str (f $ trnlnm ("sys $ login") - ".] [" - "]" + ".]") / Trans = скрыть

Обратите внимание на «.]» И «скрыть», они будут определять его как корневое устройство. Хорошо помнить, что нельзя иметь двойное логическое скрытие, поскольку CLI переводит его только один раз (таким образом вычитая ".] [" Из переведенного sys $ login). Это определяет его на «уровне работы», то есть все процессы в вашей работе будут это знать.

Наличие этого определения в вашем LOGIN.COM позволит вам ссылаться на такие вещи, как: home $ r: [mydir] эквивалентно "/ home $ r / mydir"

Надеюсь, это сделает ваш VMS более приятным.

2 голосов
/ 17 марта 2012

Действительно может расстраивать то, что SYS $ LOGIN: [. X] не анализирует. Слишком поздно в игре, чтобы подумать о том, чтобы делать то, что я имею в виду, а не то, что я говорю Политика OpenVMS заключается в том, чтобы «делать то, что я говорю, и делать это хорошо».

Это имеет смысл, если учесть, что пример соответствует неверному синтаксису:

dev:[logindir][.x]

Но это будет работать:

dev:[logindir.][x]

Тонкое, но важное различие в размещении этого "." Можно, наверное, возразить, что любой "] [" должен быть тихо отброшен, да?

Имя dskxy: [. Subdir] работает, потому что в нем вплетен текущий каталог по умолчанию. Он сопоставляется с dev: [default_dir.subdir] name

И в этом, возможно, причина того, что это никогда не менялось. Должен ли SYS $ LOGIN: [. X] включать текущий каталог по умолчанию в анализ или нет? Вы не ожидаете, но доминирующее существующее поведение OpenVMS говорит, что оно должно быть там.

Иногда вы можете обойти это, определив корневой каталог, например:

$ define / trans = скрыть sys_login dev: [default_dir.]

Теперь вы можете сказать: $ dir sys_login: [subdir]

Но сейчас не должно быть ведущего периода, а логический сам по себе ничего не делает. Для работы требуется sys_login: [000000].

Неужели я здесь не очень помогаю?

Надеюсь, это немного поможет, Hein

...