kategorie: Amiga Classic, AmigaOS 4.0, AmigaOS 4.1
[#1] Polecenie List
Kilka dni temu zabrałem się za realizację pewnego projekciku i napotkałem na przeszkodę w postaci (wg mnie) błędnego działania polecenia List. Objawia się to błędem 114 i komunikatem
: bad template

Błąd pojawia się po napotkaniu katalogu o nazwie "#".
Moje polecenie ma następujące parametry:
List all files lformat "md5sum >>*"{DBFILE}*" *"%p%n*""

Powyższe polecenie można wykonać dla testu po przejściu (cd) do żądanego katalogu.

Skrypty piszę pod AmigaOS 3.9. Ciekawi mnie czy podobny błąd występuje pod 4.x albo jak można zaradzić temu.
[#2] Re: Polecenie List

@radekcz, post #1

Błąd można na szybko wywołać przez następujące polecenia:
ram:
makedir #
list all


Podobne "jaja" są z nazwą "*".

Ostatnia aktualizacja: 02.02.2016 18:46:03 przez radekcz
[#3] Re: Polecenie List

@radekcz, post #2

# to znak specjalny AmigaDOS.

Oto znaczenie poszczególnych znaków specjalnych:
? - oznacza jeden dowolny znak
% - oznacza ciąg pusty
#<p> - oznacza dowolną ilość wystąpień wzorca <p>
<p1><p2> - oznacza sekwencję dwóch wzorców <p1> i <p2>
<p1>|<p2> - oznacza alternatywę dwóch wzorców <p1> i <p2>.
() - grupuje wzorce

Jeśli chcesz uzyskać znak specjalny (np. #) w nazwie musisz poprzedzić go apostrofem '.

* (gwiazdka) zaś to również znak specjalny. Umożliwia on uzyskanie specjalnych znaków typu " (cudzysłów). Dwie gwiazdki dopiero oznaczają jedną gwiazdkę.

Pochodzi z podręcznika do AmigaDOS 1.1-1.2 (starego).

P.S. Spotkałem się też z tym, że *n oznacza znak nowego wiersza.

P.S.2. Wiem, że w nowszych AmigaDOS istnieje też znak ~ (tylda) jako dopełnienie (czyli wszystko oprócz podanego wzorca).

Ostatnia aktualizacja: 02.02.2016 19:19:36 przez Hexmage960
[#4] Re: Polecenie List

@Hexmage960, post #3

Co wy tam wiecie!

Proponuję kilka testów ("plik" to jakiś plik tekstowy):

copy plik to *

copy * to plik
<należy coś napisać i zakończyć naciśnięciem Ctrl - \)

albo nawet:
copy * to *

I to jest podstawowe znaczenie gwiazdki w AmigaDOS v2+ - oznacza po prostu bieżącą konsolę. A kody escape też działają w konsoli, np:
echo "*e[3mItaliki"
napisze kursywą, tylko potem trzeba kursywę wyłączyć: echo "*e[0m" bo wszystko będzie w kursywie. Ehhhh to były czasy! Do DOS-a siadało się jak na zesłanie....
[#5] Re: Polecenie List

@BigBang, post #4

I to jest podstawowe znaczenie gwiazdki w AmigaDOS v2+ - oznacza po prostu bieżącą konsolę

Zgadza się, w podręczniku AmigaDOS o tym znaczeniu gwiazdki też przeczytałem.
[#6] Re: Polecenie List

@Hexmage960, post #3

To ja wiem, że "#" jest znakiem specjalnym - dlatego myślę że to błąd, że AmigaDOS dopuszcza go w nazwie. Ciekawe czy to jest poprawione w 4.x

Na aminecie jest kilka paczek co po rozpakowaniu mają katalogi z nazwą "#". Nie chcę ręcznie tego poprawiać bo nigdy się nie przewidzi co jest w paczce... a jak już to chciałbym ze skryptu wyszukać bez ręcznego sprawdzania.

Jednakże z wyszukaniem i podmianą nazwy też może być problem z poziomu AmigaDOS.

Właśnie przećwiczyłem polecenie search... niech ktoś mądry napisze jak przy pomocy tego polecenia odszukać katalog o nazwie "#".

Ostatnia aktualizacja: 02.02.2016 22:09:54 przez radekcz
[#7] Re: Polecenie List

@radekcz, post #6

Morphos radzi sobie z #

W jaki sposób uzywasz tylko SEARCH aby znalezienia nazwy katalogu?


Dlaczego nie korzystaz z LIST z LFORMAT i SEARCH do znalezienia nazwy "#" ?


Ps.
Dlaczego wątek jest w dziale AmigaOS 4.x jeśli skrypty piszesz dla OS3.9?


Ostatnia aktualizacja: 03.02.2016 12:41:44 przez Norbert
[#8] Re: Polecenie List

@Norbert, post #7

Nie używam SEARCH...
.key DIR/A,DBFILE/A

.bra {

.ket }

Echo "Change dir to {DIR}"

CD {DIR}

Echo "Make MD5 db..."

List all files lformat "md5sum >>*"{DBFILE}*" *"%p%n*"" to T:M

Execute T:M

Delete >NIL: T:M

Echo "Finished."

...ale to może dobry pomysł aby pokombinować z SEARCH (ten przynajmniej nie wali błędów).

Skrypt ma znaleźć wszystkie pliki z danego katalogu (i podkatalogów) i stworzyć listę ze skrótami md5. Robi to dobrze do momentu natrafienia na nazwę ze znakiem "#".

Ps.
Nie ma działu AmigaOS 3.x? gwizdanie
[#9] Re: Polecenie List

@radekcz, post #8

Sprawdzaj na początku czy w katalogu jest plik/katalog ze znakiem "#" (DIR + SEARCH)
Jesli jest, to podmień na inną nazwę, zgodną z amigados. (w głownym katalogu bedzie łatwo to zrobić)

ps.
Ale jest dział AMIGA lub PROGRAMOWANIE



Ostatnia aktualizacja: 06.02.2016 01:15:08 przez Norbert
[#10] Re: Polecenie List

@radekcz, post #8

Dlaczego nie używasz tego ?
http://aminet.net/package/util/misc/md5sum2
[#11] Re: Polecenie List

@Norbert, post #10

...bo wywala system - po odpaleniu ze ścieżką do pliku pokazuje sumę kontrolną a następnie reset i GURU.
[#12] Re: Polecenie List

@radekcz, post #11

Ten program sam stworzy sumy kontrolne po podaniu ścieżki do katalogu.
Radzi sobie z nazwą "#"
Nie potrzeba komendy LIST w skrycie.
[#13] Re: Polecenie List

@Norbert, post #12

StackAttack pomógł (albo można "ręcznie" zwiększyć stos do 8KB).
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem