Commandotaal van het besturingssysteem. Shell-opdrachttaal. De belangrijkste taken van het besturingssysteem in geheugenbeheer

Laboratoriumwerk nr. 1: Inleiding tot de commandotaalprocessor van de OS-familie Ramen.


Om te overhandigen laboratorium werk, moeten alle voorbeelden die in het theoretische materiaal worden gegeven aan de leraar worden gepresenteerd in de vorm van door de leerling gemaakte bat-bestanden.

Vragen:

  1. Een batchbestand definiëren? Welke extensie heeft het batchbestand?
  2. Wat is het verschil tussen het gebruik van > en >> bij het organiseren van uitvoeromleiding?
  3. Hoe plaats ik een lange regel in een batchbestand?
  4. Hoe worden parameters doorgegeven aan een batchbestand? Geef een voorbeeld van een commandobestand met parameters.
  5. Leg het doel uit opdrachten instellen. Wat is het voordeel van het gebruik van variabelen? Geef een voorbeeld van een batchbestand dat de opdracht set gebruikt.
  6. Hoe verschillen de parameters van een batchbestand van de variabelen ervan?
  7. In welke gevallen kan het commando for worden gebruikt? Geef een voorbeeld van een batchbestand dat de opdracht for gebruikt.
  8. Welk commando wordt gebruikt om vanuit één batchbestand een ander batchbestand aan te roepen? Geef een voorbeeld van zo’n batchbestand(en).

Gebruik aanvullend materiaal om antwoorden op de volgende vragen voor te bereiden:

  1. Dat betekent: ontsnap aan elk ander personage met onvoorwaardelijke voorrang.
  2. Leg het doel van de operators uit:<, >, >>, &, && en ||.


"Uitvoerbare bestanden DOS"

(Taal batchbestanden MS-DOS).

Routebeschrijving : De taak wordt uitgevoerd onder de opdrachtregelemulator Windows XP.

Invoering

In de operatiekamer MS-DOS-systeem en in alle besturingssystemen van de Microsoft-familie Windows op zijn eenvoudigst Zogenaamde batchbestanden dienen als middel om de verwerking van bestanden (en mappen) te automatiseren. Batchbestanden zijn niet de enige manier om het werk van de gebruiker te automatiseren, zelfs niet onder de ingebouwde bestanden. In besturingssystemen van de familie Microsoft Windows, vanaf versie 98, is er meer ramen Script(ing)Host. Bovendien kan voor deze doeleinden de geïnterpreteerde taal Perl, Python of Ruby worden gebruikt. Overgedragen geld, zijn behoorlijk krachtig, maar vereisen programmeervaardigheden, d.w.z. programma's samenstellen en, belangrijker nog, debuggen, tenminste op een goed amateurniveau. Het gebruik van batchbestanden is voor iedereen toegankelijk zonder speciale training. Oplettendheid en gezond verstand zijn voldoende.

Commandoprocessor

Veel besturingssystemen, inclusief die ontwikkeld door Microsoft, bevatten een opdrachtprocessor. Dit is de naam van een programma dat de uitvoering van verschillende acties initieert als reactie op opdrachten die de gebruiker vanaf het toetsenbord invoert. In principe bestaan ​​deze acties uit het lanceren van de noodzakelijke programma's met bepaalde parameters. Maar sommige opdrachten worden rechtstreeks door de opdrachtprocessor uitgevoerd. Kortom, dit zijn de commando's die dienen om de context en de volgorde van de commando-uitvoering te controleren. Elk programma dat technisch mogelijk vanaf de opdrachtregel kan worden uitgevoerd, wordt door de shell als een opdracht beschouwd. Er wordt geen onderscheid gemaakt tussen de oorspronkelijke opdrachten die oorspronkelijk in het besturingssysteem zijn ingebouwd en programma's die erbovenop zijn geïnstalleerd.

Taak nr. 1

Om de opdrachtprocessor te starten:

  1. Klik op de knop Begin . Het hoofdmenu wordt op het scherm weergegeven.
  2. Selecteer Uitvoeren in het hoofdmenu. Er verschijnt een dialoogvenster op het schermHet programma starten.
  3. Voer de tekenreeks in het veld Openen in cmd.
  4. Klik op de knop OK . Er verschijnt een opdrachtprocessorvenster op het scherm.

Commandoregel en opdrachten

Het opdrachtprocessorvenster ziet er in zijn oorspronkelijke vorm somber uit en het werken ermee is voor de meeste mensen niet erg handig. Veel gemakkelijker te gebruiken bestandsbeheerders in stijl Norton-commandant of VER . Ze bieden beide middelen snelle navigatie op het bestandssysteem en de periode voor het invoeren van opdrachten.

Taak nr. 2

Om de opdracht in te voeren:

  1. Typ de opdrachttekst op de opdrachtregel (bijvoorbeeld command richt).
  2. Druk op de toets Binnenkomen.

De commandoprocessor- en besturingssysteemcommando's worden beschreven in de bedieningsdocumentatie voor laatstgenoemde. Deze documentatie is gedeeltelijk opgenomen in het besturingssysteem zelf. Om toegang te krijgen, gebruikt u de helpopdracht. Met deze opdracht wordt een lijst weergegeven beschikbare commando's. Om een ​​beschrijving van een specifiek commando te krijgen, moet u de naam ervan opgeven als een parameter voor het helpcommando (of het commando specificeren en gescheiden door een spatie /?).

Taak nr. 3

Om de lijst met beschikbare opdrachten te bekijken:

  1. Typ opdrachttekst hulp op de opdrachtregel.
  2. Druk op de toets Binnenkomen.

I/O-omleiding

Het resultaat van het uitvoeren van het help-commando past niet op één scherm (hetzelfde probleem doet zich voor bij de beschrijvende tekst van het for-commando). Dit ongemak kan worden vermeden door de uitvoer naar een bestand om te leiden.

Taak nr. 4

