Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Podstawowe operacje na plikach i katalogach w systemie OpenVMS poprzez język poleceń DCL

W poprzednim arykule przedstawiłem podstawowe zasady wprowadzania zleceń w języku DCL (DIGITAL Command Language). Teraz chciałem pokazać podstawowe operacje na plikach i katalogach. Takie jak ich tworzenie, usuwanie, kopiowanie czy zmiana ich nazwy.

Plik jest podstawową jednostką przechowywania danych. Dla jednoznacznego określenia, identyfikacji danego pliku musi on mieć unikatową nazwę dla wszystkich plików w danej sieci.
Pełna identyfikacja pliku ma postać:WĘZEŁ::URZĄDZENIE:[KATALOG.PODKATALOG1.PODKATALOG2.(…)]NAZWA_PLIKU.TYP_PLIKU;NUMER_WERSJIgdzie:

WĘZEŁ jest nazwą komputera w sieci TCP/IP lub DECnet. Identyfikacja kończy się dwoma dwukropkami (::). Domyślnie system zakłada, że plik znajduje się w lokalnym systemie dlatego to pole wymagane jest tylko wtedy gdy plik znajduje się na innym hoście w danej sieci.

URZĄDZENIE. Termin ten odnosi się do dysku, napędu taśmowego lub innego urządzenia peryferyjnego podłączonego do komputera z systemem OpenVMS. Każde urządzenie ma unikatową nazwę która wskazuje jego lokalizację. Logiczne nazwy urządzeń ustala menedżer urządzeń. Po nazwie logicznej urządzenia (jeśli jest ona wymagana) należy wstawić pojedynczy dwukropek (:). Wartością domyślną jest zwykle dysk wybrany podczas włączenia się użytkownika do systemu lub po wybraniu zlecenia SET DEFAULT.

KATALOG (folder) – jest zawarty w nawiasach kwadratowych, a każdy podkatalog, jeśli istnieje, oddzielony jest kropką. Katalog najwyższego poziomu ma format [KATALOG]. PODKATALOG1 – katalog niższego poziomu znajdujący się w folderze nadrzędnym KATALOG ma postać [KATALOG.PODKATALOG1]. W systemie plików ODS-2 ograniczeniem jest głębokość katalogów. Można utworzyć tylko 7 podkatalogów. W nowszym systemie plików wprowadzonym w OpenVMS 7.2 zwanym ODS-5 ograniczenie to jest zniesione.

NAZWA_PLIKU. W systemie plików ODS-2 nazwa pliku może mieć maksymalnie 39 znaków, wszystkie litery zamieniane są na duże. W nowszym systemie ODS-5 ograniczenia te są zniesione.

TYP_PLIKU. Jest to rozszerzenie pliku. Jest ono poprzedzone kropką. Najbardziej popularnymi typami plików są: .COM, .EXE, .LOG, .SYS, .TXT.

NUMER_WERSJI. Jest to cecha specyficzna dla OpenVMS i niespotykana w innych systemach. Podczas tworzenia nowego pliku zostanie mu przypisany numer wersji 1. Jeśli później edytujemy ten plik i zapisujemy go ponownie to zostanie nadany mu numer wersji 2. Ważne jest że plik w wersji 1 nadal istnieje na dysku. Jeśli podczas edycji nie określimy z którą wersją pliku chcemy pracować, system pobierze najwyższy istniejący numer. Numer wersji poprzedzony jest średnikiem (;). Limit numeru wersji określony jest w trakcie tworzenia pliku lub przez system (wtedy limitem jest 32 767 wersji pliku).

Symbole wieloznaczne

Symbol gwiazdki (*) zastępuje dowolną liczbę znaków danego ciągu, a symbol procentu (%) pojedynczy znak. W polu określającym numer wersji pliku znak procentu jest niedozwolony, a gwiazdki można użyć dla zastąpienia całego pola. Sposób użycia znaków zastępczych w poszczególnych zleceniach w DCL jest ściśle związany z tymi poleceniami. W zleceniach przeszukiwania katalogów można użyć symbolu wielokropka (…) oznaczającego szukanie – począwszy od podanego katalogu – w dół. Innym znakiem specjalnym odnoszącym do katalogu jest znak minus (-), który oznacza szukanie – począwszy od podanego katalogu – w górę.

Przykłady:

$ PRINT [USER]*.TXT;*

Komenda ta powoduje wydruk wszystkich plików typu .TXT z katalogu USER nizależnie od ich nazwy i numeru wersji.

$ PRINT [USER.*]*PRAWIDLOWY.TXT;*

Komenda ta powoduje wydruk wszystkich plików typu .TXT, o dowolnym numerze wersji, o nazwach kończących się literami PRAWIDLOWY istniejących w podkatalogach o jeden poziom niższy niż USER.

$ PRINT PLIK%%%.TXT;*

Komenda ta powoduje wydruk wszystkich plików (aktualnego katalogu) typu .TXT, o dowolnym numerze wersji, mającym siedem znaków nazwy rozpoczynającej się od nazwy PLIK

$ PRINT [KATALOG…KATALOG5]PLIK.*;*

Komenda ta powoduje wydruk wszystkich plików o nazwie PLIK niezależnie od rozszerzenia i numeru wersji znajdujących się w podkatalogu KATALOG5, folderu KATALOG niezależnie od poziomu podkatalogu KATALOG5.. Tak więc mogą to być różne pliki o nazwie PLIK w różnych miejscach np.:[KATALOG.KATALOG5]PLIK.TXT;1[KATALOG.KATALOG1.KATALOG5]PLIK.LIS;2

$ PRINT [-.KATALOG3]PLIK.TXT

Komenda ta powoduje wydruk dokumentu PLIK.TXT o najwyższym numerze wersji znajdującym się w podkatalogu KATALOG3, do którego droga prowadzi przez cofnięcie się o jeden poziom wzwyż.

Wyświetlanie listy plików (polecenie DIRECTORY).

Zlecenie DIRECTORY wyświetla informacje o plikach znajdujących się w katalogu. Polecenie DIRECTORY pozwala wyświetlić nazwę, rozmiar, datę powstania i inne szczegóły plików w zależności od zastosowania kwalifikatorów. Najprostsza forma polecenia pokazuje tylko nazwę, typ i numer wersji plików znajdujących się w domyślnym, aktualnym katalogu.

Przykład:

$ DIRECTORYDirectory DKA100:[USER.PROGRAMY] RUN.EXE;1 WIX.COM;1 XYZ.EXE;2 Total of 3 files. Pierwszy wiersz pokazuje, że bieżącym katalogiem jest DKA100:[USER.PROGRAMY]. Oznacza to, że aktualnym katalogiem jest folder PROGRAMY znajdujący się w katalogu USER na dysku o nazwie DKA100. Drugi wiersz pokazuje, że w katalogu PROGRAMY znajdują się trzy pliki: RUN.EXE;1 WIX.COM;1 XYZ.EXE;2. Pliki wyświetlane są w kolejności alfabetycznej.
Polecenie DIRECTORY posiada liczne kwalifikatory dzięki którym można wyświetlić szczegółowe informacje o plikach. Powiedzmy, że chcemy zobaczyć ich wielkość i ich właściciela. Użyjemy do tego polecenia:

$ DIRECTORY /SIZE /OWNERDirectory DKA100:[USER.PROGRAMY] RUN.EXE;1 23 [USER] WIX.COM;1 128 [USER] XYZ.EXE;2 11 [USER] Total of 3 files, 162 blocks. Rozmiar pliku przedstawia się jako 512-bajtowe bloki.

Tworzenie pliku (polecenie CREATE)

Aby utworzyć plik tekstowy od podstaw najlepiej skorzystać z edytora tekstu lub użyć polecenia CREATE. W większości zastosowań wygodniejsze jest korzystanie z edytora tekstu. Pliki inne niż tekstowe są zwykle tworzone przez programy, a nie bezpośrednio przez użytkownika. Tworząc plik przy pomocy polecenia CREATE należy użyć następującej formy polecenia:

$ CREATE NAZWA_PLIKU.TYP_PLIKU

