Проблемы с символами DCL

Я использую VMS/OpenVMS уже более 30 лет. Я нашел кое-что интересное вчера.

В моих настройках всегда есть символы PU*RGE :== PURGE/CONF и DE*LETE :== DELETE/CONF. Это делается для того, чтобы избежать случайного удаления и очистки.

Однако один из моих клиентов при очистке файлов случайно набрал PURGEE вместо PURGE, и это очистило все более ранние версии файлов в его каталоге без запроса подтверждения.
Когда он упомянул об этом мне, я также попытался с PURGEA, PURGEB и т. д. Все они игнорировали мой символ PU*RGE и удаляли файлы без подтверждения.

Кто-нибудь замечал такое поведение раньше и/или знает ли кто-нибудь, как это можно преодолеть?


person user3447891    schedule 21.03.2014    source источник
comment
Еще одна причина последовать совету Хайна относительно использования ваших собственных уникальных символов — это избежать травмы командными процедурами. Вы хотите, чтобы ваше странное определение DE*LETE изменило поведение каждой командной процедуры, использующей DELETE? Вы хотите, чтобы вас наказали защитными командными процедурами, которые удаляют все глобальные символы, чтобы не попасться на какую-то глупость, а затем оставляют вас без хаков? Лучше придумать свои команды. Когда вы обнаружите, что находитесь в другой системе VMS, в которой их нет, она должна жаловаться, а не делать что-то, чего вы не ожидаете.   -  person HABO    schedule 23.03.2014
comment
Кстати... Я только вчера добавил тег "DCL" в свой список наблюдения. Получил удар в тот же день. Каковы шансы для тега, который использовался 21 раз за 4 года (примерно 1 из 50 :-). Иначе я бы никогда этого не увидел. В любом случае, я добавил тег [openvms] в эту тему.   -  person Hein    schedule 23.03.2014


Ответы (1)


Именно для борьбы с «полезными перекрывающимися определениями командных глаголов» этот первородный грех в DCL был оставлен на месте. Сделайте «ПК» «Очистить/Подтвердить» и «DL» для «Удалить/ЖУРНАЛ», но не связывайтесь с моими ОЧИСТИТЬ, РЕДАКТИРОВАТЬ и УДАЛИТЬ.

Я хочу использовать DELETE/SYMBOL и EDIT/EDT, не спотыкаясь! Поэтому я использую EDITx/EDT и так далее, когда не «дома».

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

Насколько я знаю, поведение недокументировано. Немного истории в этом пространстве...

http://h71000.www7.hp.com/wizard/wiz_6372.html http://h71000.www7.hp.com/wizard/wiz_3614.html

пример плохого поведения:

$ delete := delete/log
$ delete *.tmp;*
%DELETE-I-FILDEL, QA.TMP;1 deleted (15 blocks)
%DELETE-I-FILDEL, X.TMP;5 deleted (3 blocks)
:
%DELETE-I-TOTAL, 16 files deleted (51 blocks)
$ delete/symb xxx
%DCL-I-IGNQUAL, qualifiers appearing before this item were ignored
 \SYMB\
person Hein    schedule 22.03.2014