Om het resultaat van een opdracht naar een bestand om te leiden, gebruikt u het symbool >:

  1. VER openen (via het Start-menu, of door het far-commando in te voeren in "Een programma uitvoeren" - zie taak nr. 1)
  2. Ga naar je werkmap(in VER e : druk op Alt+F1, selecteer het station “Z: netwerk” en ga vervolgens naar uw map
  3. Druk op de sneltoets Ctrl+O (ga naar de opdrachtprompt om terug te keren naar shell FAR, druk nogmaals op Ctrl + O)
  4. Typ opdrachttekst hulp > een . tekst op de opdrachtregel.
  5. Druk op de toets Binnenkomen.
  6. VER nieuw aangemaakt bestand A. tekst.
  7. Typ opdrachttekst hulp >> een . tekst op de opdrachtregel.
  8. Druk op de toets Binnenkomen.
  9. Kijk naar het resultaat: Open met bestandsbeheerder VER nieuw aangemaakt bestand A. tekst (selecteer het juiste bestand en druk op de toets F4).
  10. Bepaal wat het verschil is tussen het gebruik van > en >> (hiervoor kunnen de overeenkomstige opdrachten meerdere keren worden uitgevoerd en elke keer moet u het verkregen resultaat evalueren)?
  11. Bekijk de lijst met beschikbare opdrachten.

Taak nr. 5

Ontdek hoe teams werken verplaatsen en ren:

  1. Bekijk de Help voor deze opdrachten.
  2. Maak mappen aan in uw werkmap doos en tafel.
  3. Maak in de box-map een bestand test 1. txt.
  4. Verplaats het bestand test 1.txt van de box-map naar de tabel-map met behulp van de opdracht: move box\ test 1.txt tabel .
  5. Hernoem het bestand test 1.txt naar bestand test 2.txt met behulp van de opdracht: ren-test 1.txt test 2.txt.

Huidige map. Absolute en relatieve paden

Bij het werken met bestandsopdrachten wordt het concept van de huidige map uiterst belangrijk. Het is een feit dat we bij het specificeren van een bestand als opdrachtparameter altijd een van de twee mogelijke manieren gebruiken om ernaar te verwijzen: absoluut pad of een relatief pad. In het volledige pad geven we alles aan dat begint met de schijf (of netwerknaam van de computer), bijvoorbeeld d:\misha\box\ test 1.txt. Welke directory er ook actief is op het moment dat de opdracht wordt ingevoerd, het volledige pad komt overeen met hetzelfde bestand. Voor relatief pad de huidige map dient als startpunt. Het eenvoudigste geval van een relatief pad is de bestandsnaam. In de context van opdrachtuitvoering betekent dit een bestand met die naam in de huidige map.

Er is een relatief pad naar de huidige map te schrijven voorwaardelijke notatie. (punt). Om het relatieve pad vast te leggen naar de map die de huidige map bevat, is er een voorwaardelijke notatie .. (twee punten). Team kopieer *.* .\ tabel kopieert alle bestanden van de huidige map naar een map tafel , ernaast gelegen.

Batchbestanden

Tot nu toe gingen we er bij het geven van voorbeelden vanuit dat we opdrachten elke keer handmatig invoerden. Bij het verwerken van een groot aantal bestanden of het systematisch uitvoeren van dezelfde opdrachten wordt dit omslachtig. Daarom biedt de opdrachtprocessor de mogelijkheid om opdrachtbestanden uit te voeren.Commandobestand is een tekstbestand waarin opdrachten worden getypt(of minstens één commando). Voorbeeld batchbestand:

help kopiëren > kopiëren.help

help verplaatsen > verplaatsen.help

md msdos-help

verplaats *.help msdos-help

Taak nr. 6

  1. Leg uit wat er gebeurt als deze opdrachten worden uitgevoerd.

Het is gebruikelijk om opdrachtbestanden mee te geven vleermuis extensie. Dit is hoe bestanden van dit type worden herkend door de opdrachtprocessor. Dit bestand kan bijvoorbeeld make-help.bat worden genoemd.

Om het batchbestand uit te voeren:

  1. Voer zijn naam in als commando. Hierna wordt het batchbestand uitgevoerd.

In een batchbestand neemt elke opdracht één regel in beslag. Om precies te zijn, er is een manier om één commando op meerdere opeenvolgende regels te plaatsen; onmiddellijk vóór elke regeleinde moet u het "cap" -teken ^ plaatsen. (Elke hoofdletter moet het laatste teken op de regel zijn; er mogen geen spaties of tabs achter staan.) Voorbeeld:

indien aanwezig Z:\test.txt ^

kopieer test.txt ^

Z:\test\

Wanneer een batchbestand wordt uitgevoerd, scant de opdrachtprocessor het van boven naar beneden, van de eerste tot de laatste regel, en voert de opdrachten uit in de volgorde waarin hij ze tegenkomt. Het voert ze als één geheel uit alsof ze allemaal handmatig zijn ingevoerd.

Indien nodig kan de volgorde van opdrachtuitvoering worden gewijzigd met behulp van bedieningselementen.

Verwar de huidige map niet met de map waarin het te starten batchbestand zich bevindt. Laten we zeggen dat de huidige map werk is, deze bevat de map tools en in de map tools worden de opdrachtbestanden opgeslagen. Je start er één met het commando tools\collect-images.bat. Dus “vanuit het oogpunt” van dit batchbestand zal de huidige map nog steeds werk zijn, geen tools.

Commentaar geven op het batchbestand en de uitvoer ervan.

echo- en rem-opdrachten

Een batchbestand is in wezen een programma dat is geschreven in de opdrachtprocessortaal van het besturingssysteem. De tekst van het programma moet voorzien zijn van commentaar, zodat je, als je er enige tijd later naar terugkeert, niet pijnlijk hoeft te herinneren waarom dit programma nodig is en hoe het werkt.

Het MS-DOS-opdrachtsysteem biedt de opdracht rem voor het maken van opmerkingen. Dit is een dummy-opdracht waarbij u geen actie hoeft uit te voeren, maar waarmee u willekeurige tekst op de regel achter uw naam kunt schrijven. Bovendien beschouwt de opdrachtprocessor het niet als een syntaxisfout.

Voorbeeld:

rem************************************************** ****

rem Helpbestanden genereren

help kopiëren > kopiëren.help

help verplaatsen > verplaatsen.help

md msdos-help

verplaats *.help msdos-help

Let op de lege regels die het batchbestand opsplitsen in ‘paragrafen’. Met deze eenvoudige truc kunt u uw batchbestand beter leesbaar maken.

Bij het uitvoeren van het bovenstaande batchbestand worden alle opdrachten op het scherm weergegeven terwijl ze worden uitgevoerd, wat niet altijd handig is. Het geven van opdrachten kan worden uitgeschakeld met het commando @echo off. Het “hond”-symbool vóór het echo-commando betekent dat dit commando zelf in “stille” modus moet worden uitgevoerd. We kunnen net zo goed het echo off-commando niet gebruiken, maar een “hond” voor elk commando plaatsen.

In veel gevallen wil je dat een batchbestand bepaalde berichten op het scherm (of in een bestand) weergeeft. In sommige gevallen kunnen dit foutmeldingen zijn, in andere gevallen informatieve berichten waarin aan de gebruiker van het batchbestand wordt uitgelegd wat er gebeurt dit moment. Hetzelfde echo-commando wordt gebruikt om berichten weer te geven. De tekst van het weer te geven bericht wordt als parameter hieraan doorgegeven. Voorbeeld van een verbeterd batchbestand:

@echo uit

rem************************************************** ****

rem Helpbestanden genereren voor de kopieer- en verplaatsingsopdrachten

rem************************************************** ****

@echo Helpbestanden genereren. Een seconde...

rem Helpbestanden genereren

help kopiëren > kopiëren . hulp

help verplaatsen > verplaatsen . hulp

rem Maak een map aan om helpbestanden op te slaan

md msdos-help

rem Verplaats de helpbestanden naar de voorbereide map

verplaats *.help msdos-help

echo Klaar!

Parameters doorgeven aan een opdrachtbestand

Laten we zeggen dat we een batchbestand willen maken dat eerst hulp genereert bij het beschrijven van een door de gebruiker opgegeven commando, en dit vervolgens in Kladblok laadt om te bekijken. De truc is om de volgende keer dat we het batchbestand uitvoeren, op de een of andere manier te vertellen in welke opdracht we deze keer geïnteresseerd zijn.

Om dit probleem op te lossen wordt voorzien in een parameterverwerkingsmechanisme. Het werkt heel eenvoudig. Als de gebruiker bij het uitvoeren van een opdrachtbestand verschillende parameters heeft opgegeven, dan duiden we in de tekst van het opdrachtbestand de eerste aan met de invoer %1, de tweede met de invoer %2, de derde met de invoer %3, enz. We gebruiken deze notaties in de tekst van het commandobestand op vrijwel dezelfde manier als we voornaamwoorden gebruiken in natuurlijke spraak.

De tekst van het opdrachtbestand dat het probleem oplost, vindt u hieronder. Let op het helpcommando. De eerste parameter van het opdrachtbestand wordt er als parameter aan doorgegeven.

@echo uit

rem Vorm een ​​bestand met opdrachtbeschrijving,

rem waarvan de naam als parameter wordt doorgegeven

help %1 > help.tmp

rem Laad het beschrijvingsbestand in de Kladblok-editor

kladblok help.tmp

Laten we aannemen dat we dit batchbestand show-help.bat hebben genoemd. Om een ​​opdrachtbeschrijving in Kladblok te laden, bijvoorbeeld dir, moeten we de opdracht als volgt invoeren: show-help.bat dir

Het volgende opdrachtbestand maakt een map aan met de naam die is opgegeven in de eerste parameter en schrijft daarin een bestand met de tekst die de opdracht beschrijft die is opgegeven in de tweede parameter:

rem Voorbeeld van een commandobestand met twee parameters

rem Maak een map met de naam die is opgegeven door de eerste parameter

MD %1

rem Maak er een bestand in met een beschrijving van de opdracht,

rem gespecificeerd door de tweede parameter

help %2 > %1\%2.help

Wat gebeurt er als de gebruiker vier parameters opgeeft in plaats van twee bij het uitvoeren van dit batchbestand? Het is oké, ze bemoeien zich nergens mee, ze worden gewoon niet gebruikt. Wat gebeurt er als de gebruiker alleen de eerste parameter opgeeft? De tweede parameter is leeg. Het effect zal dit zijn: het batchbestand wordt uitgevoerd, maar alsof er niets in de plaats staat van de %2-invoer. Het help-commando genereert een lijst met alle commando's en plaatst deze in een bestand met lege naam en extensie .help. Als de gebruiker dit bestand uitvoert zonder parameters op te geven, verschijnt er een bericht over wanneer de opdrachtprocessor de opdracht md probeert uit te voeren (bedoeld om een ​​map te maken) syntax error, omdat de opdracht md een parameter moet hebben.

Het gebruik van parameters biedt dus grote kansen, maar kan de zaken aanzienlijk compliceren. Om ervoor te zorgen dat het batchbestand altijd correct werkt, is het noodzakelijk om de juistheid van de door de gebruiker opgegeven parameters te controleren en op de een of andere manier te reageren op onvolledige of onjuiste invoergegevens.

Variabelen. opdracht instellen

Een variabele is een benoemde waarde. Om een ​​variabele te declareren en er tegelijkertijd een waarde aan toe te wijzen, gebruikt u het set-commando. Een voorbeeld van deze opdracht wordt weergegeven in de volgende lijst.

rem Compiler van HELP-bestanden in CHM-formaat

stel help_compiler= in

Om de waarde van een variabele te extraheren, plaatst u de naam ervan tussen twee procenttekens, zoals hieronder weergegeven.

rem Compiler van helpbestanden in CHM-formaat

stel help_compiler= in C:\Program Files\HTML Help Workshop\hhc.exe

rem Projecthelpbestand voor de module "Magazijn".

set store_hpj=”Z:\store.hpj”

rem Projecthelpbestand voor de module "Verkoop".

set sales_hpj=”Z:\sales.hpj”

rem Helpbestanden samenstellen

%help_compiler% %store_hpj%

%help_compiler% %sales_hpj%

Dit voorbeeld laat zien waarom variabelen nuttig zijn.

Ten eerste stellen ze je in staat een kort fragment te gebruiken dat er synoniem mee is in een batchbestand in plaats van een lang fragment (bijvoorbeeld het pad naar de helpbestandcompiler, dit is handig);

Ten tweede zorgen ze ervoor dat u herhaling in de tekst van het opdrachtbestand kunt voorkomen van fragmenten die in de toekomst kunnen veranderen.

Batchbestandsparameters zijn ook variabelen, maar verschillen van gewone variabelen doordat hun waarden worden ingesteld wanneer het batchbestand wordt gestart. Als we het in de toekomst over variabelen hebben, vooral over het werken met hun waarden, zullen we ook de parameters van commandobestanden bedoelen, tenminste als er geen expliciete bedenkingen hierover zijn.

Bij het schrijven van batchbestanden wordt vaak de volgende techniek gebruikt: verschillende variabelewaarden worden naast elkaar aangegeven (of afgewisseld met enkele symbolen of regels), om zo een nieuwe betekenisvolle waarde te verkrijgen.

Voorbeeld:

set help_compiler=" C:\Program Files\HTML Help Workshop\hhc.exe "

stel project_path=”Z:\ in<ваша_папка>\hulp"

Voorwaarden controleren en opties selecteren. if- en goto-opdrachten

Met de if-opdracht kunt u groepen opdrachten in een batchbestand selecteren die afhankelijk van bepaalde omstandigheden wel of niet worden uitgevoerd. Waar is het voor?

Conditiecontrole bijna noodzakelijke maatregel bij het maken van batchbestanden die parameters gebruiken. Voordat u met het werk begint, moet het batchbestand er doorgaans voor zorgen dat de juiste set parameters eraan wordt doorgegeven. Anders bestaat er een groot risico dat het onjuist of ineffectief wordt uitgevoerd, en zal de gebruiker zich alleen maar afvragen wat het probleem is. Als een batchbestand gegevens verwijdert, verplaatst of overschrijft, kan dit bovendien zelfs schade veroorzaken als de parameters onjuist zijn.

In het volgende voorbeeld ziet u het opdrachtbestand voor het compileren van het Help-bestand waarmee u al bekend bent. Een controle op niet-leegheid van de eerste parameter is toegevoegd aan het begin van het opdrachtenbestand. Let op deze syntaxisfunctie: de vergelijkingsbewerking gebruikt een dubbel gelijkteken. Als de eerste parameter niet leeg is, wordt het goto-commando uitgevoerd, waardoor de shell naar het opgegeven label wordt "gegooid". IN in dit geval de naam van dit label is compileren. Merk op dat waar een label verschijnt, de naam ervan wordt voorafgegaan door een dubbele punt, maar in het goto-commando is dit niet het geval. Als de eerste parameter leeg is, gaat de shell naar de volgende regel, wat een foutmelding oplevert. En dan naar de volgende, die het helemaal aan het einde van het bestand overbrengt naar een label met de naam finish.

@echo uit

zo niet "%1"=="" ga naar compileren

echo Help-bestand projectnaam niet gespecificeerd

rem en ga naar het einde van het batchbestand

rem om het teken te voltooien

ga eindigen

rem Dit is een label genaamd compile

:compileren

rem Pad naar de helpbestandcompiler

set help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe"

rem Pad naar de map waar de Help-bestandsprojecten zich bevinden

stel project_path=”Z:\ in<ваша_папка>\hulp"

rem Roep de compiler op om een ​​specifiek project te verwerken,

rem waarvan de naam wordt doorgegeven in de eerste parameter

%help_compiler% %project_path%\%1.hpj

rem Dit is een label met een naam finish

:finish

De voorgestelde methode om de parameter te controleren is niet de meest succesvolle.

Ten eerste, als de gebruiker per ongeluk de naam van een niet-bestaand bestand als parameter opgeeft, zal het batchbestand hiermee tevreden zijn en proberen te compileren. Een betere manier is om te controleren of zo’n bestand daadwerkelijk bestaat. Voor dit doel biedt de MS-DOS-opdrachttaal speciaal woord bestaan. Daarom zou het beter zijn om te schrijven: als er %1.hpj bestaat, ga dan naar compileren.

Ten tweede verwart het actieve gebruik van het goto-commando (de zogenaamde onvoorwaardelijke sprong) en labels de code enorm. Technisch gezien zijn ze niet slecht, maar het debuggen en onderhouden van een batchbestand dat in deze stijl is geschreven, is behoorlijk lastig. Daarom beschouwen programmeurs onvoorwaardelijk springen al lang als een ongewenste techniek. Hieronder wordt een meer correcte, vanuit het oogpunt van programmeerstijl, gestructureerde versie getoond, die de if...else-constructie gebruikt. Het werkt als volgt: als de voorwaarde waar is, worden de opdrachten tussen haakjes na de if uitgevoerd, en als deze niet waar is, worden de opdrachten tussen haakjes na de else uitgevoerd.

@echo uit

rem Controleer of de parameter is ingesteld

indien niet bestaand %1.hpj (

Rem Als de parameter leeg is, geven we een foutmelding weer

) anders (

Rem Hieronder staan ​​de compilatiecommando's

Rem Pad naar de helpbestandcompiler

Stel help_compiler="C:\Program Files\HTML Help Workshop\hhc.exe" in

rem Pad naar de map waar de Help-bestandsprojecten zich bevinden

Stel project_path=”Z:\ in<ваша_папка>\hulp"

rem Roep de compiler op om een ​​specifiek project te verwerken,

Rem wiens naam wordt doorgegeven in de eerste parameter

%help_compiler% %project_path%\%1.hpj

Laten we nog een voorbeeld geven van het werken met cheques. Het volgende batchbestand maakt een map aan met de naam help-files (ervan uitgaande dat de gecompileerde helpbestanden daarin worden gedumpt). Bovendien, als er al een map met dezelfde naam bestaat (en deze bevat waarschijnlijk oude Help-bestanden die je niet wilt verliezen: wat als de nieuwe slechter blijken te zijn?), wijst het batchbestand de extensie bak eraan toe. . Maar als de map help-files.bak al bestond, verwijdert het batchbestand deze (we gaan ervan uit dat één back-up voldoende voor ons is).

indien bestaan ​​help-files.bak rd help-files.bak

indien er helpbestanden bestaan ​​ren helpbestanden helpbestanden.bak

MD-helpbestanden

Bulkbestandsverwerking. voor commando

Met het commando for kunt u de uitvoering van herhaalde acties van hetzelfde type organiseren. U kunt het gebruiken om de cijfers één tot en met tien weer te geven, zoals weergegeven in de volgende lijst.

voor /l %%i in (1,1,10) echo %%i

De variabele i wordt de lusteller genoemd. Vanwege de unieke syntaxis van het for-commando moet de naam van de lusteller uit één letter bestaan. Als we bovendien een batchbestand schrijven, moeten we een dubbel procentteken voor de naam van de lusteller plaatsen, maar als we alleen maar een opdracht op de opdrachtregel typen, dan een enkele.

De logica van dit commando is als volgt. Nadat het woord in het bereik van verandering van de lusteller wordt aangegeven. IN deze optie commando's zijn een drietal cijfers: de beginwaarde van de teller, de telstap, de grenswaarde van de teller. Bij het uitvoeren van een commando zal de commandoprocessor eerst de waarde 1 toewijzen aan variabele i, en vervolgens bij elke stap van de lus deze met 1 verhogen totdat deze de 10 overschrijdt. Uiteraard zullen er tien van dergelijke stappen zijn. Als we het getal 2 als telstap hadden opgegeven, zou de lus vijf keer zijn uitgevoerd. Bij elke stap van de lus wordt de hoofdtekst van de lus, geschreven na het woord do, uitgevoerd. In het bovenstaande voorbeeld is dit het echo-commando, dat de huidige waarde van de lusteller weergeeft.

U kunt waarschijnlijk een situatie bedenken waarin zoiets feitelijk nodig is, maar meestal wordt de opdracht for gebruikt om bestanden te doorlopen en te verwerken. Het moet gezegd worden dat in vrij eenvoudige gevallen de bulkverwerking van bestanden wordt uitgevoerd met behulp van jokertekens. Als we de extensie .htm willen vervangen door .html voor alle bestanden in de huidige map, voeren we het commando ren *.htm *.html in. Maar als hetzelfde niet in één directory moet gebeuren, maar in een directorystructuur, dan kun je niet zonder het for-commando. Het volgende batchbestand voert deze bewerking uit voor alle htm-bestanden in de website-submap van de huidige map. Om precies te zijn, in de volledige directorystructuur die zich op de website bevindt.

voor /r website %%i in (*.htm) doe ren %%i %%~ni.html

De schakeloptie /r geeft aan dat de websitemap en al zijn interne onderdelen moeten worden doorlopen. Als u dit niet opgeeft (maar u mag ook geen map opgeven), worden alleen bestanden in de huidige map verwerkt. Het waardenbereik voor de lusteller in deze versie van de opdracht is de verzameling van alle bestanden met de .htm-extensie die zich in de directory (meer precies, de boom) van de website bevinden. De notatie ~ni, die op het eerste gezicht vreemd lijkt, betekent dat alleen de bestandsnaam uit de waarde van de variabele i hoeft te worden geëxtraheerd. De MS-DOS-opdrachttaal biedt verschillende van dergelijke modificaties; de invoer ~xi geeft bijvoorbeeld de bestandsextensie aan. Alle modifiers worden beschreven in de help bij de opdracht.

De body van een lus kan bestaan ​​uit verschillende opdrachten tussen haakjes.

@echo uit

voor /r website %%i in (*.htm) do (

rem Druk de bestandsnaam af

Echo %%i

Rem Hernoem het bestand

Ren %%i %%~ni.html

Controle overdragen naar een ander batchbestand. commando oproepen

Het is mogelijk om vanuit één batchbestand een ander batchbestand aan te roepen. Hiervoor wordt het call-commando gebruikt. Geweldig, de variabelen die zijn opgegeven in het aanroepende batchbestand zijn "zichtbaar" voor het aangeroepen bestand. En omgekeerd, nadat het aangeroepen bestand zijn werk heeft voltooid en de controle teruggeeft aan de aanroeper, zal deze laatste de variabelen “zien” die hem zijn nagelaten door de zogenaamde “overerving”. Hierdoor kan de ontwikkelaar van batchbestanden zoiets als dit doen: Als meerdere opdrachtbestanden dezelfde waarden moeten gebruiken, bijvoorbeeld paden naar sommige bestanden, kunnen deze in een afzonderlijk opdrachtbestand worden geplaatst, dat de rol van een configuratiebestand zal spelen. Elk werkopdrachtbestand begint met een aanroep van het configuratiebestand. Het voordeel is dat u bij het wisselen van pad slechts één wijziging hoeft aan te brengen configuratiebestand, en niet in veel werknemers.

Batchbestand "Configuratie". config.bat .

rem Pad naar de helpbestandcompiler

set help_compiler="C:\Program Files\HTML Help Workshop\hhc.exe"

rem Pad naar de map waar de Help-bestandsprojecten zich bevinden

set project_path = "Z:\<ваша_папка>\hulp"

"Werkend" batchbestand.

@echo uit

rem Variabelen instellen

bel config.bat

rem Controleer of de parameter is ingesteld

indien niet bestaand %1.hpj (

Rem Als de parameter leeg is, geven we een foutmelding weer

Echo Er bestaat geen dergelijk helpbestandproject.

) anders (

Rem Hieronder staan ​​de compilatiecommando's

Rem Roep de compiler op om een ​​specifiek project te verwerken,

Rem wiens naam wordt doorgegeven in de eerste parameter

%help_compiler% %project_path%\%1.hpj

OPMERKINGEN

FAR-opdrachten (Toetsenbord sneltoetsen):

  • Ctrl+O schakelen tussen console en shell
    • Alt+F1 selecteer station voor linkerpaneel
    • Alt+F2 selecteert de schijf voor het paneel
    • F1 hulp
    • F 2 het bewerkte bestand opslaan
    • F 3 open het bestand om het te bekijken
    • F 4 open het bestand om het te bewerken
    • Verschuiving + F 4 creëren nieuw bestand
    • F5 kopieer bestand/map
    • F5 verplaats bestand/map
    • F 7 creëren nieuwe catalogus
    • F8 verwijder huidig ​​(geselecteerd) bestand/map
    • F9 hoofdmenu (bovenaan).
    • F 10-uitgang
    • Enter start het huidige (geselecteerde) bestand met het programma (inclusief het opdrachtbestand)

Commando shell-taal(vertaald als shell, shell) is eigenlijk een programmeertaal van zeer hoog niveau. In deze taal bestuurt de gebruiker de computer. Normaal gesproken begint u na het inloggen met de interactie commandoshell. Een teken dat de shell klaar is om opdrachten te ontvangen, is de prompt die op het scherm wordt weergegeven. In het eenvoudigste geval is het één dollar (“$”). Shell is niet noodzakelijk en de enige commandotaal (hoewel het wel de taal is die gestandaardiseerd is binnen het raamwerk van POSIX, de standaard voor mobiele systemen). De cshell-taal is bijvoorbeeld behoorlijk populair; er zijn ook kshell, bashell en andere. Bovendien kan elke gebruiker zijn eigen commandotaal creëren. Kan tegelijkertijd met verschillende opdrachttalen werken op één exemplaar van het besturingssysteem. shell is een van de vele UNIX-opdrachten. Dat wil zeggen dat de commandoset “shell” het commando “sh” bevat, waarbij de “shell”-interpreter wordt aangeroepen. De eerste "shell" wordt automatisch aangeroepen wanneer u inlogt en geeft een programmeur weer. Hierna kunt u alle opdrachten voor uitvoering oproepen, inclusief de "shell" zelf, die een nieuwe shell voor u zal creëren in de oude. Dus als u bijvoorbeeld het bestand "file_1" in de editor voorbereidt:

Echo Hallo!

dan is dit een gewoon tekstbestand met de opdracht "echo", die, wanneer deze wordt uitgevoerd, alles rechts ervan op het scherm weergeeft. U kunt het bestand "file_1" uitvoerbaar maken met behulp van het commando "chmod 755 file_1". Maar het kan gedaan worden door expliciet het commando "sh" ("shell") aan te roepen:

Sh-bestand_1

Sch< file1

Het bestand kan ook worden uitgevoerd in de huidige shell-instantie. Er is een specifiek commando voor deze "." (punt), d.w.z.

Bestand_1

Omdat UNIX een systeem voor meerdere gebruikers is, kunt u dat zelfs doen persoonlijke computer parallel werken op bijvoorbeeld 12 schermen (wissel van scherm naar scherm ALT/functietoets), met op elk scherm een ​​nieuwe (of dezelfde) gebruiker met zijn eigen opdrachtshell. Je kan ook grafische modus X-Window ook geopend groot aantal windows, en elk venster kan zijn eigen gebruiker hebben met zijn eigen commandoshell... Het kernelement van de shell-taal is het commando.

Commandostructuren:

Commando's in de shell hebben meestal het volgende formaat:

<имя команды> <флаги> <аргумент(ы)>

Bijvoorbeeld:

Ls -ls /usr/bin

Waar ls de naam is van het commando om de inhoud van de map uit te voeren, is -ls de vlaggen ("-" is een teken van vlaggen, l is het lange formaat, s is het volume van bestanden in blokken), /usr/ bin is de directory waarvoor het commando wordt uitgevoerd. Dit commando zal de inhoud van de /usr/bin directory in lang formaat weergeven, en zal informatie toevoegen over de grootte van elk bestand in blokken. Helaas wordt deze commandostructuur niet altijd gevolgd door een minteken, en de vlaggen zijn niet altijd één woord variatie in de presentatie van argumenten. Commando's met exotische formaten omvatten dergelijke "lopende" commando's als cc - het aanroepen van de C-taalcompiler, tar - werken met archieven, dd - het kopiëren van een. bestand met conversie, zoeken - zoeken naar bestanden en een aantal andere. In de regel beschouwt de shell het eerste woord als een commando.

het eerste woord wordt door de shell gedecodeerd als een commando (aaneenschakeling), waardoor een bestand met de naam "cat" (het tweede woord) wordt weergegeven dat zich in de huidige map bevindt. Commandoomleiding Standaardinvoer (invoer) - "stdin" in UNIX OS wordt uitgevoerd vanaf het terminaltoetsenbord, en standaard uitvoer(uitvoer) - "stdout" wordt naar het terminalscherm geleid. Er is ook standaard bestand diagnostische berichten - "stderr", die iets later zal worden besproken. Een team waar mee gewerkt kan worden standaard invoer en de uitvoer heet FILTER. De gebruiker beschikt over handige middelen om invoer en uitvoer om te leiden naar andere bestanden (apparaten). De symbolen ">" en ">>" geven de uitvoeromleiding aan. ls >file_1 De opdracht "ls" genereert een lijst met bestanden in de huidige map en plaatst deze in het bestand "file_1" (in plaats van deze naar het scherm af te drukken). Als het bestand "file_1" al eerder bestond, wordt het overschreven door het nieuwe bestand.

Pwd >>bestand_1

het pwd-commando vormt de volledige naam van de huidige map en plaatst deze aan het einde van het bestand "file_1", d.w.z. ">>" wordt aan het bestand toegevoegd als het niet leeg is. Symbolen "<" и "<<" обозначают перенаправление ввода.

Wc -l

telt en geeft het aantal regels in het bestand file_1 weer.

Ed-bestand_2<

zal het bestand "file_2" maken met behulp van de editor, rechtstreeks vanaf de terminal. Het einde van de invoer wordt bepaald door het teken rechts "<<" (т. е. "!"). То есть ввод будет закончен, когда первым в очередной строке будет "!". Можно сочетать перенаправления. Так

Wc -l bestand_4

Wc -l >bestand_4

worden op dezelfde manier uitgevoerd: het aantal regels in het bestand "file_3" wordt geteld en het resultaat wordt in het bestand "file_4" geplaatst. Het middel dat de standaarduitvoer van het ene commando combineert met de standaardinvoer van een ander commando wordt een PIPELINE genoemd en wordt aangegeven door een verticale balk "|".

ls | wc -l

een lijst met bestanden in de huidige map wordt naar de invoer van het "wc"-commando gestuurd, die het aantal regels in de map weergeeft. De pijplijn kan ook meer dan twee opdrachten combineren, als ze allemaal, behalve mogelijk de eerste en de laatste, filters zijn:

Kat bestand_1 | grep -h resultaat | sorteer | cat -b > bestand_2

Deze pijplijn uit het bestand "file_1" ("cat") selecteert alle regels die het woord "result" ("grep") bevatten, sorteert ("sort") de resulterende regels en nummert vervolgens ("cat -b") en druk het resultaat af in bestand "file_2". Omdat UNIX-apparaten worden weergegeven door speciale bestanden, kunnen ze worden gebruikt in omleidingen. Speciale bestanden bevinden zich in de map "/dev". Bijvoorbeeld: "lp" - print; "console" - console; "ttyi" - i-de terminal; "null" is een dummy (leeg) bestand (apparaat). Dan, bijvoorbeeld,

Ls > /dev/lp

zal de inhoud van de huidige map afdrukken, en file_1< /dev/null обнулит файл "file_1".

Sorteer bestand_1 | tee /dev/lp | staart -20

In dit geval wordt het bestand "file_1" gesorteerd en afgedrukt, en worden de laatste 20 regels ook op het scherm afgedrukt. Laten we teruggaan naar de uitvoeromleiding. Standaardbestanden zijn genummerd:

0 - standaard, 1 - standaard 2 - standaard. Als u geen foutmelding op het scherm wilt hebben, kunt u deze van het scherm omleiden naar het bestand dat u opgeeft (of het volledig weggooien door het om te leiden naar het bestand "lege apparaat" - /dev/null). Bijvoorbeeld bij het uitvoeren van de opdracht

Kat bestand_1 bestand_2

die de inhoud van de bestanden “file_1” en “file_2” achtereenvolgens op het scherm zou moeten weergeven, het geeft u bijvoorbeeld het volgende

111111 222222 cat: f2: Bestand of map bestaat niet

waarbij 111111 222222 de inhoud is van bestand "file_1" en bestand "file_2" ontbreekt, wat de opdracht "cat" standaard rapporteert aan het standaard diagnosebestand, net als de standaarduitvoer die door het scherm wordt weergegeven. Als u een dergelijk bericht niet op het scherm wilt, kunt u het doorsturen naar het bestand dat u opgeeft:

Cat bestand_1 bestand_2 2>f-err

foutmeldingen worden verzonden (zoals aangegeven door de "2>" omleiding) naar het "f-err" bestand. Overigens kunt u alle informatie naar één bestand “ff” sturen, in dit geval met de constructie

Cat bestand_1 bestand_2 >>ff 2>ff

U kunt niet alleen opgeven welk standaardbestand u wilt doorsturen, maar ook naar welk standaardbestand u wilt doorsturen.

Cat bestand_1 bestand_2 2>>ff 1>&2

Hier wordt eerst "stderr" omgeleid (in de toevoegmodus) naar bestand "ff", en vervolgens wordt de standaarduitvoer omgeleid naar "stderr", wat op dit punt bestand "ff" is. Dat wil zeggen, het resultaat zal vergelijkbaar zijn met het vorige. De constructie "1>&2" betekent dat u naast het nummer van het standaardbestand waarnaar u wilt doorverwijzen, ook "&" ervoor moet zetten; de hele structuur is zonder spaties geschreven.<- закрывает стандартный ввод. >- sluit standaarduitvoer. Commandobestanden. Er zijn verschillende opties om toe te staan ​​dat een tekstbestand als opdracht wordt gebruikt. Laten we een editor gebruiken om een ​​bestand met de naam "cmd" te maken dat één regel als deze bevat:

Datum; pwd; ls

Je kunt de shell aanroepen als een commando, aangeduid met "sh", en het een "cmd"-bestand doorgeven als argument of als omgeleide invoer, d.w.z.

$ sh cmd

$sh

Het resultaat van het uitvoeren van een van deze opdrachten is de datum, vervolgens de naam van de huidige map en vervolgens de inhoud van de map. Een interessantere en handigere optie voor het werken met een batchbestand is om er een uitvoerbaar bestand van te maken, d.w.z. maak er gewoon een commando van, wat wordt bereikt door de beveiligingscode te wijzigen. Om dit te doen, moet u de uitvoering van dit bestand toestaan. Bijvoorbeeld,

Chmod 711 cmd

zal de beveiligingscode "rwx__x__x" maken. Dan een simpel telefoontje

zal dezelfde drie opdrachten uitvoeren. Het resultaat zal hetzelfde zijn als het bestand met de inhoud

Datum; pwd; ls

wordt weergegeven in de vorm: date pwd ls, aangezien de overgang naar een andere regel ook een scheidingsteken is in de reeks opdrachten. Uitvoerbare bestanden kunnen dus niet alleen bestanden zijn die zijn verkregen als resultaat van compilatie en assemblage, maar ook bestanden die in de shell-taal zijn geschreven. Ze worden uitgevoerd in de interpretatiemodus met behulp van een shell-interpreter

Foutopsporing in batchbestanden

SHELL gebruikt twee mechanismen voor het debuggen van batchbestanden. De eerste is: set -v drukt de regels van het opdrachtbestand af terwijl ze worden gelezen. Deze modus wordt gebruikt bij het zoeken naar syntaxisfouten. Om het te gebruiken hoeft u het opdrachtbestand niet te wijzigen, bijvoorbeeld: sh -v proc... hier is proc de naam van het opdrachtbestand. De schakelaar -v kan worden gebruikt in combinatie met de schakelaar -n, die de uitvoering van volgende opdrachten verhindert (de opdracht set -n blokkeert de terminal totdat de EOF-vlag wordt ingevoerd). De opdracht set -x geeft opdrachten weer terwijl ze worden uitgevoerd, en de programmaregels worden naar de terminal uitgevoerd en hun waarden worden vervangen in plaats van de variabelen. Om de schakelopties -x en -v te annuleren, kunt u het set-commando gebruiken - en om te installeren, wijst u de corresponderende waarde toe aan een macrovariabele. SHELL-OMGEVING (VARIABELEN EN PARAMETERS) In de shell-taal kunt u batchbestanden schrijven en de opdracht "chmod" gebruiken om ze uitvoerbaar te maken. Hierna verschillen ze niet meer van andere UNIX OS-opdrachten.

Shell-variabelen

De naam van een shellvariabele is een reeks letters, cijfers en onderstrepingstekens die beginnen met een letter. De waarde van een shellvariabele is een reeks tekens. Het feit dat er slechts twee soorten gegevens in de shell aanwezig zijn: enerzijds een reeks tekens en een tekstbestand, maakt het gemakkelijk om eindgebruikers bij het programmeren te betrekken die nog nooit eerder hebben geprogrammeerd, en anderzijds veroorzaakt een zeker intern protest onder veel programmeurs die gewend zijn aan een aanzienlijk grotere diversiteit en grotere flexibiliteit van taalkundige middelen. Het is echter interessant om te zien hoe hooggekwalificeerde programmeurs, nadat ze bekend zijn geworden met de 'spelregels' van de shell, er vele malen sneller programma's in schrijven dan in C, maar wat vooral interessant is, in sommige gevallen zijn deze programma's lopen zelfs sneller dan die geïmplementeerd in C. Een variabelenaam is vergelijkbaar met het traditionele idee van een identificatie, d.w.z. een naam kan een reeks letters, cijfers en onderstrepingstekens zijn, beginnend met een letter of onderstrepingsteken. De toewijzingsoperator "= kan worden gebruikt om waarden aan variabelen toe te wijzen.

Var_1=13 - "13" is geen getal, maar een reeks van twee cijfers. var_2="UNIX OS" - Dubbele aanhalingstekens (" ") zijn hier vereist omdat er een spatie in de tekenreeks staat.

Andere manieren om waarden aan shell-variabelen toe te wijzen zijn ook mogelijk. De opname bijvoorbeeld

DAT=`datum`

zorgt ervoor dat het "date"-commando als eerste wordt uitgevoerd (de backticks geven aan dat het bijgevoegde commando eerst moet worden uitgevoerd), en het resultaat van de uitvoering ervan, in plaats van te worden uitgevoerd naar de standaarduitvoer, wordt toegewezen als de waarde van een variabele, in dit geval "DAT". U kunt ook een waarde aan een variabele toekennen met behulp van het commando "read", dat ervoor zorgt dat de waarde van de variabele wordt ontvangen via het (toetsenbord)display in de dialoogmodus. Meestal wordt de opdracht "lezen" in het batchbestand voorafgegaan door de opdracht "echo", waarmee u vooraf een bericht op het scherm kunt weergeven. Bijvoorbeeld:

Echo -n "Voer een getal van drie cijfers in:" lees x

Wanneer u dit gedeelte van het opdrachtbestand uitvoert, wordt het bericht weergegeven

Voer een driecijferig nummer in:

de tolk stopt en wacht tot er een waarde via het toetsenbord wordt ingevoerd. Als u bijvoorbeeld "753" heeft ingevoerd, wordt dit de waarde van de variabele "x". Eén "lees"-commando kan waarden aan meerdere variabelen tegelijk lezen (toewijzen). Als er meer variabelen in "read" staan ​​dan er zijn ingevoerd (gescheiden door spaties), krijgen de overige variabelen een lege string toegewezen. Als er meer verzonden waarden zijn dan variabelen in de opdracht "lezen", worden de extra waarden genegeerd. Bij toegang tot een shellvariabele moet u de naam laten voorafgaan door het symbool "$". Dus de commando's echo $var_2 echo var_2 zullen op het scherm verschijnen

UNIX OS var_2 Ontsnappen

Laten we de ontsnappingstechnieken die in de schaal worden gebruikt eens nader bekijken. Dubbele aanhalingstekens (" "), enkele aanhalingstekens (" ") en backslashes (\) worden gebruikt als ontsnappingsmechanismen. Hun actie wordt duidelijk uit de voorbeelden: je kunt meerdere opdrachten op één regel schrijven.

X=22 y=33 z=$x A="$x" B="$x" C=\$x D="$x + $y + $z" E="$x + $y + $z " F=$x\ +\ $y\ +\ $z

(de opdracht G=$x+$y zou mislukken vanwege de spaties) Dan

Echo A = $A B = $B C = $C echo D = $D E = $E F = $F evaluatie echo geëvalueerd A = $A evaluatie echo geëvalueerd B = $B evaluatie echo geëvalueerd C = $C

Wordt op het scherm weergegeven

A = 22 B = $x C = $x D = 22 + 33 + 22 E = $x + $y + $z F = 22 + 33 + 22 geëvalueerd A = 22 geëvalueerd B = 22 geëvalueerd C = 22

Laten we nog enkele voorbeelden geven die te maken hebben met het ontsnappen van regelfeeds. Laat de variabele "string" de waarde krijgen van een 2x3 "array": abc def Merk op dat om te voorkomen dat er extra spaties worden toegewezen, de tweede regel van de array begint vanaf de eerste positie van de volgende regel: string="abc def" Vervolgens er zijn drie opties voor het schrijven van de variabele in het "echo" echo commando $string echo "$string" echo "$string" zal respectievelijk drie verschillende resultaten opleveren: abc def $string abc def en de reeks commando's echo "str_1 str_2" > file_1 echo "str_1 str_2" > file_2 cat file_1 file_2 geeft opeenvolgend identieke bestanden file_1 en file_2: str_1 str_2 str_1 str_2 Merk ook op dat de backslash (\) niet alleen ontsnapt aan het teken dat erop volgt, waardoor u deze kunt gebruiken Speciale symbolen net zoals karakters die zichzelf vertegenwoordigen (het kan ook aan zichzelf ontsnappen - \\), maar in een opdrachtbestand kunt u met een backslash regels samenvoegen tot één regel (ontsnappen aan het einde van een regel). Bijvoorbeeld het eerder gegeven voorbeeld van de opdrachtregel:

Kat bestand_1 | grep -h resultaat | sorteer | cat -b > bestand_2

zou in een batchbestand kunnen worden geschreven, bijvoorbeeld als

Kat bestand_1 | grep -h\resultaat | sorteer | cat -b > bestand_2

Overigens biedt het transportbandsymbool ook het effect van het voortzetten van de opdrachtregel. In dit geval kan het een mooier resultaat opleveren, zoals dit:

Kat bestand_1 | grep -h resultaat | sorteer | cat -b > bestand_2

Manipulaties met shell-variabelen Ondanks het feit dat shell-variabelen over het algemeen als strings worden opgevat, dat wil zeggen dat “35” geen getal is, maar een string van twee tekens “3” en “5”, kunnen ze in een aantal gevallen verschillend worden geïnterpreteerd, bijvoorbeeld als gehele getallen. De opdracht "expr" heeft verschillende mogelijkheden. Laten we er enkele illustreren met voorbeelden: Een batchbestand uitvoeren:

X=7 y=2 a=`expr $x + $y` ; echo a=$a a=`expr $a + 1` ; echo a=$a b=`expr $y - $x` ; echo b=$b c=`expr $x "*" $y` ; echo c=$c d=`expr $x / $y` ; echo d=$d e=`expr $x % $y` ; echo e=$e

zal op het scherm verschijnen

A=9 a=10 b=-5 c=14 d=3 e=1

De vermenigvuldigingsbewerking ("*") moet worden geëscaped, omdat dit pictogram in de shell wordt gezien als een speciaal teken, wat betekent dat elke reeks tekens op deze plaats kan worden vervangen. Met het commando "expr" zijn niet alleen (gehele getallen) mogelijk rekenkundige bewerkingen, maar ook strings:

A=`expr "cocktail" : "haan"` ; echo $A B=`expr "cocktail" : "staart"` ; echo $B C=`expr "cocktail" : "koken"` ; echo $C D=`expr "cock" : "cocktail"` ; echo $D

Er worden cijfers op het scherm weergegeven met het aantal overeenkomende tekens in de ketens (vanaf het begin). De tweede regel mag niet langer zijn dan de eerste:

4 0 0 0

Variabelen exporteren UNIX OS heeft het concept van een proces. Er vindt een proces plaats wanneer een opdracht wordt uitgevoerd. Bijvoorbeeld wanneer u "p" op het toetsenbord typt "proces "p" wordt voortgebracht. Op zijn beurt kan "p" andere processen voortbrengen. Laten we aannemen dat "p" "p1" en "p2" aanroept, die opeenvolgend de overeenkomstige processen voortbrengen. Elk proces heeft zijn eigen omgeving - een reeks variabelen die ervoor beschikbaar zijn Voordat "p" werd gestart, was er bijvoorbeeld al een omgeving waarin sommige variabelen al waren gedefinieerd. Het starten van "p" genereert een nieuwe omgeving en "p2" zal daarin al worden gegenereerd. Variabelen zijn lokaal voor het proces waarin ze worden gedeclareerd, d.w.z. waar ze waarden aan toegewezen krijgen. Om ze beschikbaar te maken voor andere voortgebrachte processen, moeten ze expliciet worden doorgegeven gebruikt.

Opties

Parameters kunnen worden doorgegeven aan het opdrachtbestand. De schaal gebruikt positionele parameters (dat wil zeggen dat de volgorde waarin ze verschijnen belangrijk is). In het commandobestand beginnen de variabelen die overeenkomen met de parameters (vergelijkbaar met shell-variabelen) met het symbool "$", gevolgd door een van de cijfers van 0 tot 9: Laat "examp-1" worden aangeroepen met de parameters "cock" en "staart". Deze parameters worden in de nieuwe omgeving opgenomen onder de standaardnamen "1" en "2". De (standaard) variabele met de naam "0" slaat de naam van de opgeroepen berekening op. Bij toegang tot parameters wordt het getal voorafgegaan door het dollarteken "$" (net als bij toegang tot variabelen): $0 komt overeen met de naam van dit commandobestand; $1 is de eerste parameter in volgorde; $2 tweede parameter, enz. Omdat het aantal variabelen waaraan parameters kunnen worden doorgegeven beperkt is tot één cijfer, d.w.z. 9e ("0", zoals al opgemerkt, heeft een speciale betekenis), en vervolgens voor verzending meer parameters wordt het speciale commando "shift" gebruikt. De opdracht "set" biedt een unieke benadering van parameters. Fragmenteren bijvoorbeeld

Stel een b in met echo eerst=$1 seconde=$2 derde=$3

zal op het scherm verschijnen

Eerste=een tweede=b derde=c

die. het commando "set" stelt de parameterwaarden in. Dit kan erg handig zijn. Het commando "datum" geeft bijvoorbeeld de huidige datum weer, bijvoorbeeld "Ma 01 mei 12:15:10 2000", bestaande uit vijf woorden, en vervolgens

Stel `datum` echo $1 $3 $5 in

zal op het scherm verschijnen

ma 01 2000

Met het commando "set" kunt u ook de uitvoering van het programma besturen, bijvoorbeeld: set -v-regels worden naar de terminal uitgevoerd en door de shell gelezen. set +v annuleert de vorige modus. set -x drukt opdrachten af ​​naar de terminal voordat ze worden uitgevoerd. set +x annuleert de vorige modus. Het "set"-commando zonder parameters geeft de status van de softwareomgeving aan de terminal weer.

Shell-vervangingen

Voordat de opdrachten in batchbestanden direct worden geïnterpreteerd en uitgevoerd, wordt de shell uitgevoerd verschillende soorten vervangingen: 1. VERVANGING VAN RESULTATEN. Alle opdrachten tussen aanhalingstekens worden uitgevoerd en het resultaat wordt op hun plaats vervangen. 2. VERVANGING VAN WAARDEN VAN PARAMETERS EN VARIABELEN. Dat wil zeggen dat woorden die beginnen met "$" worden vervangen door de overeenkomstige waarden van variabelen en parameters. 3. lacunes interpreteren. Ontsnapte spaties worden genegeerd. 4. GENERATIE VAN BESTANDSNAMEN. Woorden worden gecontroleerd op de aanwezigheid van speciale tekens ("*", "?"", "") en de bijbehorende generaties worden uitgevoerd. Softwareomgeving Elk proces heeft een omgeving waarin het draait. Shell gebruikt een aantal van deze omgevingsvariabelen. Als u de opdracht "set" zonder parameters typt, wordt op het scherm informatie weergegeven over een aantal standaardvariabelen die bij het inloggen zijn gemaakt (en vervolgens worden doorgegeven aan al uw nieuwe processen "geërfd"), evenals variabelen die door uw processen zijn gemaakt en geëxporteerd . Het specifieke type en de inhoud van de informatie-uitvoer hangt in grote mate af van welke versie van UNIX wordt gebruikt en hoe het systeem is geïnstalleerd.

Het resultaat van het uitvoeren van de set-opdracht zonder parameters (niet volledig):

HOME=/root PATH=/usr/local/bin:/usr/bin:/bin:.:/usr/bin/X11: IFS= LOGNAME=sae MAIL=/var/spool/mail/sae PWD=/home/ sae/STUDY/SHELL PS1=$(PWD):" " PS2=> SHELL=/bin/bash

Laten we commentaar geven op de waarden van de variabelen. HOME=/root is de naam van de homedirectory waar de gebruiker terechtkomt na het inloggen. Dat wil zeggen, nadat ik de naam en het wachtwoord correct heb ingevoerd, kom ik in de map "/root" terecht. PATH=/bin:/usr/bin:.:/usr/local/bin:/usr/bin/X11 - deze variabele specificeert de reeks bestanden waarnaar de shell zoekt bij het zoeken naar een commando. Bestandsnamen worden hier gescheiden door dubbele punten. De kijkvolgorde komt overeen met de volgorde van de namen op het parcours. Maar in eerste instantie vindt het zoeken plaats tussen de zogenaamde ingebouwde commando's. De ingebouwde commando's omvatten de meest gebruikte commando's, zoals "echo", "cd", "pwd", "date". Hierna doorzoekt het systeem de directory “/bin”, die de commando’s “sh”, “cp”, “mv”, “ls”, enz. kan bevatten. Dan de directory "/usr/bin" met de commando's "cat", "ss", "expr", "nroff", "man" en vele anderen. Vervolgens vindt de zoekopdracht plaats in de huidige map (".", of een andere aanduiding "leeg", d.w.z. ""), waar de door u geschreven opdrachten zich hoogstwaarschijnlijk bevinden. Na het typen van de opdrachtregel en het indrukken van "shell" herkent (na het uitvoeren van de noodzakelijke vervangingen) de naam die overeenkomt met de opdracht en zoekt ernaar in de mappen vermeld in PATH. Als de opdracht buiten deze mappen wordt geplaatst, wordt deze niet gevonden. Als er meerdere commando's met dezelfde naam zijn, wordt het commando dat zich in de eerst bekeken map bevindt, aangeroepen. PATH kan, net als andere variabelen, eenvoudig worden gewijzigd door mappen toe te voegen, te herschikken of te verwijderen. IFS= (Internal Field Separator) geeft tekens weer die dienen om woorden (velden) van elkaar te scheiden. Dit zijn “spatie”, “tab” en “line feed”, hier is dus links van de opdracht niets zichtbaar en zijn er twee regels bezet. LOGNAME=root - loginnaam (“gebruikersnaam”). MAIL=/var/spool/mail/root - de naam van het bestand waarin (e-mail)mail wordt ontvangen. PWD=/root - naam van de huidige map PS1=$(PWD):" " - type map. In dit geval zal de prompter de naam van de huidige map weergeven, gevolgd door een dubbele punt en een spatie. Dat wil zeggen, er zal "/root: " zijn. PS2=> - deze prompt (hier ">") wordt gebruikt als een uitnodiging om door te gaan met het invoeren (op de volgende regel) van een onvoltooide opdracht. Typ bijvoorbeeld het openingshaakje "(" en druk na het indrukken van in de volgende regel ziet u deze prompter. Als u niet weet wat u vervolgens moet doen, typt u het haakje sluiten ")" en het verdwijnt. SHELL=/bin/sh - Deze variabele specificeert de shell die de gebruiker gebruikt. In dit geval wordt er gebruik van gemaakt standaard schaal("sh"). De initiële omgeving wordt automatisch geïnstalleerd bij het inloggen met behulp van bestanden als "/etc/rc" en "/etc/.profile". Eén manier om eenvoudig de omgeving te wijzigen (bijvoorbeeld het opdrachtzoekpad, programmatype, shelltype, schermkleur, enz.) is door deze informatie in uw thuismap te plaatsen in een gespecialiseerd ".profile"-bestand ($(HOME)/ . profiel), waarbij de vereiste waarden worden toegewezen omgevingsvariabelen. Dat wil zeggen, roep dit bestand naar de editor en schrijf wat je maar wilt). Vervolgens wordt dit bestand elke keer dat u inlogt automatisch uitgevoerd en wordt er een nieuwe omgeving geïnstalleerd. Dit bestand MOET in uw HOME-map(invoergidsen). Houd er rekening mee dat bestandsnamen die met een punt beginnen over het algemeen een speciale status hebben. Ze worden dus niet op het scherm weergegeven met een eenvoudig "ls"-commando - u moet dit commando aanroepen met de vlag "-a". Ze worden overigens niet zonder onderscheid vernietigd door het commando “rm *”. De shell-interpreter wijst zelf automatisch waarden toe aan de volgende variabelen (parameters): ? de waarde die door de laatste opdracht is geretourneerd; $ procesnummer; ! achtergrondprocesnummer;

  1. het aantal positionele parameters dat aan de schaal wordt doorgegeven;
  • lijst met parameters als één regel;

@ lijst met parameters, als een reeks woorden; - vlaggen doorgegeven aan de schaal. Wanneer u toegang krijgt tot deze variabelen (dat wil zeggen, wanneer u ze gebruikt in een opdrachtbestand - shell-programma), moet u "$" vooraan zetten. Een belangrijke rol bij het maken van unieke bestanden wordt gespeeld door de speciale variabele "$$", waarvan de waarde overeenkomt met het nummer van het proces dat deze berekening uitvoert. Elke nieuwe berekening die door een computer wordt uitgevoerd, initieert een of meer processen die automatisch de getallen in volgorde ontvangen. Als u het procesnummer als bestandsnaam gebruikt, kunt u er dus zeker van zijn dat elk nieuw bestand een nieuwe naam krijgt (deze wordt niet in de plaats van een bestaande geschreven). Het voordeel is ook het grootste nadeel van deze methode voor het benoemen van bestanden. Het is niet bekend welke namen aan de bestanden worden toegewezen. En als het binnen is dit proces Als u een bestand kunt vinden “zonder te kijken”, d.w.z. door het te openen met $$, kunnen dergelijke bestanden gemakkelijk verloren gaan. Dit zorgt voor extra problemen bij het debuggen van programma's. De tolk bellen Nadat de gebruiker in het systeem is geregistreerd (met behulp van het login-commando), wordt de SHELL-taaltolk gebeld. Als de registratiedirectory van de gebruiker een .profile-bestand bevat, voert de tolk dit bestand uit voordat ten minste één opdracht van de terminal wordt ontvangen (er wordt aangenomen dat het .profile-bestand opdrachten bevat). Bij het aanroepen kunnen de volgende sleutels worden opgegeven: -c string Commando's worden uit de opgegeven string gelezen. -s Commando's worden gelezen vanuit standaardinvoer. Tolkberichten worden naar een standaard diagnostisch bestand geschreven. -i Interactieve bedrijfsmodus. Als het eerste teken van de parameter "0" een - teken is, worden de opdrachten uit het .profile-bestand gelezen.

PROGRAMMASTRUCTUREN===

Zoals in elke programmeertaal kan shell-tekst commentaar bevatten. Hiervoor wordt het symbool "#" gebruikt. Alles wat op de regel (in het commandobestand) links van dit teken staat, wordt door de tolk gezien als commentaar. Bijvoorbeeld,

# Dit is een opmerking.

Zoals elke procedurele programmeertaal heeft de shell-taal operators. Met een aantal operators kunt u de volgorde van de opdrachtuitvoering bepalen. Bij dergelijke operatoren is het vaak nodig om de voorwaarde te controleren, die de richting bepaalt waarin de berekeningen doorgaan.

Test("")-opdracht

Het testcommando controleert of aan een bepaalde voorwaarde is voldaan. Shell-taalselectie- en lusinstructies worden gegenereerd met behulp van deze (ingebouwde) opdracht. Twee mogelijke opdrachtformaten:

Test conditie

[ voorwaarde ]

we zullen de tweede optie gebruiken, d.w.z. In plaats van het woord ‘test’ vóór de voorwaarde te schrijven, zullen we de voorwaarde tussen haakjes plaatsen, wat vaker voorkomt bij programmeurs. In feite zal de shell dit commando herkennen aan het openingshaakje "[" als het woord dat overeenkomt met het "test" commando. Er moeten spaties zijn tussen de haakjes en de voorwaarde die ze bevatten. Er moeten ook spaties staan ​​tussen de waarden en het vergelijkings- of bewerkingssymbool. VOORWAARDEN VOOR BESTANDSCONTROLE: -f bestand bestand "bestand" is een normaal bestand; -d bestand bestand "bestand" - map; -с bestand bestand "bestand" is een speciaal bestand; -r bestand heeft toestemming om het bestand "bestand" te lezen; -w bestand heeft toestemming om naar bestand "bestand" te schrijven; -s bestand bestand "bestand" is niet leeg.

VOORWAARDEN VOOR HET TESTEN VAN STRINGS: str1 = str2 strings "str1" en "str2" komen overeen; str1 != str2 strings "str1" en "str2" zijn niet hetzelfde; -n str1 string "str1" bestaat (niet leeg); -z str1 string "str1" bestaat niet (leeg). Voorbeelden.

X="wie is wie"; x exporteren; [ "wie is wie" = "$x" ]; echo $? 0 x=abc; x exporteren; [abc = "$x" ] ; echo $? 0 x=abc; x exporteren; [ -n "$x" ] ; echo $? 0x="" ; x exporteren; [ -n "$x" ] ; echo $? 1

Daarnaast zijn er twee standaard waarden voorwaarden die gebruikt kunnen worden in plaats van een voorwaarde (hiervoor zijn geen haakjes nodig). VOORWAARDEN VOOR HET VERGELIJKEN VAN GEHEELDEN: x -eq y "x" is gelijk aan "y", x -ne y "x" is niet gelijk aan "y", x -gt y "x" is groter dan "y", x - ge y "x" is groter dan of gelijk aan "y", x -lt y "x" kleiner dan "y", x -le y "x" kleiner dan of gelijk aan "y". COMPLEXE OMSTANDIGHEDEN: Geïmplementeerd met behulp van standaard logische bewerkingen: ! (not) keert de waarde van de exitcode om. -o (of) komt overeen met logische "OR". -a (en) komt overeen met logische "AND".

Voorwaardelijke verklaring "als"

Over het algemeen heeft de "if" -instructie de structuur

Indien voorwaarde, lijst dan

Hier kan "elif", een verkorte versie van "else if", samen met de volledige versie worden gebruikt, d.w.z. Het nesten van een willekeurig aantal "if"-instructies (evenals andere instructies) is toegestaan. Uiteraard moet de ‘lijst’ in elk geval betekenisvol en acceptabel zijn in de gegeven context. De meest ingekorte structuur van deze operator

Indien voorwaarde, vermeld dan fi

als aan de voorwaarde is voldaan (meestal wordt hier de voltooiingscode "0" ontvangen), wordt de "lijst" uitgevoerd, anders wordt deze overgeslagen. Voorbeelden: Laat "if-1" schrijven

Als [ $1 -gt $2 ]

dan pwd else echo $0: Hallo!

Vervolgens roept u if-1 12 11 op en produceert /home/sae/STUDY/SHELL en if-1 12 13 produceert if-1: Hallo!

Oproepoperator ("casus")

De selectieoperator "case" heeft de structuur:

Kofferkoord erin

sjabloon) lijst met opdrachten;; sjabloon) lijst met opdrachten;; ... sjabloon) lijst met opdrachten;;

Hier zijn "case", "in" en "esac" functiewoorden. De "string" (dit kan een enkel teken zijn) wordt vergeleken met het "patroon". Vervolgens wordt de "opdrachtenlijst" van de geselecteerde regel uitgevoerd. De ";;" aan het einde van de selectieregels ziet er ongebruikelijk uit, maar schrijf hier ";". het zou een vergissing zijn. Voor elk alternatief kunnen meerdere opdrachten worden uitgevoerd. Als deze opdrachten op één regel worden geschreven, dan is het symbool ";" zal worden gebruikt als opdrachtscheidingsteken. Gebruikelijk laatste lijn selectie heeft het patroon "*", wat in de "case"-structuur "elke waarde" betekent. Deze regel wordt geselecteerd als de waarde van de variabele (hier $z) niet overeenkomt met een van de eerder geschreven patronen, begrensd door het haakje ")". De waarden worden bekeken in de volgorde waarin ze zijn geschreven.

Opgesomde lusoperator ("for")

De lusoperator "for" heeft de structuur:

Voor naam

do lijst met uitgevoerde opdrachten waarbij "for" een hulpwoord is dat het type lus definieert, "do" en "done" zijn hulpwoorden die de hoofdtekst van de lus benadrukken. Laat het commando "lsort" worden weergegeven door een batchbestand

Voor i in file_1 file_2 file_3 doe proc_sort $i gedaan

In dit voorbeeld fungeert de naam "i" als lusparameter. Deze naam kan worden beschouwd als een shell-variabele waaraan de vermelde waarden opeenvolgend worden toegewezen (i=file_1, i=file_2, i=file_3), en de opdracht "proc_sort" wordt in een lus uitgevoerd. Vaak wordt de vorm "voor i in *" gebruikt, wat betekent "voor alle bestanden in de huidige map". Laat "proc_sort" op zijn beurt worden weergegeven door een batchbestand

Kat $ 1 | sorteer | tee /dev/lp > $(1)_gesorteerd

die. opeenvolgend gesorteerd gespecificeerde bestanden, worden de sorteerresultaten afgedrukt ("/dev/lp") en verzonden naar de bestanden file_1_sorted file_2_sorted en file_3_sorted

Lusinstructie met ware voorwaarde ("while")

De "while"-structuur, die ook berekeningen uitvoert, heeft de voorkeur wanneer de exacte lijst met parameterwaarden vooraf onbekend is of deze lijst moet worden verkregen als resultaat van berekeningen in een lus. De "while"-lusinstructie heeft de structuur:

Terwijl conditie

do lijst met uitgevoerde opdrachten waarbij "while" een hulpwoord is dat het type lus met een ware voorwaarde bepaalt. De lijst met opdrachten in de lusbody (tussen "do" en "done") wordt herhaald totdat de voorwaarde waar blijft (dat wil zeggen de exitcode van de laatste opdracht in de lusbody is "0") of de lus niet wordt onderbroken vanaf binnenin speciale elftallen(“pauze”, “doorgaan” of “afsluiten”). Wanneer u voor het eerst de lus betreedt, moet de voorwaarde waar zijn. Met het commando "break [n]" kunt u een lus doorbreken. Als "n" ontbreekt, is dit gelijk aan "break 1". "n" geeft het aantal geneste lussen aan waaruit moet worden afgesloten, bijvoorbeeld "break 3" - verlaat drie geneste lussen. In tegenstelling tot het commando "break" stopt het commando "continue [n]" alleen de uitvoering van de huidige lus en keert terug naar het BEGIN van de lus. Het kan ook met een parameter zijn. "Doorgaan met 2" betekent bijvoorbeeld het verlaten van het begin van de tweede (geteld vanaf de diepte) geneste lus. Met de opdracht "exit [n]" kunt u de procedure geheel afsluiten met de retourcode "0" of "n" (als de parameter "n" is opgegeven). Deze opdracht kan in meer dan alleen lussen worden gebruikt. Zelfs bij een lineaire reeks opdrachten kan het bij het debuggen nuttig zijn om de (huidige) berekening op een bepaald punt te stoppen.

Lusinstructie met valse voorwaarde ("tot")

De lusoperator "tot" heeft de structuur:

Tot conditie

do lijst met uitgevoerde opdrachten waarbij "tot" een hulpwoord is dat het type lus met een valse voorwaarde bepaalt. De lijst met opdrachten in de hoofdtekst van de lus (tussen "do" en "done") wordt herhaald totdat de voorwaarde onwaar blijft of de lus van binnenuit wordt onderbroken door speciale opdrachten ("break", "continue" of "exit" ). De eerste keer dat u de lus betreedt, mag de voorwaarde niet waar zijn. Het verschil met de operator "while" is dat de lusconditie wordt gecontroleerd op onwaarheid (voor een exitcode die niet nul is van het laatste commando van de lusbody) en wordt gecontroleerd NA elke (inclusief de eerste!) uitvoering van commando's in de lus lichaam. Voorbeeld.

Tot vals doen

lees x als [ $x = 5 ] echo dan genoeg ; break else echo nog wat fi

Hier wacht het programma in een oneindige lus op het invoeren van woorden (waarbij de zin "nog wat" op het scherm wordt herhaald) totdat "5" wordt ingevoerd. Hierna wordt "genoeg" uitgegeven en stopt het commando "break" met het uitvoeren van de lus.

Lege operator

De lege instructie heeft het formaat

:

Niks doen. Retourneert de waarde "0".

Functies in de schaal

Met deze functie kunt u een lijst met shell-opdrachten voorbereiden voor latere uitvoering. De functiebeschrijving ziet er als volgt uit:

Naam() (opdrachtenlijst)

waarna de functie bij naam wordt aangeroepen. Wanneer de functie wordt uitgevoerd, wordt er geen nieuw proces gemaakt. Het draait in de omgeving van het overeenkomstige proces. De argumenten van de functie worden de positionele parameters; de naam van de functie is de nulparameter. U kunt de uitvoering van een functie onderbreken met behulp van de operator "return [n]", waarbij (optioneel) "n" de retourcode is.

Afhandeling onderbreken ("trap")

Het kan nodig zijn om de uitvoering van het programma te beschermen tegen onderbrekingen. Meestal komt u de volgende onderbrekingen tegen die overeenkomen met signalen: 0 verlaat de tolk, 1 hangt op (verbreekt de verbinding met de externe abonnee), 2 onderbreking van , 9 vernietiging (niet onderschept), 15 einde executie. Ter bescherming tegen interrupts is er een "trap" -opdracht, die het formaat heeft:

Vang signalen van de "opdrachtenlijst" op

Als er interrupts optreden in het systeem, waarvan de signalen gescheiden door een spatie in de “signalen” worden vermeld, dan wordt de “commandolijst” uitgevoerd, waarna (als het “exit”-commando niet in de commandolijst is uitgevoerd) de besturing zal plaatsvinden. keer terug naar het onderbrekingspunt en de uitvoering van het opdrachtbestand zal doorgaan. Als het bijvoorbeeld nodig is om bestanden in “/tmp” te verwijderen voordat u de uitvoering van een commandobestand onderbreekt, dan kan dit worden gedaan met het commando “trap”:

Trap "rm /tmp/*; exit 1" 1 2 15

die voorafgaat aan andere opdrachten in het bestand. Hier wordt, na het verwijderen van de bestanden, het opdrachtbestand afgesloten.

Stuur uw goede werk naar de kennisbank is eenvoudig. Gebruik onderstaand formulier

Studenten, promovendi en jonge wetenschappers die de kennisbasis gebruiken in hun studie en werk zullen je zeer dankbaar zijn.

geplaatst op http://www.allbest.ru/

Federaal Agentschap voor Spoorwegvervoer

Siberische Staatstransportuniversiteit

Afdeling " Informatie Technologie vervoer »

Laboratoriumwerk nr. 1

"COMMANDOTAAL VAN HET BESTURINGSSYSTEEM"

in de discipline "Besturingssystemen"

Doel van het werk

Het doel van het werk is het verwerven van praktische vaardigheden in het werken in de MS WINDOWS-omgeving in commandomodus.

Voortgang

Verlaten naar de opdrachtregelmodus (Start/Programma's/Accessoires/Opdrachtprompt of Start/Uitvoeren/cmd.exe)

We hebben gevraagd naar de versie van het besturingssysteem waarmee we werken.

(c) Microsoft Corporation uit 2011. Alle rechten voorbehouden.

C:\Gebruikers\Home>ver

Microsoft Windows

C:\Gebruikers\Home>

Het monitorscherm (CLS) schoongemaakt.

We hebben de flashdrive geformatteerd, nadat we de inhoud eerder in een aparte map hadden opgeslagen harde schijf.

C:\Gebruikers\Home>formaat f: /q

Plaats de nieuwe schijf in station F:

en druk op ENTER...

Bestandssysteemtype: NTFS.

Snelformaat: 14786 MB

Volumelabel (32 tekens, ENTER - geen label nodig):

Bestandssysteemstructuren maken.

Het formatteren is voltooid.

14,4 GB totaal op schijf.

Beschikbaar: 14,4 GB.

Stel het label van de flashdrive in.

C:\Gebruikers\Home>label f:Rebrikova

Met behulp van opdrachten voor het werken met mappen hebben we het volgende gedaan:

een COP-directory gemaakt op een flashstation;

C:\Gebruikers\Home>md f:\COP

de inhoud van een submap van de harde schijf ernaar gekopieerd (in dit geval de inhoud van een flashstation);

C:\Gebruikers\Home>xcopy-fysica f:\COP

natuurkunde\22lab.docx

natuurkunde\6lab.docx

natuurkunde\Fizika.docx

natuurkunde\optica. Atoomfysica.pdf

natuurkunde\Thematische materialen over natuurkunde.pdf

Gekopieerde bestanden: 5.

C:\Gebruikers\Home>

toonde de COP-directory op het scherm, bestudeerde de structuur van directory-items

(de inhoud van de map wordt weergegeven op datum van wijziging, mappen worden aangegeven

, de grootte ervan staat naast het bestand)

C:\Gebruikers\Home>dir f:\COP

Inhoud van de map f:\COP

09.10.2014 04:43

.

09.10.2014 04:43

..

5 bestanden 2.627.427 bytes

maakte kennis met de hulp voor het DIR-commando en sorteerde de inhoud van de COP-directory op naam

C:\Gebruikers\Home>dir f:\COP /O:N

Het volume in apparaat F heeft een Rebrikov-label

Volumeserienummer: 22C0-2266

Inhoud van de map f:\COP

09.10.2014 04:43

.

09.10.2014 04:43

..

05/04/2014 12:48 43 213 22laba.docx

14/04/2014 09:29 49 283 6laba.docx

24/06/2014 16:08 583 602 Fizika.docx

20-04-2014 18:34 436 220 Optiek. Atoomfysica.pdf

20/04/2014 18:32 1 515 109 Thematische materialen over natuurkunde.pdf

5 bestanden 2.627.427 bytes

2 mappen 10 695 479 296 bytes vrij

En op bestandsgrootte:

C:\Gebruikers\Home>dir f:\COP /O:S

Het volume in apparaat F heeft een Rebrikov-label

Volumeserienummer: 22C0-2266

Inhoud van de map f:\COP

09.10.2014 04:43

..

09.10.2014 04:43

.

05/04/2014 12:48 43 213 22laba.docx

14/04/2014 09:29 49 283 6laba.docx

20-04-2014 18:34 436 220 Optiek. Atoomfysica.pdf

24/06/2014 16:08 583 602 Fizika.docx

20/04/2014 18:32 1 515 109 Thematische materialen over natuurkunde.pdf

5 bestanden 2.627.427 bytes

2 mappen 10 695 479 296 bytes vrij

met behulp van de opdracht voor het omleiden van uitvoer, schreef de COP-map naar het DIR.DAT-bestand van de hoofdmap van de flashdrive;

de inhoud van het DIR.DAT-bestand op het scherm weergeven;

C:\Gebruikers\Home>dir f:\COP>f:dir.dat

C:\Gebruikers\Home>kopieer f:dir.dat con

Het volume in apparaat F heeft een Rebrikov-label

Volumeserienummer: 22C0-2266

Inhoud van de map f:\COP

09.10.2014 04:43

.

09.10.2014 04:43

..

05/04/2014 12:48 43 213 22laba.docx

14/04/2014 09:29 49 283 6laba.docx

24/06/2014 16:08 583 602 Fizika.docx

20-04-2014 18:34 436 220 Optiek. Atoomfysica.pdf

20/04/2014 18:32 1 515 109 Thematische materialen over natuurkunde.pdf

5 bestanden 2.627.427 bytes

2 mappen 10 695 479 296 bytes vrij

Gekopieerde bestanden: 1.

het DIR.DAT-bestand verwijderd;

C:\Gebruikers\Home>del f:dir.dat

met behulp van de pijplijn werden de namen van submappen van de hoofdmap van station C: op het scherm weergegeven (DIR | FIND "DIR");

C:\Gebruikers\Home>DIR | ZOEK "DIR"

09.10.2014 04:37

.

09.10.2014 04:37

..

21.09.2014 11:09

Contacten

24.09.2014 18:29

Bureaublad

09.10.2014 04:36

Bureaublad

21.09.2014 11:09

Documenten

07.10.2014 19:08

Downloads

21.09.2014 11:09

Favorieten

21.09.2014 11:09

Koppelingen

26.09.2014 18:42

Muziek

21.09.2014 11:09

Afbeeldingen

21.09.2014 11:09

Zoekopdrachten

21.09.2014 11:09

Videos

09.10.2014 04:37

natuurkunde

C:\Gebruikers\Home>

de COP-directory op de flashdrive verwijderd.

C:\Gebruikers\Home>del f:\COP

f:\COP\*, Doorgaan? Y

C:\Gebruikers\Home>rd f:\COP

We beheersen de startprogramma's uit verschillende mappen:

o vanuit de huidige map;

C:\Gebruikers\Home>iTunes64Setup.exe

o vanuit elke map die het pad aangeeft;

C:\Gebruikers\Home>iTunes64Setup.exe

o met behulp van het PATH-commando.

C:\Gebruikers\Home>pad iTunes64Setup.exe

Met behulp van opdrachten voor het werken met bestanden en schijven hebben we de volgende bewerkingen uitgevoerd:

maakte een TEXT-map op een flashstation en maakte daarin twee tekstbestanden (1.TXT en 2.TXT);

C:\Gebruikers\Home>md f:tekst

C:\Gebruikers\Home>kopieer con f:\text\1.txt

Gekopieerde bestanden: 1.

C:\Gebruikers\Home>kopieer con f:\text\2.txt

Gekopieerde bestanden: 1.

uitgevoerde aaneenschakeling van het gemaakte tekstbestanden, het resulterende bestand kreeg de naam A.TXT;

C:\Gebruikers\Home>kopie f:\text\1.txt+f:\text\2.txt a.txt

Gekopieerde bestanden: 1.

vergeleek bestand A.TXT regel voor regel met bestand 1.TXT en noteer het vergelijkingsresultaat in bestand A.PRT, leg het resultaat van de vergelijking uit;

C:\Gebruikers\Home>FC f:\text\1.txt f:\text\a.txt

"FC" is niet intern of extern

kopieerde de uitvoerbare bestanden van externe WINDOWS-opdrachten beginnend met “DISK” van de map C:\WINDOWS\SYSTEM32 naar de hoofdmap van de flashdrive;

C:\Gebruikers\Home>cd c:\windows\system32

c:\Windows\System32>schijf kopiëren*.* f:

Gekopieerde bestanden: 7.

o een flashdiskcontrole uitgevoerd (CHKDSK of SCANDISK);

C:\Gebruikers\Home>chkdsk f:

"chkdsk" is niet intern of extern

team, uitvoerbaar programma of batchbestand.

C:\Gebruikers\Home>schijf scannen f:

"scandisk" is niet intern of extern

opdracht, uitvoerbaar programma of batchbestand.

het A.TXT-bestand verwijderd.

c:\Gebruikers\Home>del f:\text\a.txt

De waarden van omgevingsgebiedvariabelen weergegeven en in het rapport ingevoerd. We schreven een nieuwe variabele TOWN en gaven deze de waarde “Novosibirsk”. opmaak opdrachtmap bestand

c:\Gebruikers\Thuis>stad instellen=Novosibirsk

c:\Gebruikers\Home>echo %town%

Novosibirsk

Wij hebben het IP-adres van de netwerkkaart van uw computer (IPCONFIG) bepaald.

c:\Gebruikers\Home>IPCONFIG

"IPCONFIG" is geen interne of externe opdracht, uitvoerbaar programma of batchbestand.

Geplaatst op Allbest.ru

...

Soortgelijke documenten

    Software-ontwerp. Schema van de initiële vorming van een bestandsmap, weergave van een bestandsmap, bestanden verwijderen, bestanden sorteren op naam, aanmaakdatum en grootte met behulp van de directe selectiemethode. Een directory in een bestandssysteem beheren.

    cursuswerk, toegevoegd 01/08/2014

    Algemene kenmerken en mogelijkheden van het Windows 95-netwerkbesturingssysteem, hun classificatie, variëteiten. Regels voor het werken met Word, het maken en opslaan van documenten. Vorming en invoer van gegevens in Excel-tabellen. Schijven formatteren.

    test, toegevoegd op 25-02-2009

    Dirent-functies zoals invoerstructuur map onafhankelijk van het bestandssysteem. Directory-inhoud en bestandsinformatie ophalen. Ontwikkeling van een blokdiagram van het programma-algoritme. Software bestuderen om de taak uit te voeren.

    cursuswerk, toegevoegd op 22-07-2014

    Werken met objecten van het Windows-besturingssysteem: basisconcepten en sneltoetsen. Bestanden en mappen maken en bewerken. Schermafbeeldingen en afbeeldingen verf-editor. Eenvoudige tekstdocumenten bewerken in Kladblok. Werken met een rekenmachine.

    laboratoriumwerk, toegevoegd 30-11-2010

    Installatie van het Windows 2000/XP/2003 besturingssysteem. Onderdelen van Remote Installation Services. Automatische (onbeheerde) installatie van besturingssysteem van algemene catalogus op server. Het besturingssysteem en applicaties installeren vanaf een image die is gemaakt met software van derden.

    samenvatting, toegevoegd 04/03/2010

    Inleiding tot API-programmering. Toetsenbordberichten vertalen naar ASCII-codes. Tekst van het programma in 32-bits assembler met behulp van API-functies. Functie voor het maken van een dialoogvenster. Bepalen van het station, de map en de bestandsnaam die moeten worden geopend.

    cursuswerk, toegevoegd op 18-05-2014

    Windows-beheer Instrumentatie als gereedschapskist Windows-beheer, de algemene kenmerken en mogelijkheden ervan, functionele kenmerken. Lessen, evenementen en WMI-beveiliging. Werken met objecten en verzamelingen objecten verkregen als resultaat van zoekopdrachten.

    cursuswerk, toegevoegd op 26-04-2011

    Kenmerken van het werken in de NORTON COMMANDER-shellomgeving. Interactie met het besturingssysteem. Formaat voor weergave van de inhoudsopgave van de catalogus. Bekijk schijfinformatie in het mappenboompaneel. Modus snelle kijk bestanden. Controle van de weergave van panelen.

    samenvatting, toegevoegd op 17-05-2009

    Methoden voor het herstellen van het Windows-besturingssysteem, hun voor- en nadelen. Het besturingssysteem herstellen tijdens het opstarten met behulp van de herstelconsole, met behulp van een Windows XP- en Acronis-schijf Ware afbeelding. Controle van de integriteit van systeembestanden.

    presentatie, toegevoegd 20-06-2014

    Het uiterlijk van het Windows 95-besturingssysteem. Regels voor het benoemen van bestanden. De volgorde waarin bestanden op schijf worden opgeslagen. Systeem voor bestandsopslag en directory-organisatie. Hiërarchisch op meerdere niveaus bestandssysteem. Volledige bestandsnaam. Hiërarchie van Windows-mappen.

Een systeem voor het besturen van een computer, de bedrijfsprocessen, het interne geheugen en gebruikersacties in het algemeen. We nodigen de lezer uit om het besturingssysteem nader te bekijken dit aspect.

Wat is dit?

Natuurlijk is het besturingssysteem in de eerste plaats een beheersysteem. Wij zullen meer geven volledige definitie OS: een complex van besturings- en verwerkingstoepassingen. Enerzijds fungeren ze als interface tussen apparaten computersysteem En toepassingen, programma's. Aan de andere kant is een besturingssysteem een ​​systeem voor het beheren van bepaalde apparaten en computerprocessen. Het is het besturingssysteem dat computerbronnen effectief verdeelt tussen computerprocessen en op betrouwbare wijze berekeningen in het systeem organiseert.

Als we ons wenden tot logische structuur een typisch computersysteem, dan zal het besturingssysteem een ​​tussenpositie innemen tussen apparaten die hun eigen microarchitectuur hebben, machinetaal, embedded firmware aan de ene kant en applicatietoepassingen aan de andere kant.

Wat softwareontwikkelaars betreft, het besturingssysteem stelt hen in staat te abstraheren van de kenmerken van het functioneren en de implementatie van apparaten, waardoor de minimaal vereiste functionele set wordt geboden.

Bij de meeste computersystemen is het besturingssysteem het besturingssysteem. Dit is het belangrijkste, belangrijkste (en in sommige gevallen het enige) onderdeel van de software. systeem ondersteuning. Als je je wendt tot specifieke voorbeelden, dan is het meest populaire besturingssysteem het Microsoft-product - Windows ("Windows").

Beheer van besturingssystemen

Veel mensen zijn geïnteresseerd in de vraag: zijn er gespecialiseerde programma's voor het beheer van besturingssystemen? Deze constructie van de zin is onjuist. Het besturingssysteem zelf is tenslotte een reeks programma's die computerbronnen beheren en een dialoog tot stand brengen tussen de gebruiker en het apparaat.

Daarom draait het allemaal om olie en boter: controle over controle. Er is een complex applicatieprogramma's, die worden “beheerd” door het besturingssysteem.

Basisfuncties van het besturingssysteem

Besturingssysteem - beheer van computerbronnen. Dit de hoofdtaak Besturingssysteem. Er vloeit rechtstreeks een set uit voort volgende functies:

  • Executie diverse verzoeken programma's. Zoals: in- en uitvoer van informatie, starten en stoppen van applicatieprogramma's en applicaties, vrijmaken, geheugen toewijzen, etc.
  • Het bieden van gestandaardiseerde toegang tot randapparatuur (bijvoorbeeld I/O-apparaten).
  • Computer-RAM beheren: verdelen over actieve processen, algemene organisatie van virtueel geheugen.
  • Controle van de toegang tot gegevens op niet-vluchtige media. Op optisch bijvoorbeeld harde schijven enzovoort.
  • Informatie over systeemfouten opslaan.
  • Het bieden van een gebruikersinterface.

Commandotalen - dialoog met de gebruiker

Hoe worden besturingssysteemgegevens beheerd? Zoals bij de meeste interactieve systemen kan de gebruiker de werking van het besturingssysteem beïnvloeden met behulp van speciale commandotalen.

Wat is dit? Commandotaal is de taal waarin een persoon communiceert met een interactief systeem. Waarom team? Elke regel die door een persoon op de terminal wordt ingevoerd en naar het systeem wordt verzonden, wordt gezien als een gebruikersopdracht in relatie tot het besturingssysteem.

Als we de niche van commandotalen van buitenaf bekijken gemeenschappelijk systeem talen van mens-computerinteractie, dan worden ze geclassificeerd als geïnterpreteerd. Hun antagonisten zijn complementaire talen.

Laten we eens kijken naar het verschil tussen beide: een taal wordt complementair genoemd als deze vereist dat elke constructie ervan zo gesloten is dat deze de mogelijkheid van geïsoleerde verwerking zou kunnen bieden zonder het gebruik van aanvullende taalconstructies. Anders kan begrip niet worden gegarandeerd. Getolde talen zijn begrijpelijk, zelfs zonder aan een dergelijke vereiste te voldoen.

Procesmanagement

Laten we eens kijken naar procesbeheer in besturingssystemen. Het besturingssysteem bestuurt de volgende activiteiten die daarmee verband houden:

  • Zowel processen voor het maken als verwijderen.
  • Synchronisatie.
  • Planning.
  • Communicatie.
  • Het oplossen van impasses.

Opgemerkt moet worden dat het proces tijdens zijn "leven" vele malen zijn eigen toestand verandert:

  • Nieuw. Het nieuw gecreëerde proces.
  • Uitvoerbaar. Op dit moment worden programmaopdrachten uitgevoerd in de CPU.
  • Aan het wachten. Het proces wacht tot een gebeurtenis is voltooid. Meestal is de laatste bewerking de I/O-bewerking.
  • Klaar. Een proces dat wacht tot de CPU vrijkomt.
  • Voltooid. Het proces heeft zijn werk volledig voltooid.

Merk op dat de overgang van de ene toestand naar de andere niet willekeurig kan zijn.

In veel besturingssystemen wordt informatie over elk proces opgeslagen in een speciale bedrijfsprocestabel. Elk van hen wordt in het besturingssysteem vertegenwoordigd door een specifieke set gegevens. Dit is een reeks waarden en parameters die de huidige status van het proces karakteriseren. Het wordt door het besturingssysteem gebruikt om de doorgang van een specifiek proces door de computer te controleren.

Hoe ontstaat in dit geval het rekenproces? Er zijn twee manieren: rechtstreeks vanaf het toetsenbord ingevoerd met een opdracht of via een batchbestand. Het proces omvat minimaal het downloaden van de applicatie en het maken van speciale besturingsblokken.

Hierdoor is er sprake van hoge kwaliteit nieuw proces, dat later wordt opgenomen in de multiprogrammamix. Hierna begint het besturingssysteem het te zien. Het proces zelf bevindt zich in een staat van paraatheid.

OS-procestabel

De processen functioneren en opereren dus onder de controle van het besturingssysteem. Laten we ons voorstellen korte tafel OS-processen:

  • Sectie "Procesbesturing": registers, programmatellers, stapelwijzers, processtatus, procesprioriteit, planningsparameters, procesidentificatoren, ouderprocessen, procesgroepen, processtarttijd, gebruikte processortijd.
  • Sectie "Geheugenbeheer": verwijzingen naar tekstsegmenten, verwijzingen naar gegevenssegmenten, verwijzingen naar stapelsegmenten.
  • "Bestandsbeheer": werkmappen, hoofdmap, gebruikers-ID's, bestandshandvatten, groeps-ID's.

Geheugen management

Laten we naar een andere kijken belangrijk aspect: geheugenbeheer in besturingssystemen.

Opgemerkt moet worden dat geheugen de belangrijkste hulpbron is, waarvoor het meest zorgvuldige beheer door besturingssystemen met meerdere programma's vereist is. Wat zorgt ervoor? bijzondere rol? De processor kan alleen instructies van applicaties en programma's uitvoeren als deze zich in het computergeheugen bevinden.

In vroege besturingssystemen was het geheugenbeheer eenvoudig: het programma en de benodigde gegevens werden vanuit sommige besturingssystemen geladen externe opslag gegevens (optische schijf, ponsband, magneetband, enz.) in het computergeheugen. Met de komst van multiprogrammering is de situatie radicaal veranderd. Er is een nieuwe taak ontstaan: het verdelen van computergeheugen tussen verschillende actieve applicaties.

De belangrijkste taken van het besturingssysteem in geheugenbeheer

We blijven praten over beheertools in besturingssystemen. Laten we de belangrijkste taken van het besturingssysteem bij het beheren van computergeheugen benadrukken:

  • Bewaking van vrije en gebruikte geheugensegmenten.
  • Geheugen toewijzen aan specifieke processen en het vrijmaken wanneer deze worden beëindigd.
  • Verplaatsing van zowel codes als procesgegevens van RAM naar schijf - geheel of gedeeltelijk. Het wordt gebruikt wanneer het volume van het hoofdgeheugen niet voldoende is om alle processen te huisvesten. Wanneer het OP wordt vrijgegeven, stuurt het besturingssysteem de processen terug naar hun plaats.
  • Adressen van programma's en applicaties instellen op specifieke zones van fysiek geheugen.

Extra OS-functies voor pc-geheugenbeheer

Laat ons nadenken Aanvullende taken wat het systeem in dit geval uitvoert:

  • Dynamische toewijzing van apparaatgeheugen. Dit betekent het voldoen aan verzoeken van applicaties om er tijdens de uitvoering extra geheugen aan toe te wijzen.
  • Creëren van nieuwe informatie dienstverleningsstructuren- buffers, thread- en procesbeschrijvingen.
  • Geheugenbescherming. Bestaat uit het voorkomen dat een specifiek lopend proces gegevens schrijft of leest die betrekking hebben op een andere activiteit.

Zoals we al hebben gezegd, is er niet genoeg RAM voor alle processen. Daarom verbindt het besturingssysteem een ​​externe schijf. Dit is volgende stappen systemen:

  • Paging. Hier wordt het proces volledig in het geheugen geladen verdere werkzaamheden.
  • Virtueel geheugen. In dit geval wordt het proces gedeeltelijk geladen om een ​​bepaalde taak uit te voeren.

Laten we nogmaals opmerken dat grote processen slechts tijdelijk door het besturingssysteem worden ontladen HDD. Nadat het RAM-geheugen is vrijgemaakt, brengt het systeem ze terug naar hun plaats.

Een besturingssysteem is een hele reeks software die een computer beheert. Dat wil zeggen, het geheugen, de processen, de bronnen. Nog een belangrijke functie OS: bouw de interactie van een computersysteem met een persoon, een gebruiker. Dit wordt bereikt door gebruik te maken van speciaal gereedschap- commandotalen.

Zoals bij de meeste interactieve systemen is de traditionele UNIX-gebruikersinterface gebaseerd op het gebruik van commandotalen. Om het enigszins tautologisch te zeggen: we kunnen zeggen dat de commandotaal de taal is waarin de gebruiker met het systeem communiceert. interactieve modus. Zo'n taal wordt een commandotaal genoemd, omdat elke regel die vanaf de terminal wordt ingevoerd en naar het systeem wordt verzonden, kan worden beschouwd als een commando van de gebruiker naar het systeem. Een van de verworvenheden van het UNIX-besturingssysteem is dat de commandotalen van dit besturingssysteem goed gedefinieerd zijn en functies bevatten die ze dichter bij programmeertalen brengen.

Als we de categorie commandotalen beschouwen vanuit het oogpunt van de algemene richting van mens-computerinteractietalen, dan behoren ze uiteraard tot de familie van geïnterpreteerde talen. Laten we kort het verschil beschrijven tussen gecompileerde en geïnterpreteerde computertalen. Er wordt gezegd dat een taal is gecompileerd als deze vereist dat een volledige taalconstructie zo gesloten is dat deze afzonderlijk kan worden verwerkt zonder dat er aanvullende taalconstructies nodig zijn. Anders is het begrip van de taalconstructie niet gegarandeerd.

Het belangrijkste voordeel van geïnterpreteerde talen is dat wanneer ze worden gebruikt, het programma “incrementeel” (in stapsgewijze modus) wordt geschreven, d.w.z. een persoon neemt een beslissing over zijn volgende stap, afhankelijk van de reactie van het systeem op de vorige stap. In principe is de voorkeur voor gecompileerde of geïnterpreteerde talen een kwestie van persoonlijke smaak voor het individu.

De eigenaardigheid van commandotalen is dat ze in de meeste gevallen niet worden gebruikt voor programmeren in de gebruikelijke zin van het woord, hoewel elk programma in een ontwikkelde commandotaal kan worden geschreven. De juiste stijl van het gebruik van een commandotaal is om deze primair te gebruiken voor directe interactie met het systeem, waarbij gebruik wordt gemaakt van de mogelijkheid om commandobestanden (scripts of scripts in UNIX OS-terminologie) samen te stellen om repetitieve routineprocedures op te slaan.

Programma's die zijn ontworpen om commandotaalconstructies te verwerken, worden commandotolken genoemd. In tegenstelling tot gecompileerde programmeertalen (zoals C of Pascal), waarvoor er meestal veel verschillende compilers zijn, is een commandotaal meestal onlosmakelijk verbonden met een bijbehorende tolk. Als we het hieronder hebben over verschillende vertegenwoordigers van UNIX OS-opdrachttalen die tot de shell-familie behoren, dan bedoelen we elke keer ook de overeenkomstige tolk met dezelfde naam.