Po naciśnięciu klawisza Enter wprowadzamy tekst naszego pliku. Aby zakończyć wprowadzanie tekstu i wrócić do wiersza poleceń DCL należy przycisnąć kombinację klawiszy Ctrl/Z

Wyświetlanie zawartości pliku (polecenie TYPE)

Żeby wyświetlić zawartość pliku tekstowego należy użyć polecenia:

$ TYPE NAZWA_PLIKU.TYP_PLIKU;NUMER_WERSJI

Jeśli nie podamy numeru wersji w specyfikacji pliku system wyświetli najnowszą wersję pliku.
Zastosowanie kwalifikatora /PAGE pozwala aby wyświetlanie odbywało się kolejnymi stronami jeżeli tekst nie mieści się w całości na ekranie.

Usuwanie pliku (polecenie DELETE)

By usunąć jeden lub więcej plików należy użyć polecenia:

$ DELETE NAZWA_PLIKU.TYP_PLIKU;NUMER_WERSJI

Podczas usuwania plików należy określić numer wersji lub użyć symbolu wieloznacznego w dziedzinie wersji.

Przykłady:

$ DELETE *.TXT;*

Polecenie to usuwa wszystkie wersje, wszystkich plików typu .TXT w aktualnym katalogu.

$ DELETE *.*;*

Polecenie usuwa wszystkie pliki jakie znajdują się w aktualnym katalogu.

$ DELETE PLIK.TXT;9,;10

Polecenie usuwa 9 i 10 wersję dokumentu PLIK.TXT

Usuwanie starszych wersji plików (polecenie PURGE)

Polecenie PURGE usuwa poprzednie wersje podanego pliku. Komenda PURGE bez kwalifikatora usuwa wszystkie wersje oprócz najwyższej. Kwalifikator /KEEP pozwala zachować więcej niż najwyższą wersję pliku.

Przykład:

$ PURGE /KEEP=2 PLIK.TXT

Polecenie usuwa wszystkie wersje dokumentu PLIK.TXT oprócz dwóch najwyższych.

Ograniczenie wersji pliku

Aby kontrolować ilość wersji pliku można ustawić limit wersji dla każdego dokumentu. Powiedzmy, że ustalimy limit wersji pliku do 5. Oznacza to, że podczas tworzenia szóstej wersji tego samego pliku, najniższa jego wersja zostanie automatycznie usunięta. By ustawić limit wersji do pięciu dla danego pliku należy wydać komendę:

$ SET FILE NAZWA_PLIKU.TYP_PLIKU /VERSION_LIMIT=5

Żeby usunąć ograniczenie limitu wersji dla danego pliku wartość kwalifikatora /VERSION_LIMIT należy ustawić na zero.

Jeżeli chcemy ustawić automatyczne ograniczenie dla wszystkich przyszłych wersji wszystkich plików w danym katalogu(w naszym przypadku USER) do 5 to należy wydać polecenie:

$ SET DIRECTORY DKA100:[USER] /VERSION_LIMIT=5

Zmiana nazwy pliku (polecenie RENAME)

Zmianę nazwy pliku uzyskujemy poprzez polecenie:

$ RENAME ORYGINALNY_PLIK NOWY_PLIK

Jeżeli nie podaliśmy numeru wersji w oryginalnym pliku to zostanie zmieniony najwyższy numer wersji. Jeżeli chcemy zmienić wszystkie pierwotne wersje danego pliku wtedy należy użyć znaku (*) w miejsce numeru wersji oryginalnego pliku. Jeżeli plik dotąd nie istniał to otrzymuje numer wersji równy 1 (chyba że określimy w nazwie pliku inny numer wersji).
Jeżeli istnieje już plik o takiej samej nazwie i typie to nowy dokument otrzyma numer wersji o jeden większy, chyba że użyto kwalifikatora /NONEW_VERSION – wtedy zostanie zasygnalizowany błąd.

Kopiowanie plików (polecenie COPY)

Pliki kopiuje się przy użyciu komendy:

$ COPY ORYGINALNY_PLIK NOWY_PLIK

Podobnie jak w przypadku zmiany nazwy, pomijając numer wersji powodujemy kopiowanie tylko najwyższego numeru wersji danego pliku.

Przykład:

$ COPY JA.TXT TY.TXT

W tym przypadku plik JA.TXT (w jego najwyższej wersji) jest kopiowany do pliku TY.TXT o numerze wersji 1 (jeżeli taki plik z takim rozszerzeniem dotąd nie istniał).

$ COPY *.TXT;* [USER]*.*;*

W tym przypadku wszystkie pliki z rozszerzenie .TXT o wszystkich numerach wersji z aktualnego katalogu są kopiowane do folderu USER.

Pokazanie aktualnego katalogu (polecenie SHOW DEFAULT)

Katalogi zapewniają wygodny sposób organizowania plików w strukturę hierarchiczną. Polecenie SHOW DEFAULT pokazuje aktualne miejsce w którym wykonujemy konkretne polecenia.

Przykład:$SHOW DEFAULTDKA100:[USER.PROGRAMY]

Odpowiedź mówi nam, że aktualnie znajdujemy się na dysku DKA100 w podkatalogu PROGRAMY, a ten znajduje się w katalogu USER.

Zmiana aktualnego katalogu (polecenie SET DEFAULT)

W każdym momencie pracy konkretnego procesu, zadania, jedno urządzenie i konkretny katalog lub podkatalog są wybrane jako domyślne. To urządzenie i katalog nazywamy aktualnym lub domyślnym.
Użytkownik wydając polecenie SET DEFAULT powoduje wybranie konkretnego urządzenia i katalogu jako aktualnego dla wykonania danego procesu.
Zlecenie ma postać:

$ SET DEFAULT URZĄDZENIE:[KATALOG.PODKATALOG1.(…)]

Zmienna urządzenie podana jest jako nazwa urządzenia, winna zakończyć się dwukropkiem (:). Nazwa katalogu, jeśli jest podana, musi być ujęta w nawiasach kwadratowych. Każdy podkatalog w stosunku do swojego nadrzędnego katalogu poprzedzony jest kropką.

Aby wybrać główny katalog danego użytkownika należy wydać komendę:

$ SET DEFAULT SYS$LOGIN

czyli aktualnego katalogu użytkownika zaraz po zalogowaniu (po operacji login)

Przykład:

$ SET DEFAULT DKA100:[USER.PROGRAMY]

Polecenie to powoduje, że aktualnym katalogiem staje się folder PROGRAMY, który znajduje się w katalogu USER na dysku DKA100.
Jeżeli chcielibyśmy aby domyślnym katalogiem stał się folder USER (a do tej pory aktualnym katalogiem był folder PROGRAMY) wystarczy wydać polecenie:

$ SET DEFAULT [-]

oznacza to że domyślnym katalogiem staje się katalog o jeden wyższy czyli w naszym przykładzie katalog USER.

Tworzenie katalogu (polecenie CREATE/DIRECTORY)

Żeby utworzyć katalog należy wydać polecenie:

$ CREATE /DIRECTORY /KWALIFIKATOR URZĄDZENIE:[NAZWA_KATALOGU.NAZWA_PODKATALOGU.(...)]

Nazwa katalogu określa nazwę jednego lub więcej tworzonych katalogów lub podkatalogów. Przy tworzeniu podkatalogu nazwy kolejnych poziomów katalogu należy oddzielić kropką. Symbole wieloznaczne nie są dozwolone. Pojedyncze zlecenie umożliwia utworzenie całego szeregu kolejnych (na coraz niższym poziomie) podkatalogów.
Przykład:

$ CREATE /DIRECTORY DKA100:[USER.PROGRAMY]

Polecenie tworzy podkatalog PROGRAMY w katalogu USER na dysku DKA100

Przykład:

$ CREATE /DIRECTORY [.DOKUMENTY]

Polecenie tworzy w aktualnym katalogu podkatalog DOKUMENTY

Przykład:

$ CREATE /DIRECTORY [USER.DOKUMENTY.PRACA]

Polecenie tworzy podkatalog PRACA w katalogu DOKUMENTY (a ten znajduje się w katalogu USER)
Jeżeli katalog DOKUMENTY nie istnieje to zostanie utworzony.

Usuwanie katalogu

Żeby usunąć katalog musi on być pusty. Jeżeli w katalogu znajdują się inne folderu lub pliki, katalog ten nie zostanie usunięty. Drugą ważną sprawą jest zmiana praw ochrony tego katalogu, gdyż domyślnie katalog jest chroniony przed usunięciem. Jeżeli katalog jest już pusty należy wydać następujące polecenia aby go usunąć:

$ SET FILE/PROTECTION=OWNER:D NAZWA_KATALOGU.DIR$ DELETE NAZWA_KATALOGU.DIR;*

Polecenie usunięcia katalogu musi być wykonane z katalogu o poziom wyższego.
Innym poleceniem usuwającym ochronę katalogu jest:

$ SET SECURYTY/PROTECTION=OWNER:D NAZWA_KATALOGU.DIR

Wpis ten miał zapoznać z podstawowymi poleceniami prowadzonymi na plikach i katalogach w systemie OpenVMS.
Zachęcam do poszukiwania informacji o tym systemie. Jest ich niestety (w języku polskim) niezbyt wiele. Większość to literatura anglojęzyczna. Pozdrawiam.

 

oprogramowanie porady

Komentarze

0 nowych
GL1zdA   11 #1 06.02.2012 09:55

Na jakim komputerze tego używasz? Korzystasz z tego programu dla hobbystów HP? Próbowałem się tak kiedyś zarejestrować, niestety słabo to działało. Mam Alpha'ę, ale musiałbym mieć dobry powód by wgrać SRM (mam NT 4.0 i Debiana 5 działające bez problemu na AlphaBIOS).

winlin   2 #2 06.02.2012 16:38

Mam Alphaserver DS10 i Digital Personal Workstation oraz małe Integrity. Korzystam z licencji hobbystycznej ale też udało mi się zakupić na ebay licencje wieczystą za psie pieniądze. Oprócz OpenVMS bawię się także Tru64 UNIX, Debianem (niestety nie ma już stabilnych wydań), oraz systemami z rodziny BSD (na Alphie oczywiście). Pozdrawiam

  #3 07.02.2012 08:26

System interesujacy, ale swoj "coolness factor" zawdzciecza glownie swej pozornej elitarnosci, malej popularnosci. Do tego topornie nieprzenaszalny na inne architektury, wciaz trzymaja sie starych architektur. Niby powstal projekt VMSx86 [FLOSS], jednak ostatni raz, gdy sprawdzalem nie dzialal.
Ponadto: same operacje w OpenVMSie sa dosc absurdalnie porozciagane w stosunku do UNIXa [mozna powiedziec, ze DCL wyglada i dziala nieco jak pomieszanie jezyka naturalnego z matematyka]. Do mnie to nie przemawia. Sadze, ze czasy tego systemu sa juz dawno za nami, a pochylanie sie nad nim NA POWAZNIE dzis jest z grubsza strata czasu, o ile naturalnie nie jest to hobby.

  #4 20.07.2012 16:47

Dobry artykuł, czekam na kolejny o VMS :]

  #5 13.10.2012 20:47

Coś, co zawsze lubiłem w maszynach VAX to niezawodność klastra. Na uczelni mieliśmy czas uptime liczony w latach, w tym czasie oczywiście były upgrade'y systemu i wgrywanie patchy, a nawet wymiana jednej z maszyn. Nigdy później nie spotkałem żadnego systemu, który miałby chociaż zbliżoną niezawodność co OpenVMS. W porównaniu do systemów typu UNIX, OpenVMS jest po prostu inny. Niektóre rzeczy sprawiają byłym uniksowcom problemy w VMS (np. linki symboliczne), innych nie znają (wersjonowanie plików) ale w zamian za to VMS oferuje fantastyczny mechanizm klastra i jeszcze lepsze partycjonowanie. Do tego niezrównane bezpieczeństwo systemu jako takiego i świetny audyt. Pod tym względem najlepsze dzisiejsze produkty Microsoftu są na poziomie zbliżonym do VMS w wersji 2, rodem z lat osiemdziesiątych.