Beveltalen en beveltolken. Rechtssysteem: concept en structuur. C-shell-opdrachttaal

1. Doel laboratorium werk. 4

2. Organisatie van het bestandssysteem .. 4

3. Basisbegrippen en benamingen. 4

Opslagapparaat. 7

Catalogus. 7

Route (bestandspad) 8

3. Basisopdrachten Microsoft Windows. 9

3.1. Microsoft Windows-prompt en algemene opdrachtindeling. negen

3.2. Beheer opdrachten voor directory's. 12

3.3. Commando's voor het werken met bestanden. 12

3.4. Onderhoudsopdrachten voor de aandrijving. 13

3.5. Opdrachten voor het beheer van de omgeving. 15

4. Hertoewijzing van input-output. Transportbanden en filters .. 16

5. Batchbestanden .. 18

6. Laboratoriumwerk nr. 7. 23

Bevelstaal operationeel Microsoft-systemen Ramen. 23

6.2. Vereisten voor rapportage. 23

6.3. Controlevragen .. 24

7. Laboratoriumwerk nr. 8. 25

Batchbestanden in het Microsoft Windows-besturingssysteem. 25

7.1. Inhoud werk .. 25

7.2. Vereisten voor het rapport. 25

7.3. Controlevragen .. 26

Bijlage 1. Mogelijkheden voor taken voor laboratoriumwerk nr. 7. 28

1. Doel van laboratoriumwerk

Studie van het commandosysteem opdrachtregel besturingssysteem Microsoft Windows;

Verwerving van praktische vaardigheden bij het maken van mappen op meerdere niveaus en het uitvoeren van bewerkingen op bestanden met behulp van de opdracht Microsoft-strings Ramen;

Studie van de kenmerken van de schepping en praktisch gebruik batchbestanden in het Microsoft Windows-besturingssysteem.

2. Organisatie van het bestandssysteem

3. Basisconcepten en benamingen

De hoofdeenheid van gegevensopslag op informatiedragers (magnetisch, laser, optische schijven, flashkaarten, enz.) zijn. Bestand er wordt een benoemde set gegevens aangeroepen, die overeenkomt met een geheugengebied op een informatiedrager. De bestanden slaan programma's op die klaar zijn voor uitvoering, bronteksten programma's, tekstdocumenten, numerieke gegevens, grafische afbeeldingen enzovoort.

Bestandsnamen in de opdrachtregel van het Microsoft Windows-besturingssysteem worden weergegeven als:

<имя файла>::=<имя>[.<расширение>]

Beperkingen voor bestandsnamen variëren sterk tussen bestandssystemen:

  • In FAT16 en FAT12 is de bestandsnaam beperkt tot 8 tekens (3 extensietekens).
  • In VFAT is de limiet 255 bytes.
  • FAT32, HPFS-bestandsnamen zijn beperkt tot 255 tekens
  • In NTFS is de naam beperkt tot 255 Unicode-tekens
  • In ext2 / ext3 is de limiet 255 bytes.

Naast de beperkingen van het bestandssysteem, beperken de interfaces van het besturingssysteem bovendien de tekenset die is toegestaan ​​bij het werken met bestanden.

ü Alleen voor MS-DOS hoofdletters, cijfers. Spatie, vraagteken, sterretje, meer/minder symbolen, verticaal balksymbool zijn niet toegestaan. Bij het bellen systeemfuncties bestandsnamen in kleine letters of gemengde letters, worden ze geconverteerd naar hoofdletters.

ü Voor Microsoft Windows, hoofdletters en kleine letters, cijfers, enkele leestekens, spatie. Tekens verboden>< | ? * / \ : ".

ü Voor GNU / Linux (rekening houdend met de mogelijkheid om te ontsnappen) zijn alle tekens toegestaan ​​behalve / en de null-byte.

Vierkante haakjes laat dat element zien<verlenging> mag ontbreken, d.w.z. is optioneel en optioneel. In dit geval wordt het punt niet gespecificeerd. De driehoekige haakjes laten zien dat de parameter (in in dit geval- bestandsnaam) is vereist voor invoer, maar ook willekeurig.

Zowel Latijnse als Russische letters (hoofdletters en kleine letters verschillen niet) en cijfers, evenals enkele Speciale symbolen:

~ ` ! @ # $ % & () _ " ^ { }

Bepaalde namen op de Microsoft Windows-opdrachtregel zijn gereserveerd om te verwijzen naar speciale I/O-apparaten en kunnen niet worden gebruikt als bestandsnamen. Waaronder:

CON-console (toetsenbord en display)

NUL ontbrekende uitvoer (pseudo-apparaat - veelgebruikt

bij het debuggen of om de weergave van werkresultaten te annuleren)

PRN-printer

AUX asynchrone interface

KLOK $ klokstuurprogramma

COM1 eerste seriële interface

COM2 tweede seriële interface

COM3 derde seriële interface

COM4 vierde seriële interface

LPT1 eerste parallelle interface

LPT2 tweede parallelle interface

LPT3 derde parallelle interface

Voorbeelden van geldige bestandsnamen: 123, 2008_10_23.xls, mike.13, lab_7.pas, base

Microsoft Windows-besturingssysteem heeft een aantal standaard extensies:

EXE (uit het Engels. Draagbaar uitvoerbaar bestand; gebruikt in Microsoft Windows en sommige andere systemen)

COM (gebruikt in MS-DOS en Microsoft Windows);

Draagbaar uitvoerbaar bestand (.exe; gebruikt in Microsoft Windows en sommige andere systemen)

BAT - voor batchbestanden (zie p. 5).

In gevallen waarin het nodig is om naar meerdere bestanden tegelijk te verwijzen, wordt het zogenaamde bestandsnaampatroon gebruikt, dat speciale metatekens (maskers) "*" en "?" bevat. Dit zijn speciale wildcards die fungeren als tijdelijke aanduiding in een bestandsnaam.

Vraagteken in de sjabloon geeft de aanwezigheid van een willekeurig enkel teken op de gegeven positie aan, en het "*"-teken betekent dat, vanaf deze positie tot het einde van de naam of extensie, alle tekens kunnen worden gelokaliseerd. Bijvoorbeeld:

* .exe - alle bestanden met extensie exe(bp.exe, test.exe, 9994567.exe, enz.);

a *.* - alle bestanden waarvan de naam begint met de letter “a” en elke extensie (algoritm.doc, a5.pas, act_1.doc);

bestand? .txt - alle bestanden met namen van vijf tekens die beginnen met het tekenbestand en met txt-extensie(files.txt, file3.txt, file # .txt, maar niet file.txt, file54.txt).


Opslagapparaat

In Microsoft Windows, om rijdt bevatten meestal informatiedragers die bedoeld zijn voor het vastleggen en opslaan van gegevens en zijn aangewezen met Latijnse letters gevolgd door een dubbele punt:

A:, B: - voor diskettestations magnetische schijven; C:, D:, E: enz. - voor schijven op harde schijven en compact disks, flash-kaarten, evenals virtuele schijven. Op elk moment van zijn werking beschouwt het besturingssysteem een ​​van de schijven als actueel (werkend). Na het aanzetten van de machine en het opstarten van Microsoft Windows huidige is het station van waaruit het opstarten werd uitgevoerd (systeemschijf). U kunt het huidige station wijzigen door de naam van het nieuwe station in te voeren als reactie op de opdrachtregelprompt van Microsoft Windows (zie paragraaf 3.1).

Catalogus(directory, folder) is een benoemde verzameling bytes op een opslagmedium die de naam van subdirectories en bestanden bevat. Microsoft Windows ondersteunt een directorystructuur met meerdere niveaus. Dit betekent dat een of meer directory's op een lager niveau (subdirectories) in elke directory (behalve bestanden) kunnen worden geplaatst. Elke directory heeft zijn eigen referentie, die informatie bevat over alle bestanden en subdirectories die hij bevat.

Elke schijf heeft één hoofddirectory genaamd wortel... Het wordt op schijf gemaakt door het te formatteren. Voor het FAT32-bestandssysteem is het maximale aantal elementen in hoofdmap nu uitgebreid tot 65535. De hoofdmap heeft geen naam en wordt aangeduid met de stationsnaam met een backslash, bijvoorbeeld: A: \, F: \

Een map die deel uitmaakt van een andere map is ondergeschikten... Een map die een andere map bevat, heeft een relatie ermee ouderlijk map.

Alle mappen, behalve de hoofdmap, hebben namen die zijn gecompileerd volgens dezelfde regels als bestandsnamen.

Op elk moment wijst het besturingssysteem uit de hele set mappen van de huidige schijf er een toe, genaamd huidig(werkmap.

Route (bestandspad)

Met een complexe mapstructuur met meerdere niveaus is het niet voldoende om alleen de naam op te geven om een ​​bestand te vinden. Om een ​​bestand nauwkeurig te identificeren, is het ook nodig om zijn locatie in de structuur te tonen in de vorm van een reeks namen van achtereenvolgens ondergeschikte mappen. Zo'n ketting heet route... De namen van de mappen waaruit de route bestaat, worden gescheiden door \. Bijvoorbeeld: \ SYS \ EXE; TP \ GEBRUIKER \ PAS. Als de route begint met een \, dan begint deze vanuit de hoofdmap van het huidige station en wordt genoemd compleet, zo niet, dan wordt het vanuit de huidige map aangeroepen incompleet... Bij het beschrijven van een route is het toegestaan ​​om een ​​speciale aanduiding ".." te gebruiken, die een overgang naar de bovenliggende map aangeeft.

Met behulp van een route, het concept " bestandsspecificatie":

<спецификация файла>::=[][<маpшpут>\]<имя файла>[.verlenging]

waar H:- naam van de schijf.

Bestandsspecificatie - Volledige beschrijving bestand, inclusief het station en de map waarin het zich bevindt.

Voorbeelden van het schrijven van bestandsspecificaties:

C: \ Windows \ tree.com

D: \ TP55 \ GEBRUIKER \ PAS \ mg.pas

De eerste drie voorbeelden geven een volledige route aan, de laatste twee - onvolledig.

Bij het werken met bestandssysteem Microsoft Windows, wanneer u naar een bestand linkt, moet u het pad specificeren om ernaar te zoeken (compleet of onvolledig), behalve voor bestanden in de huidige map, evenals bestanden die zich in mappen bevinden die zijn gespecificeerd in speciale opdrachten van de Microsoft Windows-opdrachtregel: PAD en APPEND(zie p. 3.5.).

3. Basiscommando's van Microsoft Windows

3.1. Microsoft Windows-prompt en algemene opdrachtindeling

Na het succesvol laden van het Microsoft Windows-besturingssysteem, start de Microsoft Windows-opdrachtregelprompt voor werk verschijnt, meestal van de vorm:

C: \ Documenten en instellingen \ admin>

De aanwezigheid van de prompt betekent dat Microsoft Windows klaar is om opdrachten uit te voeren die door de gebruiker vanaf het toetsenbord zijn ingevoerd. De vorm van de uitnodiging kan door gebruikers worden gewijzigd met het PROMPT-commando (zie p. 3.5). Standaardweergave prompts bevatten de naam van de huidige map en het teken ">", gevolgd door een knipperende cursor die naar de positie voor gegevensinvoer wijst.

Rijst. 1. Venster van de Microsoft Windows-opdrachtregelsessie, geopend via het menu Start -> Programma's -> Accessoires -> Opdrachtregel

Rijst. 2. Venster van de Microsoft Windows-opdrachtregelsessie, geopend via het menu Start -> Uitvoeren -> cmd

Als reactie op de uitnodiging kan de gebruiker elk Microsoft Windows-commando uitvoeren of een toepassingsprogramma uitvoeren dat wordt gepresenteerd als een bestand met de extensie COM, EXE of BAT. De informatie die u invoert als reactie op de Microsoft Windows-prompt heet opdrachtregel... Er kan slechts één commando op één regel worden ingevoerd, behalve in speciale gevallen beschreven in clausule 4.

Er zijn twee soorten Microsoft Windows-opdrachten: intern (ingebouwd) en extern. Ingebouwd teams zijn binnen schelp en ze hebben geen aparte uitvoerbare bestanden. extern Microsoft Windows-opdrachten worden weergegeven als bestanden op schijf met de extensie EXE, COM of BAT. In de regel zijn externe Microsoft Windows-opdrachten gegroepeerd in een van de mappen van het systeemstation (meestal, maar niet noodzakelijk, in de map C: \ Microsoft Windows \ System32). Wijze van uitvoering externe teams Microsoft Windows verschilt niet van de manier waarop applicatieprogramma's worden uitgevoerd.

Commando's worden ingevoerd vanaf het toetsenbord en hebben de volgende indeling:

[<маpшpут>\]<имя команды>[parameters]

De route wordt alleen gespecificeerd voor externe opdrachten van Microsoft Windows en bij het aanroepen van hulpprogramma's, als de bijbehorende bestanden niet zijn opgenomen in de huidige map en als de bijbehorende routes niet zijn gespecificeerd in de PATH-opdracht (paragraaf 3.5).

Sommige commando's vereisen de invoer van aanvullende parameters die de objecten aangeven waarop de acties die door het commando zijn toegewezen worden uitgevoerd en de vereisten voor de uitvoering van het commando. De eerste parameter wordt gescheiden van de opdrachtnaam door ten minste één spatie, evenals de parameters van elkaar. Bijvoorbeeld:

C: \ Microsoft Windows \ tree.com / f

KOPIE A: \ mijn.pas D: \ TP \

aidstest A: / f / g / s / x

Bij het uitvoeren van externe opdrachten en hulpprogramma's is het toegestaan ​​om de bestandsnaamextensie (EXE, COM of BAT) niet op te geven.

Hieronder (clausules 3.1 - 3.5) wordt gegeven: korte beschrijving hoofdteams Microsoft Windows. De volgende notatie wordt gebruikt in de beschrijving van de commando's: - opslagapparaat; - traject;<Ф>, <Ф1>, <Ф2>... - bestandsnamen of patronen;<СФ>, <СФ1>...- bestandsspecificaties. Vierkante haken geven, zoals gebruikelijk, optionele componenten aan.


3.2. Opdrachten voor onderhoud van mappen

DIR- het bekijken van de directory directory.

Opdrachtformaat: DIR [<М>] [<Ф>]

Parameters: / p - weergave per pagina;

/ w - geeft de inhoudsopgave regel voor regel weer.

CD- het wijzigen van de huidige map.

Opdrachtformaat: CD [<М>]

MD- het maken van een map.

Opdrachtformaat: MD<М>

RD- vernietiging van de directory.

Opdrachtformaat: RD<М>

U kunt alleen een lege en niet-huidige map vernietigen.

PAD- alternatieve routes instellen voor het zoeken naar programmabestanden.

Opdrachtformaat: PATH [;] [[<М1>] [;<М2>]... ]

De opdracht vertelt het besturingssysteem in welke submappen het bestand met het uitvoerbare programma moet worden gezocht, als het zich niet in de huidige map bevindt (voor EXE-, COM-, BAT-bestanden).

PATH (zonder parameters) - geef een lijst met beschikbare mappen weer;

PAD; - annuleer de opgestelde lijst.

3.3. Bestandsopdrachten

KOPIËREN- bestanden kopiëren.

Opdrachtformaat: KOPIE<СФ1> [<М>][<Ф2>]

Parameters:

<СФ1>- specificatie van het gekopieerde bestand of apparaat;

<М>, <Ф2>- specificatie (directory, device) van de bestandskopie;

/ V - automatische kopieercontrole inschakelen.


Kenmerken van het gebruik van deze opdracht:

Het is mogelijk om een ​​groep bestanden te kopiëren met behulp van sjablonen:

(KOPIE A: \ *. * C: \ WERK);

· Als de tweede parameter ontbreekt, wordt er naar de huidige directory gekopieerd;

· Het is mogelijk om bestanden samen te voegen (merge):

KOPIEf1.txt + f2.txt f3.txt

· Aanmaken en invoeren van een tekstbestand vanaf het toetsenbord: COPY CON myfile.txt

(invoer stopt wanneer u op Ctrl + Z drukt);

Uitvoer van het bestand naar het opgegeven apparaat:

KOPIEER mijnbestand.txt PRN

TYPE- voer het bestand uit naar het scherm.

Opdrachtformaat: TYPE<СФ>

REN- hernoemen van bestanden.

Opdrachtformaat: REN<СФ1> <Ф2>

Het is mogelijk om een ​​groep bestanden te hernoemen met behulp van metatekens:

RENB: \ *.Txt * .doc

DEL- vernietiging van bestanden.

Opdrachtformaat: DEL<СФ>

Parameter: / p - vraag een bevestiging van vernietiging aan.

3.4. Onderhoudsopdrachten voor de aandrijving

FORMAAT- formatteren (partitioneren) van de schijf (externe opdracht).

Opdrachtformaat: [M] FORMAT H:

Parameters: / s - kopiëren naar een geformatteerde schijf van het systeem Microsoft-bestanden Ramen;

/ f: n - bepaal het type schijf dat moet worden geformatteerd, waarbij n =

SCHIJFKOPIE- fysiek kopiëren van diskettes.

Opdrachtformaat: DISKCOPY

Het is mogelijk om het commando op dezelfde drive uit te voeren door diskettes te wisselen. Werkt niet als verschillende typen schijven zijn geselecteerd als H1: en H2: schijven.

BOOM- weergave van de mappenboom (externe opdracht).

Opdrachtformaat: [M] TREE [Н:]

Optie: / f - Voegt bestandsnamen toe aan de lijst.

CHKDSK - het controleren van de juistheid van de datastructuur op diskettes (extern commando).

Opdrachtformaat: CHKDSK [Н:] [M] [Ф]

Parameter: / f - stelt de modus in voor het corrigeren van gevonden fouten.

CHKDSK-opdracht detecteert verweesde clusters en beschadigde submapbestanden. Als de / F-modus is opgegeven, worden deze clusters of bestanden geschreven naar speciale bestanden(filennnn.chk), waar hun inhoud kan worden bekeken en beschadigde bestanden met hun hulp kunnen worden gecorrigeerd.

LABEL- het schijflabel instellen.

Opdrachtformaat: LABEL [<метка диска>]

Parameter:<метка диска>- een string van niet meer dan 11 karakters.

Als de parameter niet is opgegeven, wordt het huidige schijflabel op het scherm weergegeven en wordt er gevraagd om een ​​nieuwe waarde in te voeren.

Het volumelabel kan spaties en tabs bevatten. Gebruik de volgende tekens niet in het volumelabel:

* ? / \ | . , ; : + = () & ^ < > "

MS-DOS geeft het volumelabel weer in hoofdletters. Als het label in kleine letters wordt ingevoerd, converteert de opdracht LABEL ze naar hoofdletters.

3.5. Omgevingsopdrachten

SNEL- installatie van het Microsoft Windows-opdrachtregeluitnodigingsformulier.

Opdrachtformaat: PROMPT<текст пpиглашения>

Parameter:<текст пpиглашения>- elke reeks tekens.

Speciale tekens kunnen in de tekst worden opgenomen, zodat u in de uitnodiging ziet:

$ n - naam van de huidige schijf;

$ p - de naam van het huidige station en de map;

$ t - huidige tijd;

$ d - huidige datum;

$ g is het ">" symbool.

Het standaardformaat van de uitnodiging komt overeen met het commando PROMPT $ p $ g

DATUM- instellen van de huidige datum.

Opdrachtformaat: DATUM [[<месяц>].[<день>].[<год>]]

Als de parameters niet zijn opgegeven, wordt de huidige datum op het scherm weergegeven en wordt er gevraagd om een ​​nieuwe datum in te voeren.

TIJD- instellen van de huidige tijd.

Opdrachtformaat: TIJD [[<час>][:[<мин>][:[<сек>][,[<мсек>]]]]]

Als de parameters niet zijn opgegeven, wordt op het scherm weergegeven: huidige tijd en u wordt gevraagd een nieuwe tijdwaarde in te voeren.

CLS- het scherm schoonmaken.

Opdrachtformaat: CLS

VER- geef de versie weer van de Microsoft Windows-opdrachtregel die op de pc is geïnstalleerd.

Opdrachtformaat: VER


4. Hertoewijzing van input-output. transportbanden & filters

Microsoft Windows staat toe naar voren invoer- en uitvoergegevens van elk commando (toepassingsprogramma), met standaard standaard invoer-uitvoermiddelen (toetsenbord, scherm), naar andere fysieke apparaten (printer) of naar een bestand. Dit betekent dat hetzelfde programma, zonder wijzigingen aan te brengen, in het ene geval gegevens kan invoeren vanaf het toetsenbord en deze op het display kan weergeven, in het andere geval gegevens uit een bestand kan invoeren en naar de printer kan uitvoeren. De symbolen ">", ">>", "worden gebruikt voor het doorsturen.<":

> - stuur de uitvoer door:

DIR A: \ labrab> labrab.txt

TYPE labrab.txt> PRN

>> - stuur de uitvoer door met toevoeging naar een reeds bestaand bestand:

BOOM C:> tree_all.txt

BOOM D: >> tree_all.all

< - пеpеадpесовать входные данные:

DATUM< filedate.txt

Naast het omleiden van I / O, biedt Microsoft Windows een manier om de resultaten die door één opdracht worden weergegeven, te gebruiken als toetsenbordinvoer voor een andere opdracht. Hiervoor is de zgn opdracht pijplijnen, die opeenvolgend geschreven opdrachten zijn, gescheiden door het teken "|":

<команда1> | <команда2>

In deze pijplijn wordt de informatie-uitvoer van de eerste opdracht naar de standaarduitvoer gelezen door de tweede opdracht zonder dat deze op het weergavescherm wordt weergegeven.

Filters Dit zijn speciale commando's (programma's) die gegevens die afkomstig zijn van de standaard invoerstroom (van het toetsenbord) converteren en de resultaten van de conversie uitvoeren naar de standaard uitvoerstroom (op het scherm). Filters zijn gebaseerd op pijplijnen en I/O-omleiding. Er zijn drie externe filteropdrachten in Microsoft Windows: MORE, FIND en SORT.

MEER- Pagina-voor-pagina output van gegevens op het scherm.

Opdrachtformaat: [M] MEER

Met het MORE-filter worden de gegevens op het scherm weergegeven totdat deze vol is. Als het scherm vol is, stopt de invoer en verschijnt het bericht '' - Meer - '' op de onderste regel. De volgende pagina verschijnt na het indrukken van een willekeurige toets.

TYPE labrab.txt | MEER - pagina voor pagina uitvoer van het tekstbestand mijnbestand.txt;

DIR< MORE - постраничный вывод справочника текущего каталога.

VIND- zoek naar regels in het bestand met de opgegeven reeks tekens.

Opdrachtformaat: [M] FIND "<текст>"

Opties:<текст>- de vereiste volgorde van tekens;

/ c - tel alleen het aantal regels waarin de zoektekst is gevonden;

/ n - geef de regels weer waarin de zoektekst is gevonden en hun volgnummers;

/ v - regels weergeven waarin de zoektekst niet is gevonden (exclusief zoeken);

VIND "Besturingssysteem" ms_windows.txt - uitvoerregels van het bestand ms_windows.txt, die de woorden "Besturingssysteem" tussen aanhalingstekens bevatten;

DIR | FIND / c "04/01/2011" - toont het aantal regels in de directory van de huidige directory met de tekst "04/01/2011" (aanmaakdatum bestand).

SOORT- sorteren (ordenen) van de regels van het bestand op tekencodes.

Opdrachtformaat: [M] SORT

Parameters: / r - sorteren in aflopende volgorde van de tekencode;

/ + n - sorteerpositie - rangnummer van het teken in de tekenreeks waarmee wordt gesorteerd.

Als er geen parameters zijn opgegeven, wordt de sortering uitgevoerd op het eerste teken in oplopende codevolgorde.

DIR | SORT / + 37 - sorteren van de regels van de map van de huidige map met 37 tekens (komt overeen met de positie van de eerste letter van de bestandsnaam);

SOORT< labrab.txt - сортировка строк файла labrab.txt по первому символу.

DIR | VIND ".2011" | SORTEREN> dir_2011.txt - vorming van het bestand dir_2011.txt, inclusief de regels van de map van de huidige map, met informatie over bestanden en mappen die in 2011 zijn gemaakt, gesorteerd op naam.

5. Batchbestanden

Vaak wordt het tijdens het werk nodig om een ​​​​bepaalde reeks opdrachten uit te voeren, die van tijd tot tijd moet worden herhaald. Om het werk van gebruikers te vergemakkelijken, is het mogelijk om een ​​reeks opdrachten te combineren tot een batch (uit de Engelse batch) en deze in een speciaal batchbestand te plaatsen. Opdrachtbestanden zijn gewone tekstbestanden met de BAT-extensie en bevatten een reeks regels, die elk een Microsoft Windows-opdracht (of een programma-aanroep) zijn in de vorm waarin ze op het toetsenbord worden getypt om één voor één uit te voeren.

Het batchbestand wordt gemaakt als een gewoon tekstbestand met behulp van een teksteditor of COPY CON-opdracht<имя файла>... Rennen batch bestand het wordt op de standaard manier geproduceerd via de opdrachtregel.

Naast de gebruikelijke Microsoft Windows-commando's gebruiken batchbestanden ook speciale commando's zoals: ECHO, REM, PAUZE, GOTO, IF en anderen. Het zijn allemaal ingebouwde commando's.

ECHO- opdracht om de uitgifte van berichten te controleren.

Opdrachtformaat: ECHO

De opdracht wordt gebruikt om drie functies te implementeren:

1) ECHOON - schakel de modus in om de namen van uitvoerbare opdrachten op het scherm weer te geven;

2) ECHOOFF - annuleer de weergave van de namen van uitvoerbare opdrachten op het scherm;

3) ECHO<сообщение>- weergave van de berichttekst op het scherm (wordt weergegeven ongeacht de ECHOON / OFF-status).

Het is mogelijk om berichten naar de printer of naar een bestand te sturen met behulp van uitvoeromleiding:

ECHOHello! > PRN

Het is mogelijk om de weergave van opdrachttekst (inclusief de ECHO-opdracht zelf) te onderdrukken door het teken voor de opdracht toe te voegen @ : @ECHOOFF

Productie en implementatie coöperatie

"I N T E R F E Y S"

Conversational Unified Mobile

Besturingssysteem

Demo's / P 2.1

Bevelstaal

Moskou

ANNOTATIE

Beschrijft de tolk in de opdrachttaal C-schaal.
De elementen van de taal, de operator EN de structuur van programma's op C-
schelp evenals ingebouwde mogelijkheden.

1. De commandotaal C-shell

De interactie tussen de gebruiker en het besturingssysteem is:
Biedt een commando-interpreter - een communicatieprogramma tussen de gebruiker
de gebruiker en het besturingssysteem. De belangrijkste functie van inter-
retator - processen creëren die de taak uitvoeren (één en
meer commando's) van de gebruiker, geformuleerd als een voorstel
genii (opdrachtregels) van een geformaliseerde taal -
taal van interactie met het besturingssysteem. Zo'n taal
commando genoemd.

Met de opdrachttaal kunt u verschillende taken uitvoeren
gebruiker en beheert de werking van het besturingssysteem.
DEMOS-gebruikers gebruiken verschillende standaard
beveltalen, maar de auteurs besloten zich te beperken tot de gedetailleerde
een beschrijving van de meest ontwikkelde en populaire daarvan -
bevelstaal C-schaal .

C-schaal- een taakbesturingstaal met de eigenschappen van uni-
verse programmeertaal. Eigenschappen combineren
taakbesturingstaal en universele programmeertaal
rantsoen maakt C-schaal in veel opzichten vergelijkbaar met beide universeel
algoritmische talen, en met de meest ontwikkelde commando's
talen. Dit wordt weerspiegeld in de naam van de taal. C-schaal:
C- namens de universele programmeertaal C en
schelp- de taal van de interactie tussen de gebruiker en het systeem (beuken-
helemaal "schelp"). Als een communicatieprogramma tussen gebruikers
de tolk wordt gebruikt door de uitnodiger en het besturingssysteem
csh, ontworpen om zinnen te ontleden en uit te voeren op
taal C-schaal... Tolk csh werkt in twee modi:
interactief en niet-interactief.

In interactieve modus formuleert de gebruiker de taak
meestal in de vorm van een enkele opdrachtregel, na het uitvoeren van welke
rogo formuleert het volgende, in de vorm van een ander commando:
snaren. In deze modus kunt u een taak uitvoeren vanuit verschillende
opdrachtregels die een fragment van een programma of een heel programma vormen
de hele ram. Een dergelijk programma kan voorwaardelijke
uitdrukkingen en lussen.

In niet-interactieve modus wordt een batchbestand uitgevoerd
(programma in taal) C-schaal), die opdracht bevat
tekenreeksen en besturingsstructuren (taaloperatoren C-schaal).

1.1. Lexicale structuur van de C-shell-taal

Suggestie in taal C-schaal is geformuleerd als:
opdrachtregel, die het DEMOS-commando kan bevatten
(bijvoorbeeld, / bak / kat), het interne commando van de tolk csh
(bijvoorbeeld, CD), programmeertaaloperator C-schaal
(bijvoorbeeld de lus-operator terwijl).

- 3 -

De opdrachtregel bestaat uit een lijst met woorden en hun gescheiden
lei. Het woord kan de naam van een variabele, bestand, metasym-
ossen en constructies daarvan. Interpretatie van een woord kan
ertoe leiden dat het woord wordt vervangen door een lijst met woorden, d.w.z.
snaar. Variabelen kunnen variabelen bevatten die definiëren
gedeeld door de programmeur, zogenaamde omgevingsvariabelen
(we zullen ze hieronder leren kennen), en vooraf gedefinieerde variabelen
tolk csh... Over het algemeen is de tolk csh uitgave
Voegt de volgende tokens toe aan de opdrachtregel: woord, apart
woordlichaam en metateken.

Het woord is een complete constructie die wordt herkend door
tolk csh... Opdrachtregel woordscheidingstekens
er kunnen spaties, tabs en de volgende tekens zijn:

; () & ik & het; & gt & gt; & |

Als u deze symbolen moet gebruiken als onderdeel van:
woorden, geen scheidingsteken, dan wordt karakter-escape toegepast.
schroot \ ... Als bijvoorbeeld het teken ; voorafgegaan door het karakter \ , hij
wordt niet gezien als een scheidingsteken voor een opdrachtgroep, maar als
symbool ";" het woord waar het bij hoort. Een deel
karakters vormt een klasse van zogenaamde metakarakters - symbolen
visserij van bijzonder belang. Elk van de vermelde
onderstaande karakters hebben een speciale betekenis in taal C-schaal.
De speciale betekenis van een teken wordt bepaald door de context van het woord
of opdrachtregel

! # $ % : * , ?

{ } @ ~ . ^

De \ annuleert de speciale betekenis van een deel van de gespecificeerde meta-
karakters.

Na het ontleden van de opdrachtregel en het vervangen van waarden
variabelen, het woord kan in een tekenreeks "veranderen" of blijven
een woord, zoals een bestandsnaam. Tolk csh staat toe
werken op geïnterpreteerde tekenreeksen
woorden op de opdrachtregel, voer verschillende conversies uit
nee:

"lijn" "lijn" `lijn`

Aanhalingstekens worden gebruikt om de grammaticamodus te regelen
het ontleden en interpreteren van de opdrachtregel. Dubbel en enkel
aanhalingstekens kunnen worden geëscaped met \ ... Als het team
de regel duurt meer dan één regel, dan kan deze worden voortgezet
op de volgende door aan het einde het symbool \ .

Een string tussen dubbele aanhalingstekens wordt geïnterpreteerd
csh, het gebruikt speciale metatekenwaarden en
vervangingen van variabele waarden worden uitgevoerd.

- 4 -

Een tekenreeks tussen enkele aanhalingstekens (apost-
rofa) wordt niet geïnterpreteerd. Alle metatekens en hun reeksen
entiteiten verliezen hun speciale betekenis. In sommige gevallen
theehuis symbolen

? . * ! ~

Behouden hun speciale betekenis en worden geïnterpreteerd in
zo'n lijn.

Een tekenreeks, ingesloten tussen enkele aanhalingstekens, inter-
teruggetrokken als opdrachtregel. Deze opdrachtregel uitgevoerd
wordt gewijzigd en vervangen door het resultaat van de uitvoering ervan.

De volgende zijn de lexemen - de namen van de operators van de taal C-
schelp en interne tolkopdrachten csh:

alias endsw uitloggen onderbreken
alloc eval newgrp-schakelaar
bg exec leuke tijd
break exit nohup umask
breaksw fg unalias op de hoogte stellen
case foreach onintr unhash
cd glob popd onbeperkt
chdir goto pushd unset
doorgaan hashstat rehash unsetenv
standaard geschiedenis herhalen wachten
dirs indien ingesteld terwijl
echo jobs setenv
anders kill shift
eindlimiet bron
endif inloggen stop

De namen van vooraf gedefinieerde interne variabelen van de interpreter
csh:

argv geschiedenis niet-overeenkomende status
cdpath home notificatie tijd
checktime negeer pad uitgebreid
kindermail prompt
cwd noclobber savehist
echo noglob schelp

In sommige gevallen definieert één lexeme de naam van de wijzigingen.
noah, en de naam van het interne commando van de tolk csh... Lec-type:
seme wordt bepaald door de context. Bijvoorbeeld het commando tijd chro-
nummers de uitvoering van een eenvoudige opdrachtregel, en
verdeelde variabele genaamd tijd gebruikt om aan te geven
tolk, over welke taken de resultaten van chrono
meten.

1.2. Opdrachtregelindelingen, bestandssysteemnavigatie
onderwerp

Tolk csh ontvangt een taak in de vorm van een commando
regel- of batchbestand. Een reeks karakters uit
uitnodigingen tot symbool lijnvertaling (\ N) is het commando-
noah lijn. De opdrachtregel kan een eenvoudige
commando, volgorde van commando's, groep commando's, pijplijn.
De taak kan worden uitgevoerd in synchrone of asynchrone modus.
schommel. Als resultaat van het ontleden van de opdrachtregel, de interpreter csh
start een of meer processen voor uitvoering.

We noemen een commando een willekeurig object of commando
bestand dat kan worden uitgevoerd onder de controle van DEMOS.
Bijvoorbeeld het commando

pr -2 -w 39 -l 24 -t het dossier

Zal de inhoud van een bestand op het scherm weergeven het dossier in tweeën
kolommen, regels van 39 karakters en pagina's van 24 regels.
Opdracht pr(waarvan het uitvoerbare object zich bevindt in
map / bin) doet de eigenlijke opmaak eerder
uitvoer van bestanden. Teamwerkmodi pr gegeven door sleutels, zij
de opdrachtregel wordt voorafgegaan door een min- of plusteken. Teken
gebruikt om de sleutel van de bestandsnaam te onderscheiden.
De opdrachtregel is ook de bestandsnaam het dossier die-
ry moeten worden verwerkt door het team pr... Voor het team pr
begint met uitvoeren, zal de interpreter het volgende doen:

Analyseer fouten in de opdrachtregel;

Vindt het uitvoerbare bestand in een van de mappen (in de gegeven
geval - in / bin);

Zal het samen naar het besturingssysteem overbrengen voor uitvoering
met sleutels en bestandsnaam.

Na voltooiing van de uitvoering van de opdrachtregel, zal de interpreter
csh zal de prompt afdrukken (het promptformulier is ingesteld)
door de gebruiker). Dit betekent dat u het volgende kunt invoeren:
de opdrachtregel. De opdrachtregel voegt verschillende samen
woorden gescheiden door spaties, waarvan de eerste een propere is
de naam van de opdracht.

Het is vaak nodig om de volgorde te volgen
commando's, in dit geval kunt u het symbool . gebruiken ; , bijvoorbeeld:

kat& ik & het; het dossier ; pr -2 -w 39 -l 24 -t het dossier

Deze opdrachtregel resulteert in het uitvoeren van twee opdrachten:

- 6 -

Aanvankelijk het dossier wordt weergegeven zoals het is,
dan het commando pr met alle aangegeven transformaties.

Om reeksen opdrachten te besturen, is het toegestaan
logische verbindingen gebruiken && en || , bijvoorbeeld:

kat& ik & het; het dossier && pr -2 -w 39 -l 24 -t het dossier

In dit geval wordt de tweede opdracht uitgevoerd als deze met succes is voltooid.
de eerste komt voor, d.w.z. indien het dossier bestaat en is toegestaan
lezen.

kat& ik & het; bestand1 || pr -2 -w 79 -l 24 -t het dossier

En in dit geval wordt het tweede commando uitgevoerd, zelfs als:
de eerste zal mislukken, bijvoorbeeld als: bestand1 afwezig.
De woorden zal slagen een bepaalde betekenis hebben - compleet
Het inkomende proces moet een afsluitcode retourneren die gelijk is aan nul.
In sommige versies van opdrachten is de normale afsluitcode:
het proces is niet gelijk aan nul.

Haakjes worden gebruikt om opdrachten te groeperen.
De groep commando's tussen haakjes wordt uitgevoerd als zelf-
het is een actieve opdrachtregel en heeft geen invloed op interne communicatie.
wijzigingen in andere delen van de opdrachtregel, bijvoorbeeld:

ls -l; (kat& ik & het; f1 && kat& ik & het; f2) && datum

Eerst wordt de lijst van de werkdirectory gegeven, dan de-
er is een groep commando's tussen haakjes en, als beide bestanden bestaan ​​en
hun lezing is toegestaan, de opdracht wordt uitgevoerd datum... Voor de veiligheid-
side-parsing van de opdrachtregel door de interpreter csh verplicht
het is noodzakelijk dat er in de buurt van de haakjes ofwel ; of && of | ,
of || , of de I/O-omleidingsmetatekens.

Wanneer het nodig is om een ​​consistente
gegevensstroomverwerking, worden interproceskanalen gebruikt.
Het ene proces voert een datastroom uit naar een pijp, een ander leest van
hem. Als het nodig is om het aantal interacties uit te breiden
processen, dan wordt een pijplijn van opdrachten gevormd. Om aan te geven in
teken gemarkeerd op de interprocess pipe-opdrachtregel | ,
bijvoorbeeld:

kat -n& ik & het; het dossier | pr -2 -w 39 -l 24 -t

Opdracht kat zet regelnummers in het dossier(toets N), en zijn
de uitvoer wordt doorgesluisd naar de opdracht pr voor opmaak. Resultaat
wordt weergegeven op het weergavescherm.

soort het dossier | kat -n | pr -2 -w 39 -l 24 & gt & gt; & gt & gt; bestand2

Opdracht soort sorteert het bestand; kat- zet regelnummers neer;
pr- formatteert de uitvoer en voegt deze toe aan bestand2... teams binnen

- 7 -

De transportband kan worden gesplitst met behulp van logische verbindingen && en
|| , groep met haakjes, split ; , bijvoorbeeld:

(kat& ik & het; f1 && datum) && (kat -n& ik & het; f1 | soort); datum

Als er een bestand is f1, het wordt weergegeven en vervolgens uitgevoerd
de datum wordt gegeven, en het commando kat door de regels te nummeren, leidt
bestand om te sorteren. Het sorteerresultaat wordt op het scherm weergegeven
en datum. Indien f1 ontbreekt of niet kan worden gelezen, dan is de conclusie
alleen de datum wordt vermeld.

Met de tolk kunt u naar de ontvangst van nieuwe opdrachten gaan -
regel, zonder te wachten op de voltooiing van de vorige. zo'n regime
uitvoeringen worden asynchroon of parallel genoemd. Dit geeft
de mogelijkheid voor de gebruiker om meerdere
opdrachtregels en blijf interactief werken.
Symbool & aan het einde van de opdrachtregel wordt indien nodig gebruikt
dimo voert het asynchroon uit, bijvoorbeeld:

kat -n& ik & het; f1 | pr -2 -w 39 -l 24 -t& gt & gt; f2 &

Opdracht kat drukt regels af met getallen, het commando pr formaat-
verzendt, wordt de uitvoer verzonden naar f2.

Vaak treden er bij het typen van de opdrachtregel fouten op,
die met eenvoudige middelen kan worden opgelost.

Toets ZB (DEL) display wordt gebruikt om het symbool te verwijderen
de os waar de cursor zich in de buurt bevindt.

Symbool ZO / W (CTRL / W) kunt u het laatste woord verwijderen
opdrachtregel.

Symbool ZO / U (CTRL / U) kunt u de hele regel verwijderen.

Verplaatsen door het bestandssysteem wordt uitgevoerd door commando's
CD, popd en geduwd... De interpreter slaat het pad van de registratie op
naar de werkdirectory (de naam is opgeslagen in de vooraf gedefinieerde)
uitgeleende variabele cwd) en onderhoudt ook een directory-stack,
waarvan de inhoud op commando wordt uitgevoerd richt zich op... Commando's
geduwd en popd gebruikt om door de mappenboom te navigeren
bestandssysteem en wijziging van de inhoud van de directory-stack.
Opdracht CD verandert de inhoud van de directory-stack niet. De elementen
stapels zijn genummerd vanaf 1, beginnend vanaf de bovenkant van de stapel.

Opdracht popd zonder argumenten is hetzelfde als commando CD
naam_nummer_2 van de directorynaamstapel, d.w.z. opnieuw uitgevoerd
naar een nieuwe map gaan, waarvan de naam automatisch wordt bepaald
mooi. Naam _Kamer _1 wordt verwijderd uit de mapnaamstapel,

Opdracht popd +nummer verwijdert naam _Kamer _(1+nummer) van de stapel,
de rest van de stapelelementen worden opgeslagen met nieuwe nummers. Bij
in dit geval wordt de overgang naar een andere directory niet uitgevoerd.

- 8 -

Opdracht geduwd verandert de volgorde van namen in de mapnaamstapel
regeringen en verhoogt hun aantal met 1. Het team geduwd geen argument
tov is gelijk aan een commando CD naam _Kamer _2 stapel. Waarin
naam _met _nummer _2 wordt bovenaan geplaatst en naam _met _nummer _1 - Aan
zijn plaats op de stapel (de rest van de stapelelementen blijven aan)
hun plaatsen). Opdracht geduwd directory is gelijk aan commando CD
directory, waarbij de directory bovenaan de stapel wordt geschreven,
de rest van de stapelelementen worden opgeslagen met nieuwe nummers.
Opdracht geduwd +nummer is gelijk aan een commando CD
naam _met _nummer _(1+nummer). Waarin naam _met _nummer _(1+nummer)
naar de top van de stapel wordt geduwd, en nummer namen zijn herschreven in
het einde van de stapel in de volgorde waarin ze van boven kwamen
stapel bussen. Andere elementen van de stapel blijven ongewijzigd.

1.3. Invoer- en uitvoerregeling

DEMOS maakt gebruik van de zogenaamde standaard ingang,
standaarduitvoer en standaarduitvoer van diagnostische berichten
schenii. Standaardinvoer definieert de gegevensbron voor:
commando's, standaarduitvoer - datasink, standaard
output van diagnostische berichten - ontvanger van berichten over
fouten.

Er zijn twee manieren om invoer en uitvoer te regelen: eerst:
yy - standaardmodus; de tweede is een expliciete indicatiemodus
bron en/of sink van gegevens. In standaardmodus in
als de standaard ingang (bron), wordt de sleutel gebruikt
tour weergeven als standaarduitvoer en standaard
foutuitgang (ontvangers) - weergavescherm. Tolk
stelt u in staat om de bron en bestemmingen te wijzigen (omleiden)
gegevens. Doorsturen gebeurt met scheidingstekens
speciale soort. Om de invoerrichting aan te geven (bron
bijnaam) de volgende scheidingstekens worden gebruikt:

& ik & het; , & ik & lt; & lt & het; , & ik & lt; & lt & het; woord

Als er geen scheidingsteken is opgegeven, vindt invoer plaats via het toetsenbord.
display (standaard ingang).

Gebruik . om de uitvoerrichting (ontvanger) aan te geven
De volgende scheidingstekens zijn beschikbaar:

& gt & gt; & gt & gt; & gt & gt; |
& gt & gt; & & gt & gt; & gt & gt; & |&
& gt & gt; ! & gt & gt; & gt & gt; !
& gt & gt; &! & gt & gt; & gt & gt; &!

Als er geen scheidingsteken is opgegeven, wordt de uitvoer op het scherm afgedrukt
weergave (standaarduitvoer en standaardfout).

Metakarakter & gebruikt wanneer berichten nodig zijn
uitvoerfouten samen met standaarduitvoer, niet aan
scherm. Metakarakter ! gebruikt wanneer tijdelijk nodig

- 9 -

Annuleer enkele toetsen.

Tekens worden gebruikt om de invoer-uitvoermodi te regelen.
sleutel lezen noclobber, noglob en niet-overeenkomend... Als de toetsen zijn ingesteld
nieuw, dan wordt een speciale bewerkingsmodus uitgevoerd
invoer uitvoer. Installatie en annulering van sleutels worden uitgevoerd met behulp van
teams set en uitgeschakeld... Bijvoorbeeld:

stel noclobber in of uitgeschakeld noclobber

Laten we de invoercontrole eens nader bekijken:

& ik & het; naam _het dossier
opent een bestand dat wordt gelezen in plaats van te lezen van de sleutel
weergave viatures;

& ik & lt; & lt & het; woord
als invoer wordt invoer van het beeldschermtoetsenbord gebruikt.
lei. Invoer stopt wanneer de ingevoerde string is
identiek aan het woord. Bijvoorbeeld:

kat& gt & gt; het dossier& ik & lt; & lt & het; mmm
0123
3456
6789
mmm

Opdracht kat creëert het dossier en wacht op toetsenbordinvoer
Scherm. Elke ingevoerde regel wordt vergeleken met mmm.
Als het anders is dan mmm, dan is het geschreven in het dossier.
Als het identiek is mmm, invoerstops en het dossier gesloten
komt uit. Lijn mmm wordt niet ingevoerd in het uitvoerbestand. Ana-
een logisch ontwerp kan worden gebruikt in de opdracht
het dossier.

Laten we de uitvoerregeling eens nader bekijken:

& gt & gt; naam _het dossier
het resultaat wordt naar het opgegeven bestand gestuurd.

& gt & gt; ! naam _het dossier
uitroepteken annuleert het effect van de toets noclobber.
De sleutel verbiedt uitvoer naar het bestand als het op dit moment is
bestaat en is geen speciaal bestand (bijv.
/dev/tty*). Laten we zeggen dat er bestanden zijn met de naam bestand1
en bestand2 en het commando wordt uitgevoerd

stel noclobber in

Dan het commando

kat& ik & het; bestand2& gt & gt; bestand1

Wordt niet uitgevoerd, maar het commando

kat& ik & het; bestand2& gt & gt; ! bestand1

Zal vervolledigd worden. Vooraf gedefinieerde variabele noclobber
gebruikt als een sleutel die onopzettelijke schade verbiedt
bestaande bestanden. Constructies & gt & gt; ! , & gt & gt; & gt & gt; ! , & gt & gt; &! en
& gt & gt; & gt & gt; &! annuleer het effect van deze toets voor de gespecificeerde in
opdrachtregel bestand.

& gt & gt; & naam _het dossier of & gt & gt; &! naam _het dossier
in het eerste geval worden diagnostische berichten verzonden
naar een bestand, in de tweede - hetzelfde zal worden gedaan, maar met de annulering
belangrijkste acties noclobber.

& gt & gt; & gt & gt; naam _het dossier of & gt & gt; & gt & gt; ! naam _het dossier
de uitvoer wordt aan het einde van het bestand geplaatst. Als het bestand ontbreekt,
dan wordt het gemaakt, in de tweede - hetzelfde zal worden gedaan, maar met
sleutel annulering noclobber.

& gt & gt; & gt & gt; & naam _het dossier of & gt & gt; & gt & gt; &! naam _het dossier
In het eerste geval csh zal diagnostische berichten toevoegen aan
bestand, in het tweede geval wordt hetzelfde gedaan, maar met
belangrijkste actie: noclobber.

U kunt voorkomen dat de bestandsnaamextensie wordt gewijzigd. Voor
de sleutel wordt hiervoor gebruikt noglob... Over het algemeen is de naam
bestand ziet er als volgt uit: de basis _naam. achtervoegsel... Als de sleutel is geïnstalleerd
noglob, zal het wijzigen van de achtervoegsels van bestaande bestandsnamen zijn
een foutstatus genereren. Om dit ongedaan te maken
sleutel voor specifieke bestanden, in opdrachtregels die u kunt specificeren
gebruik dezelfde constructies als bij het gebruik van de sleutel
noclobber.

Het is mogelijk om berichten om te leiden over
fouten in de pijplijn. Hiervoor wordt de constructie gebruikt
|& ... Het gebruik ervan in de pijplijn zal ertoe leiden dat alle
diagnostische berichten worden niet naar het scherm gestuurd.
lei (standaardfoutuitvoer), en met de rest van de uitvoer
Huis. Bijvoorbeeld foutmeldingen in de pijplijn

kat& ik & het; bestand1 | & pr -w 79 -l 24 & gt & gt; bestand2

Wordt niet naar standaarduitvoer (weergavescherm) geleid, maar
aan de overkant pr v bestand2.

1.4. Procesmanagement

Het proces is het hoofddoel van de DEMOS, het kan presteren:
synchroon en asynchroon lopen. Een synchroon proces is:

- 11 -

Een proces dat de communicatie gedurende de gehele uitvoeringstijd onderbreekt
tussen gebruiker en tolk, asynchroon proces
loopt parallel met csh... De opdrachtregel kan
spawn verschillende processen, die elk zijn toegewezen
Er is een uniek nummer - een identificatie. ID gebruikt
wordt gebruikt om het proces te sturen. Er zijn twee soorten identificatie:
proces fixators: systemisch en intern. Systeem-ID
de proces-ID wordt weergegeven door de opdracht ps en geldt voor elk
thuis proces. Elke systeemproces-ID
overeenkomen met een unieke interne identificatie
torus. Alleen de interne proces-ID is bekend
gebruiker, verwijst naar alle processen die door één zijn voortgebracht
opdrachtregel, en wordt gebruikt om het proces in
teams fg, bg, stop, doden, op de hoogte stellen... Het proces kan vinden
in twee toestanden zijn - actief of geschorst
lui. Het procescontrolemechanisme omvat het volgende:
fondsen:

Voltooiing van de uitvoering van een synchroon (asynchroon) proces
cessa;

Pauzeren (hervatten) uitvoering van een synchrone
(asynchroon) proces;

De procesuitvoeringsmodus wijzigen van synchroon naar
asynchroon en vice versa;

Een bericht weergeven over de statussen van een asynchroon proces
na voltooiing of op het moment van wijziging;

I/O aansturing tijdens procesuitvoering;

Stuur een signaal naar het proces;

Beheer van procesmiddelen.

Informatie over processen wordt door de tolk opgeslagen in het formulier
tafels. De huidige status van de tabel kan worden verkregen door:
door het commando uit te voeren banen of banen -l... In het tweede geval is de output
meer gedetailleerde informatie wordt gegeven. Na het uitvoeren van de opdracht
banen we krijgen bijvoorbeeld:

Gestopt cc -c *.O
- Gestopt laten installeren
+ Gestopt rood het dossier
Uitgevoerd soort het dossier& gt & gt; resultaat &
Uitgevoerd mx -q -N -u -s *.m& gt & gt; uit &

Elke rij in de tabel bevat informatie over een specifiek product.
cessé. De interne identifier wordt aangegeven tussen vierkante haken
Verwerken. Er zijn verschillende manieren om de identifier te specificeren
cator in de opdrachtregel bij het verwijzen naar een element van de tabel
processen:

% of %+
de laatste van degenen die zijn geschorst;

%-
de voorlaatste van degenen die zijn geschorst;

% Kamer
iedereen met dezelfde interne identifier;

% symbolen
elk met zulke eerste tekens van de regel;

%? steekproef?
elk proces met zo'n patroon op een lijn.

Als resultaat wordt het synchrone proces gestart
voer een opdrachtregel uit die niet eindigt op een teken & .
Om te stoppen met het uitvoeren van een synchroon proces, moet u:
karakter afdrukken zo / zo (CTRL / C). Als je moet stoppen?
uitvoering van een synchroon proces met opslaan in een afbeeldingsbestand
geheugen, moet u het symbool afdrukken zo / \ (CTRL / \). Bij
dit zal een bestand schrijven met de naam kern.
Bestand kern is een kopie van het geheugen dat in RAM werd ingenomen door de
stop op het moment dat het signaal werd verzonden zo / \.

Een synchroon proces kan informatie op het scherm weergeven
Scherm. In dit geval, om de uitvoer te onderbreken, moet u:
dimo print karakter zo / zo (CTRL / S), doorgaan
uitvoering, is het noodzakelijk om het symbool af te drukken ZO / Q (CTRL / Q).
Als het synchrone proces geen informatie op het display weergeeft,
om het te pauzeren, moet je het karakter afdrukken ZO / Z
(CTRL / Z), en typ . om door te gaan fg of % ... Beschreven
methoden voor het besturen van een synchroon proces zijn aanzienlijk verschillend
persoonlijk. De eerste wordt alleen gebruikt in het geval van uitvoer naar het display
lei, de tweede kan in ieder geval worden gebruikt. Daarnaast,
gebruik makend van ZO / Z het synchrone proces is onderbroken
met de hervatting van het werk csh, en bij gebruik zo / zo van dit
zal niet gebeuren. Het is mogelijk om het proces over te dragen van
synchroon naar asynchrone uitvoeringsmodus. Hiervoor is het nodig
je moet het pauzeren met behulp van ZO / Z druk dan af

- 13 -

bg... Vanaf dit moment tot de voltooiing ervan, zal het proces zijn
lopen asynchroon.

Als resultaat wordt een asynchroon proces gestart
mate uitvoering van de opdrachtregel, waarvan het einde wordt aangegeven
symbool & ... Na het starten van het asynchrone proces naar het scherm
het display toont een bericht als

[nummer] nummer

Het getal tussen vierkante haken is de interne identifier van de
proces, nummer zonder haakjes - systeemproces-ID.
Om de uitvoering van een asynchroon proces op te schorten, moet u:
moet afdrukken

stop%identificatie _Verwerken
of
stop%lijn

In het formaat stop%lijnéén wordt gebruikt als een tekenreeks
van de formulieren van de link naar de tabel met processen. Laten we zeggen dat er een gebrek is aan
Hoeveel asynchroon lopende processen:

1 soort het dossier& gt & gt; / tmp/resultaat &
2 cc *.C& gt & gt; & fouten &
3 lint *.C& gt & gt; & mijn bericht &

De eerste kan als volgt worden gestopt: stop% 1 of stop% sorteren; tweede
- stop% 2 of stop% c; derde - stop% 3 of stop% li, of
stop%?mijn bericht? ... Om de uitvoering te hervatten gepauzeerd-
proces, gebruik het commando fg om het uit te voeren zoals

Wat is de belangrijkste taak van elk besturingssysteem? Een besturingssysteem is een systeem voor het beheren van een computer, de processen, het interne geheugen en gebruikersacties in het algemeen. We raden de lezer aan om het besturingssysteem vanuit dit aspect nader te bekijken.

Wat is het?

Natuurlijk is in de eerste plaats het besturingssysteem het besturingssysteem. Laten we een meer volledige definitie van besturingssysteem geven: een complex van besturings- en verwerkingstoepassingen. Aan de ene kant fungeren ze als een interface tussen computersysteemapparaten en toegepaste applicaties en programma's. Aan de andere kant is een besturingssysteem een ​​besturingssysteem voor bepaalde apparaten, 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 de logische structuur van een typisch computersysteem, zal het besturingssysteem hier een tussenpositie innemen tussen apparaten met hun eigen microarchitectuur, machinetaal, ingebedde microprogramma's enerzijds en applicatietoepassingen anderzijds.

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

In de meeste computersystemen is het besturingssysteem het besturingssysteem. Dit is het belangrijkste, belangrijkste (en in sommige gevallen het enige) deel van de systeemsoftware. Als we ons wenden tot specifieke voorbeelden, 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 beheren van besturingssystemen? Deze constructie van de zin is onjuist. Het besturingssysteem zelf is immers een complex van programma's die computerbronnen beheren en een dialoog tussen de gebruiker en het apparaat onderhouden.

Er is dus "olie van olie": management control. Er is een complex van applicatieprogramma's die worden "beheerd" door het besturingssysteem.

Belangrijkste OS-functies:

Besturingssysteem - Beheer van computerbronnen. Dit is de hoofdtaak van het besturingssysteem. Een reeks van de volgende functies volgt hier rechtstreeks uit:

  • Uitvoeren van diverse programmaverzoeken. Zoals: invoer en uitvoer van informatie, starten en stoppen van applicatieprogramma's en applicaties, vrijmaken, toewijzen van geheugen, enzovoort.
  • Het bieden van gestandaardiseerde toegang tot randapparatuur (zoals een I/O-apparaat).
  • Beheer van het RAM-geheugen van de computer: de verdeling over actieve processen, de algemene organisatie van virtueel geheugen.
  • Toegangscontrole tot gegevens die zijn opgeslagen op niet-vluchtige media. Bijvoorbeeld op optische, harde schijven, etc.
  • Informatie opslaan over systeemfouten.
  • Het bieden van een gebruikersinterface.

Commandotalen - dialoog met de gebruiker

Hoe is databeheer van het besturingssysteem mogelijk? Zoals in de meeste interactieve complexen, kan de gebruiker de werking van het besturingssysteem beïnvloeden met behulp van speciale commandotalen.

Wat is dit? Een commandotaal is een computertaal waarin een persoon interageert met een interactief systeem. Waarom ploegen? 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 beschouwen vanaf de kant van het algemene systeem van talen van mens-computerinteractie, dan behoren ze tot de categorie van geïnterpreteerde talen. Hun tegenstanders zijn complementaire talen.

Laten we eens kijken naar het verschil tussen beide: een taal wordt complementair genoemd als het vereist dat een constructie erop zo gesloten is dat het de mogelijkheid van geïsoleerde verwerking zou kunnen bieden zonder dat er extra taalconstructies nodig zijn. Anders kan begrip niet worden gegarandeerd. Geïnterpreteerde talen zijn begrijpelijk zonder een dergelijke vereiste.

Procesmanagement

Denk aan procesmanagement in besturingssystemen. OS houdt de volgende activiteiten in de gaten:

  • Zowel het aanmaken als verwijderen van processen.
  • Synchronisatie.
  • Planning.
  • Communicatie.
  • Deadlock-resolutie.

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

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

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

In veel besturingssystemen wordt informatie over elk proces opgeslagen in een speciale tabel met bedrijfsprocessen. Elk van hen wordt in het besturingssysteem vertegenwoordigd door een bepaalde set gegevens. Dit is een complex van waarden, parameters die de huidige staat van het proces kenmerken. Het wordt door het besturingssysteem gebruikt om de doorgang van een specifiek proces door een computer te regelen.

Hoe komt het rekenproces in dit geval tot stand? Er zijn twee manieren: rechtstreeks ingevoerd via het toetsenbordcommando of via een batchbestand. Het proces omvat minimaal het laden van de applicatie en het maken van speciale besturingsblokken.

Als gevolg hiervan verschijnt een kwalitatief nieuw proces, dat later wordt opgenomen in de multi-programmamix. Daarna begint het besturingssysteem het al te zien. Het proces zelf is in een staat van gereedheid.

OS-procestabel

De processen functioneren dus, draaien onder de controle van het besturingssysteem. Laten we een korte tabel met OS-processen presenteren:

  • Sectie "Procesbesturing": registers, opdrachttellers, stapelaanwijzers, processtatus, de prioriteit ervan, planningsparameters, proces-ID's, bovenliggende processen, procesgroepen, processtarttijd, gebruikte CPU-tijd.
  • Sectie "Geheugenbeheer": verwijzingen naar tekstsegmenten, verwijzingen naar gegevenssegmenten, verwijzingen naar stapelsegmenten.
  • Bestandsbeheer: werkmappen, hoofdmap, gebruikers-ID's, bestandsbeschrijvingen, groeps-ID's.

Geheugen management

Laten we een ander belangrijk aspect bekijken: geheugenbeheer in besturingssystemen.

Opgemerkt moet worden dat het geheugen de belangrijkste hulpbron is en dat het meest zorgvuldige beheer door meervoudig geprogrammeerde besturingssystemen vereist is. Wat zorgt voor zijn speciale rol? De processor kan instructies van applicaties, programma's alleen uitvoeren als ze zich in het computergeheugen bevinden.

In vroege besturingssystemen was geheugenbeheer eenvoudig: het programma en de benodigde gegevens werden van een extern gegevensopslagapparaat (optische schijf, ponsband, magnetische tape, enz.) In het geheugen van de computer geladen. Met de komst van multiprogrammering is de situatie radicaal veranderd. Er is een nieuw probleem ontstaan: de verdeling van computergeheugen over verschillende draaiende applicaties.

De belangrijkste taken van het besturingssysteem voor geheugenbeheer

We blijven praten over besturingselementen in besturingssystemen. Laten we de belangrijkste taken van het besturingssysteem voor het beheer van het computergeheugen uitlichten:

  • Segmenten van vrij en gebruikt geheugen volgen.
  • Geheugen toewijzen aan bepaalde processen en het aan hun einde vrijmaken.
  • Verdrijving van zowel codes als procesgegevens van RAM naar schijf - volledig of gedeeltelijk. Het wordt gebruikt wanneer de hoeveelheid hoofdgeheugen niet voldoende is om alle processen erin onder te brengen. Wanneer het OP wordt vrijgegeven, zet het besturingssysteem de processen weer op hun plaats.
  • De adressen van programma's en applicaties instellen voor specifieke zones van fysiek geheugen.

Extra OS-functies voor pc-geheugenbeheer

Overweeg de extra taken die het systeem in dit geval uitvoert:

  • Dynamische toewijzing van apparaatgeheugen. Dit verwijst naar de uitvoering van verzoeken van applicaties om extra opslagruimte toe te wijzen terwijl ze actief zijn.
  • Creëren van nieuwe informatieservicestructuren - buffers, threads en procesbeschrijvingen.
  • Geheugen bescherming. Bestaat uit het niet toestaan ​​dat een specifiek uitvoerbaar proces gegevens schrijft of leest die betrekking hebben op een andere actie.

Zoals we al zeiden, niet genoeg RAM voor alle processen. Daarom verbindt het besturingssysteem een ​​externe schijf. Dit bestaat uit de volgende acties van het systeem:

  • Ruil. Hier wordt het proces volledig in het geheugen geladen voor verder werk.
  • Virtueel geheugen. In dit geval wordt het proces gedeeltelijk geladen om een ​​taak uit te voeren.

Merk nogmaals op dat grote processen slechts tijdelijk door het besturingssysteem naar de harde schijf worden gelost. Nadat het "RAM" is vrijgegeven, brengt het systeem ze terug naar hun plaats.

Een besturingssysteem is een hele reeks software die een computer bestuurt. Dat wil zeggen, zijn geheugen, processen, bronnen. Een andere belangrijke functie van het besturingssysteem: het bouwen van de interactie van het computersysteem met een persoon, een gebruiker. Dit wordt bereikt met behulp van speciale tools - opdrachttalen.

Wanneer u de computer aanzet (of op de RESET-toets drukt), wordt de inhoud van het RAM gewist, van het ROM wordt het naar de OP geschreven en wordt het BIOS gestart. BIOS test geheugen en computerapparatuur op prestaties; als er kritieke fouten zijn, wordt er een pieptoon en/of bericht gegeven en wordt het downloadproces beëindigd. Tijdens het testproces is het mogelijk om de CMOS in te voeren en wijzigingen aan te brengen in de computerconfiguratieparameters (als dergelijke wijzigingen worden aangebracht, moet het opstartproces opnieuw worden gestart). In de eerste sector van de schijf, waar het besturingssysteem zich bevindt, leest het BIOS het bootloader-programma en draagt ​​het de besturing ervan over. Het laadprogramma leest en laadt de bestanden IO.SYS, MSDOS.SYS, COMMAND.COM en CONFIG.SYS in het RAM. Vervolgens worden apparaatstuurprogramma's geladen en worden de configuratiecommando's gespecificeerd in het CONFIG.SYS-bestand uitgevoerd, en het AUTOEXEC.BAT-bestand wordt uitgevoerd, dat de daar gemarkeerde programma's start (bijvoorbeeld NC of Windows).

Het opdrachtenbestand AUTOEXEC.BAT legt de opdrachten vast die elke keer dat de computer wordt aangezet moeten worden uitgevoerd, bijvoorbeeld:

commando's voor het starten van sommige programma's, lijsten met mappen waarin gezocht moet worden naar programma's die moeten worden gestart, enz.

Als er geen AUTOEXEC.BAT-bestand is, verschijnt er een prompt op het scherm om de huidige datum en tijd in te voeren, waarna een prompt op het scherm verschijnt (bijvoorbeeld C: \>) om opdrachten in te voeren DOS.

Om te communiceren met een pc in de taal van opdrachten, biedt het besturingssysteem de gebruiker de mogelijkheid om opdrachten en de benodigde parameters van deze opdrachten op een speciale plaats in het schermvenster in te voeren - in de opdrachtregel. De opdrachtregel geeft altijd het logische station, het pad naar de huidige map (huidige map) en de opdrachtprompt aan in de vorm van het ">"-symbool.

Bijvoorbeeld: C: \ thema \ boek \>[plaats om het commando en zijn parameters in te voeren]

Huidige map- de directory waarin het zoeken en plaatsen van de bestanden die zijn gespecificeerd in de parameters van de opdracht die wordt ingevoerd, zal worden uitgevoerd.

In dit voorbeeld is de huidige directory book.

dir [station] [pad] [toetsen]

Doel: het weergeven van informatie over mappen en bestanden; zonder het pad en de parameters op te geven - de huidige map bekijken met de uitvoer van de namen van submappen, bestandsnamen, hun grootte in bytes, de datum en tijd van de laatste wijziging van de inhoud van de bestanden.

Sleutels:

/ P- scherm-voor-scherm uitvoermodus; het volgende scherm - na het indrukken van een toets.

/ met- breedbeeldformaat, - alleen de naam wordt weergegeven; maximaal 5 namen op één regel.

Voorbeeld:

Richt een: de hoofdmap van de logische schijfeenheid A . bekijken

Dir a: / p / w de directory van station A oproepen met maximaal 5 bestandsnamen per regel



md [station:] [pad]

Doel: Opdracht voor het maken van directory's.

Met deze opdracht kunt u een directorystructuur met meerdere niveaus maken. V MS DOS de maximale padlengte van de hoofdmap naar de map op een lager niveau mag niet meer dan 63 tekens zijn.

Voorbeeld:

md util- een map maken gebruiken in de huidige map

md \ util- een map maken gebruiken in de hoofdmap

md \ util \ waarschijnlijk- een submap maken waarschijnlijk in de catalogus gebruiken.

Mem [toetsen]

Doel: Toont de hoeveelheid gebruikt en vrij geheugen en een lijst met geladen programma's.

Sleutels:

/ P- - informatie weergeven over programma's die in het geheugen zijn geladen

/ NS - informatie weergeven over programma's en interne stuurprogramma's (evenals andere informatie).

CLS

Doel: het scherm wissen

CD [station:] [pad]

Doel: Wijzigt de huidige map, dat wil zeggen, de huidige map verandert in de opgegeven map.

Voorbeeld:

cd..- ga 1 niveau omhoog

cd \- ga naar de hoofdmap.

cd-gebruik- een util-map maken in de huidige map

Del [station:] [volledige bestandsnaam]

Doel: De opdracht om een ​​bestand(en) te verwijderen.

Sleutels:

/ P- een verzoek om bevestiging van verwijdering weergeven.

De opdracht kan de jokertekens "*", "?" zoals hierboven uitgelegd.

Voorbeelden:

Del *. *- verwijder alle bestanden uit de huidige map,

Del pro? Ramm.txt- verwijder uit de huidige map alle bestanden met de txt-extensie die een willekeurig teken in de naam op de 4e positie hebben.

Del pr?R * .tx *- verwijder uit de huidige directory bestanden die een teken op de 3e positie hebben en alle tekens na het 4e teken, en in de extensie met de eerste twee tekens tx.

Del c: \ util \ *. *- verwijder alle bestanden uit de map gebruik.

Het fysiek verwijderen van een bestand gaat als volgt. In de directory wordt het eerste teken van de naam gewist en in FAT worden de clusters waar het bestand zich bevond als vrij gemarkeerd. Dat wil zeggen, vóór de eerste opname op een fysiek medium, kunt u een per ongeluk verwijderd bestand herstellen met een speciaal programma (in MS-DOS is dit PCTOOLS). In Windows worden bestanden verwijderd via de Prullenbak en wordt FAT-ruimte gemarkeerd als vrij na het legen van de Prullenbak. Maar zolang het bestand zich in de prullenbak bevindt, kunt u het herstellen.

kopieer [station:] full_name_1 [station:] full_name_2

Doel: Kopieert een of meer bestanden naar de opgegeven locatie.

Kopieer [station:]<полное_имя_1>+ [floppydrive:]<полное_имя_2>[rit:]<полное_имя_N>

Doel: Combineert bestanden van hetzelfde type:

Indien niet gespecificeerd<full_name_N> dan heeft het gecombineerde bestand naam_1.

kopiëren met<полное имя>

Doel: Maakt een tekstbestand van de toetsenbordconsole.

kopiëren / b<полное имя>prn

Doel: Drukt een bestand af:

/ B het kopiëren gaat door, zelfs als een symbool met een code wordt aangetroffen 26 - Ctrl-Z

Het bestand kan niet naar zichzelf worden gekopieerd. Het is noodzakelijk om nauwkeurig te bepalen wat en waar we kopiëren.

Voorbeelden:

Kopieer proba.txt een:- Kopieer bestand proba.txt van huidige map naar schijf EEN.

Kopieer d: \ a * .txt c: \ util- kopieer bestanden met het eerste teken in de naam "een", van schijf NS naar schijf C naar directory gebruiken

Kopieer primer.txt + proba.txt 2prim.txt- bestanden combineren primer.txt en proba.txt en sla het samengevoegde bestand op als 2prim.txt in de huidige map.

ren [station:] bestandsnaam1 bestandsnaam2

Doel: Verandert de naam van een bestand of directory

Rd-opdracht [station:] [pad]

Doel: Verwijdert een lege map uit de gelaagde mapstructuur.

typ [station:] [pad] bestandsnaam

Doel: Toont de inhoud van een tekstbestand op het display.

Voorbeeld:

typ c: \ util \ primer.txt- bekijk het bestand primer.txt op schijf MET in de map gebruiken

Ver

Doel: Geeft de versie van het besturingssysteem dat op de computer is geïnstalleerd

xcopy [station:] [pad1] [station:] [pad2] [sleutels]

Doel: Kopieert bestanden en mappen van lagere niveaus.

de sleutels :

/ e- kopieer alle submappen, zelfs als ze leeg zijn

/ s- kopieer mappen alleen als ze niet leeg zijn

Voorbeeld:

xkopie a: b: / e- kopiëren van schijf EEN alle inhoud, inclusief mappen en submappen, naar schijf V zelfs als die mappen en submappen leeg zijn.

diskettestation formatteren [toetsen]

Doel: Formatteert het opgegeven station in een formaat dat geschikt is voor het opslaan van bestanden MS-DOS.

Formatteren creëert een nieuwe FAT-tabel en rootbestand op schijf.

de sleutels :

/ s- geeft aan dat de opgegeven schijf moet worden geformatteerd als systeemschijf. In dit geval worden na het formatteren de bestanden van het MS-DOS-besturingssysteem naar de schijf gekopieerd.

Voorbeeld:

formaat a: / s- formatteer station A: met overdracht ernaar systeembestanden besturingssysteem MS DOS.

De commandotaal shell (in vertaling - shell, shell) is eigenlijk een programmeertaal op zeer hoog niveau. In deze taal bestuurt de gebruiker de computer. Meestal begin je na het inloggen met de shell te communiceren. Een indicatie dat de shell klaar is om opdrachten te ontvangen, is de prompt die op het scherm wordt weergegeven. In het eenvoudigste geval is dit één dollar ("$"). Shell is niet nodig en de enige voertaal (hoewel hij het is die is gestandaardiseerd in het kader 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. Het kan tegelijkertijd werken op één exemplaar van het besturingssysteem met verschillende opdrachttalen. shell is een van de vele UNIX-opdrachten. Dat wil zeggen, de "shell"-opdrachtenset bevat de "sh"-opdracht - waarbij de "shell"-interpreter wordt aangeroepen. De eerste "shell" wordt automatisch aangeroepen wanneer u zich aanmeldt en geeft een prompt weer. Daarna kun je alle commando's voor uitvoering oproepen, inclusief de "shell" zelf, die een nieuwe shell voor je zal maken in de oude. Dus als u bijvoorbeeld het bestand "file_1" voorbereidt in de editor:

Echo Hallo!

dan zal het een gewoon tekstbestand zijn dat de "echo"-opdracht bevat, die, wanneer uitgevoerd, alles weergeeft dat rechts ervan op het scherm is geschreven. Je kunt het bestand "file_1" uitvoerbaar maken met het commando "chmod 755 file_1". Maar het kan worden uitgevoerd door expliciet de opdracht "sh" ("shell") aan te roepen:

Sh file_1

NS< file1

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

Bestand_1

Aangezien UNIX een systeem voor meerdere gebruikers is, kunt u zelfs parallel op een pc werken, bijvoorbeeld op 12 schermen (overschakelen van scherm naar scherm ALT / functietoets), met op elk scherm een ​​nieuwe (of dezelfde) gebruiker met zijn commandoschelp. U kunt ook een groot aantal vensters openen in de grafische X-Window-modus, en elk venster kan zijn eigen gebruiker hebben met zijn eigen opdrachtshell ... Het kernelement van de shell-taal is de opdracht.

Commando structuren:

Shell-opdrachten hebben meestal de volgende indeling:

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

Bijvoorbeeld:

Ls -ls / usr / bin

Waar ls de naam is van het commando om de inhoud van een map weer te geven, -ls zijn vlaggen ("-" is een vlagteken, l is een lang formaat, s gaat over "bestanden in blokken), / usr / bin is een directory waarvoor het commando wordt uitgevoerd. Dit commando zal de inhoud van de / usr / bin directory op het scherm in lang formaat weergeven, terwijl informatie over de grootte van elk bestand in blokken wordt toegevoegd. Helaas wordt deze commandostructuur niet altijd onderhouden. Niet altijd wordt een minteken voor vlaggen geplaatst, niet altijd zijn vlaggen in één woord variatie in de weergave van argumenten Onder de commando's met exotische formaten zijn zulke "populaire" commando's als cc - de C-compiler aanroepen, tar - werken met archieven , dd - kopiëren van een bestand met transformatie, zoeken - zoeken naar bestanden en een aantal andere In de regel wordt het eerste woord door de shell geïnterpreteerd als een commando.

het eerste woord zal door de shell worden gedecodeerd als een (aaneenschakeling) commando, dat een bestand met de naam "cat" (tweede woord) in de huidige map zal weergeven. Opdrachten omleiden Standaardinvoer (invoer) - "stdin" in UNIX OS wordt gedaan vanaf het terminaltoetsenbord en standaarduitvoer (uitvoer) - "stdout" wordt naar het terminalscherm geleid. Er is ook standaard bestand diagnostische berichten - "stderr", die iets later zal worden besproken. Het commando dat kan werken met standaard invoer en uitvoer heet FILTER. De gebruiker heeft handige middelen om invoer en uitvoer om te leiden naar andere bestanden (apparaten). De symbolen ">" en ">>" geven uitvoeromleiding aan. ls> file_1 de opdracht "ls" zal een lijst met bestanden in de huidige map genereren en deze in het bestand "file_1" plaatsen (in plaats van deze op het scherm af te drukken). Als het bestand "file_1" eerder bestond, wordt het overschreven door een nieuw bestand.

Wwd >> file_1

het pwd-commando genereert 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

zal tellen en het aantal regels in file_1 weergeven.

Ed file_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 file_4

Wc -l> file_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. Een middel om te verenigen standaard uitvoer het ene commando met de standaardinvoer van het andere wordt CONVEYOR genoemd en wordt aangegeven met de verticale balk "|".

Ls | wc -l

de lijst met bestanden in de huidige map wordt verzonden naar de invoer van het "wc"-commando, dat het aantal mapregels op het scherm zal afdrukken. Er kunnen meer dan twee commando's worden gecombineerd met een pijplijn, wanneer ze allemaal, mogelijk behalve de eerste en de laatste, filters zijn:

Kat file_1 | grep -h resultaat | sorteren | cat -b> file_2

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

Ls> / dev / lp

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

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

In dit geval wordt het bestand "file_1" gesorteerd en verzonden om af te drukken, en de laatste 20 regels worden ook op het scherm weergegeven. Laten we teruggaan naar de exit-omleiding. Standaardbestanden zijn genummerd:

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

Kat file_1 file_2

die achtereenvolgens de inhoud van de bestanden "file_1" en "file_2" moet weergeven, geeft u bijvoorbeeld het volgende

111111 222222 cat: f2: Geen dergelijk bestand of map

waarbij 111111 222222 de inhoud is van het bestand "file_1", en het bestand "file_2" ontbreekt, waarover het "cat"-commando standaard een bericht naar het standaard diagnostische bestand heeft afgedrukt, net als de standaarduitvoer die door het scherm wordt weergegeven . Als u zo'n bericht niet op het scherm wilt, kunt u het doorsturen naar het door u opgegeven bestand:

Cat file_1 file_2 2> f-err

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

Cat file_1 file_2 >> ff 2> ff

U kunt niet alleen specificeren welke van de standaardbestanden u wilt omleiden, maar ook naar welk standaardbestand u wilt omleiden.

Cat file_1 file_2 2 >> ff 1> & 2

Hier wordt eerst "stderr" omgeleid (in append-modus) naar bestand "ff", en vervolgens wordt de standaarduitvoer omgeleid naar "stderr", wat op dit moment het bestand "ff" is. Dat wil zeggen, het resultaat zal vergelijkbaar zijn met het vorige. De constructie "1> & 2" - betekent dat naast het nummer van het standaardbestand dat moet worden doorgestuurd, u "&" ervoor moet plaatsen; de hele constructie is geschreven zonder spaties.<- закрывает стандартный ввод. >- sluit standaard uitgang. Commando bestanden. Er zijn verschillende mogelijkheden om een ​​tekstbestand als commando te gebruiken. Laat de editor een bestand maken met de naam "cmd" dat één regel van de volgende vorm bevat:

Datum; pwd; ls

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

$ sh cmd

$ sh

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

Chmod 711 cmd

maakt de beveiligingscode "rwx__x__x". Dan een simpel telefoontje

zal dezelfde drie commando's uitvoeren. Het resultaat zal hetzelfde zijn als het bestand met de inhoud

Datum; pwd; ls

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

Batchbestanden debuggen

SHELL gebruikt twee mechanismen voor het debuggen van batchbestanden. De eerste is: set -v drukt de regels van het batchbestand af terwijl het ze leest. Deze modus wordt gebruikt bij het zoeken naar syntaxisfouten. Om het te gebruiken, hoeft u het batchbestand niet te wijzigen, bijvoorbeeld: sh -v proc ... hier is proc de naam van het batchbestand. De schakeloptie -v kan worden gebruikt in combinatie met de schakeloptie -n, die de uitvoering van volgende opdrachten verhindert (de opdracht set -n blokkeert de terminal totdat het einde-van-bestand-teken EOF wordt ingevoerd). De opdracht set -x geeft opdrachten weer terwijl ze worden uitgevoerd, en de programmaregels worden naar de terminal afgedrukt en hun waarden worden vervangen in plaats van de variabelen. Om de schakelaars -x en -v te annuleren, kunt u het set-commando gebruiken - en om het in te stellen, wijst u de overeenkomstige waarde toe aan de macrovariabele. OMGEVINGSHELL (VARIABELEN EN PARAMETERS) In de shell-taal kunt u opdrachtbestanden schrijven en de opdracht "chmod" gebruiken om ze uitvoerbaar te maken. Daarna zijn ze niet anders dan andere UNIX-commando's.

Shell-variabelen

De naam van een shell-variabele is een op een letter beginnende reeks cijfers en onderstrepingstekens. De waarde van de shell-variabele is een tekenreeks. Het feit dat er slechts twee soorten gegevens in de shell zitten: een tekenreeks en een tekstbestand enerzijds, maakt het gemakkelijk om eindgebruikers te betrekken die nog nooit eerder hebben geprogrammeerd, en zorgt anderzijds voor intern protest van veel programmeurs die gewend zijn aan aanzienlijk meer variatie en meer flexibiliteit van taalmiddelen. Het is echter interessant om te zien hoe eersteklas programmeurs, die vertrouwd zijn geraakt met de "spelregels" van de shell, er vele malen sneller programma's op schrijven dan in C, maar wat vooral interessant is, in sommige gevallen deze programma's lopen zelfs nog sneller dan die geïmplementeerd in C. De naam van de variabele is vergelijkbaar met het traditionele concept van een identifier, d.w.z. de 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 tekenreeks van twee cijfers. var_2 = "UNIX OS" - dubbele aanhalingstekens ("") zijn hier vereist omdat er een spatie in de tekenreeks staat.

Andere manieren om waarden toe te kennen aan shell-variabelen zijn ook mogelijk. Dus bijvoorbeeld een record,

DAT = `datum`

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

Echo -n "Voer een driecijferig nummer in:" lees x

Bij het uitvoeren van dit fragment van het batchbestand, na het weergeven van het bericht

Voer een driecijferig nummer in:

de interpreter zal stoppen en wachten tot een waarde wordt ingevoerd vanaf het toetsenbord. Als u bijvoorbeeld "753" invoert, wordt dit de waarde van de variabele "x". Eén "lees"-commando kan waarden voor meerdere variabelen tegelijk lezen (toewijzen). Als er meer variabelen in "read" staan ​​dan ze zijn ingevoerd (gescheiden door spaties), krijgt de rest een lege string toegewezen. Als er meer waarden worden doorgegeven dan variabelen in het "lees"-commando, dan worden de extra genegeerd. Wanneer u naar een shell-variabele verwijst, moet u het "$"-symbool voor de naam plaatsen. Dus de commando's echo $ var_2 echo var_2 worden weergegeven

UNIX OS var_2 Ontsnappen

Laten we de ontsnappingstechnieken die in de shell worden gebruikt eens nader bekijken. Dubbele aanhalingstekens (""), enkele aanhalingstekens ("") en backslash (\) worden gebruikt als escapes. Hun actie blijkt 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 toewijzing G = $ x + $ y zou mislukken vanwege spaties) Dan

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

Wordt weergegeven op het scherm

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

Hier volgen nog enkele voorbeelden met betrekking tot escape-regelfeeds. Laat de variabele "string" de waarde van de "array" 2x3 krijgen: abc def Merk op dat om het toewijzen van extra spaties te vermijden, de tweede regel van de array begint op de eerste positie van de volgende regel: string = "abc def" Dan er zijn drie opties voor het schrijven van de variabele in het commando "echo" echo $ string echo "$ string" echo "$ string" geeft respectievelijk drie verschillende resultaten: abc def $ string abc def en de volgorde van de commando's echo "str_1 str_2" > file_1 echo "str_1 str_2"> file_2 cat file_1 file_2 geeft sequentieel identieke bestanden file_1 en file_2: str_1 str_2 str_1 str_2 Merk ook op dat een backslash (\) niet alleen ontsnapt aan het volgende teken, waardoor speciale tekens eenvoudig kunnen worden gebruikt als tekens die zichzelf voorstellen (het kan ook aan zichzelf ontsnappen - \\), maar in een commando bestand, kunt u met een backslash "regels in één combineren (ontsnappen aan het einde van de regel). Bijvoorbeeld, het eerder gegeven voorbeeld van de opdrachtregel:

Kat file_1 | grep -h resultaat | sorteren | cat -b> file_2

kan in een batchbestand worden geschreven, zeg als

Kat file_1 | grep -h \ resultaat | sorteren | cat -b> file_2

Trouwens, het pijpsymbool biedt ook een vervolgeffect op de opdrachtregel. In dit geval kan het een mooier resultaat geven, bijvoorbeeld:

Kat file_1 | grep -h resultaat | sorteren | cat -b> file_2

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

X = 7 y = 2 a = `uitdr $ 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 weergeven

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

De bewerking van vermenigvuldiging ("*") 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. Niet alleen (integer) is mogelijk met het "expr" commando rekenkundige bewerkingen maar ook snaren:

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

Cijfers worden weergegeven met het aantal overeenkomende tekens in de tekenreeksen (vanaf het begin). De tweede regel mag niet langer zijn dan de eerste:

4 0 0 0

Variabelen exporteren In UNIX OS is er een concept van een proces. Het proces ontstaat wanneer een opdracht wordt gestart voor uitvoering. Als u bijvoorbeeld "p "het proces" p "wordt gegenereerd. Op zijn beurt kan "p" andere processen voortbrengen. Stel dat "p" p1 "en" p2 "aanroept, die opeenvolgend de corresponderende processen voortbrengen. Elk proces heeft zijn eigen omgeving - een set van variabelen die ervoor beschikbaar zijn Voordat bijvoorbeeld "p" werd uitgevoerd, was er al een omgeving waarin enkele variabelen al waren gedefinieerd. Het uitvoeren van "p" leidt tot een nieuwe omgeving; "p1" en "p2" zullen er al in worden voortgebracht. zijn lokaal voor het proces waarin ze zijn gedeclareerd, dat wil zeggen, waar ze waarden zijn toegewezen.Om ze beschikbaar te maken voor andere voortgebrachte processen, moet je ze expliciet doorgeven met behulp van de ingebouwde "export"-opdracht.

Opties

Parameters kunnen worden doorgegeven aan het batchbestand. De shell gebruikt positionele parameters (dat wil zeggen, de volgorde waarin ze verschijnen is essentieel). In het commandobestand beginnen de variabelen die overeenkomen met de parameters (vergelijkbaar met shell-variabelen) met het "$"-teken, en dan volgt een van de cijfers van 0 tot 9: Laat "examp-1" worden aangeroepen met de "cock " en "staart" parameters. Deze parameters vallen in de nieuwe omgeving onder de standaardnamen "1" en "2". Een (standaard)variabele met de naam "0" bevat de naam van de aangeroepen berekening. Bij toegang tot parameters wordt het dollarteken "$" voor het cijfer geplaatst (zoals bij toegang tot variabelen): $ 0 komt overeen met de naam van dit commandobestand; $ 1 is de eerste parameter in volgorde; $ 2 tweede parameter, enz. Aangezien het aantal variabelen waaraan parameters kunnen worden doorgegeven, beperkt is tot één cijfer, d.w.z. 9e ("0", zoals reeds opgemerkt, heeft een speciale betekenis), dan voor verzending meer parameters wordt het speciale commando "shift" gebruikt. Een unieke benadering van parameters wordt gegeven door de opdracht "set". Bijvoorbeeld het fragment

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

zal weergeven

Eerste = een tweede = b derde = c

die. het "set"-commando stelt de parameterwaarden in. Dit kan erg handig zijn. Het commando "datum" wordt bijvoorbeeld weergegeven: huidige datum zeg "Mon May 01 12:15:10 2000", bestaande uit vijf woorden, dan

Set `datum` echo $ 1 $ 3 $ 5

zal weergeven

ma 01 2000

Met de opdracht "set" kunt u ook de uitvoering van het programma regelen, bijvoorbeeld: set -v geeft de regels weer die door de shell naar de terminal worden 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.

Shell-substituties

Voordat de commando's in commandobestanden direct worden geïnterpreteerd en uitgevoerd, voert de shell uit: verschillende soorten vervangingen: 1. VERVANGING VAN DE 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, woorden die beginnen met "$" worden vervangen overeenkomstige waarden variabelen en parameters. 3. INTERPRETATIE VAN RUIMTEN. 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 omgevingsvariabelen. Als u het "set"-commando typt zonder parameters, zal het scherm informatie weergeven over een aantal standaardvariabelen die bij het inloggen zijn gemaakt (en worden doorgegeven aan al uw nieuwe processen "door overerving"), evenals variabelen die door uw processen zijn gemaakt en geëxporteerd . Het specifieke type en de inhoud van de weergegeven informatie hangt in grote mate af van welke versie van UNIX wordt gebruikt en hoe het systeem is geïnstalleerd.

Uitvoeringsresultaat commando's instellen geen parameters (niet compleet):

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

Laten we een opmerking maken over de waarden van de variabelen. HOME = / root is de naam van de homedirectory waarin de gebruiker zich bevindt na het inloggen. Dat wil zeggen, nadat ik de gebruikersnaam en het wachtwoord correct heb getypt, bevind ik me in de map "/ root". PATH = / bin: / usr / bin:.: / Usr / local / bin: / usr / bin / X11 - deze variabele specificeert de volgorde van bestanden waarnaar de "shell" zoekt bij het zoeken naar een commando. De bestandsnamen worden hier gescheiden door dubbele punten. De volgorde van scans komt overeen met de volgorde van de namen in het pad. Maar in eerste instantie vindt het zoeken plaats tussen de zogenaamde ingebouwde commando's. De ingebouwde commando's bevatten de meest gebruikte commando's zoals "echo", "cd", "pwd", "date". Daarna zoekt het systeem in de map "/ bin", die de commando's "sh", "cp", "mv", "ls", enz. kan bevatten. Dan de directory "/ usr / bin" met de commando's "cat", "cc", "expr", "nroff", "man" en vele anderen. Verder vindt het zoeken plaats in de huidige map (".", Of een andere aanduiding voor "leeg", dwz ""), waar de commando's die u hebt geschreven zich waarschijnlijk bevinden. Na het typen van de opdrachtregel en het indrukken van "shell" (na het maken van de nodige vervangingen) herkent de naam die overeenkomt met de opdracht en zoekt ernaar in de mappen die in het PATH worden vermeld. Als de opdracht buiten deze mappen wordt geplaatst, wordt deze niet gevonden. Als er meerdere commando's zijn met dezelfde naam, wordt het commando aangeroepen dat zich in de eerst bekeken directory bevindt. PATH kan, net als andere variabelen, eenvoudig worden gewijzigd door mappen toe te voegen, te herschikken of uit te sluiten. IFS = (Internal Field Separator) geeft een lijst van tekens die worden gebruikt om woorden (velden) te scheiden. Dit zijn "spatie", "tabulatie" en "linefeed", dus links van de opdracht is niets zichtbaar en zijn twee regels bezet. LOGNAME = root - loginnaam (gebruikersnaam). MAIL = / var / spool / mail / root is de naam van het bestand waarnaar (e-mail)mail wordt ontvangen. PWD = / root - naam van de huidige map PS1 = $ (PWD): "" - type promter. In dit geval zal de prompter de naam van de huidige directory, een dubbele punt en een spatie weergeven. Dat wil zeggen, er zal "/ root:" zijn. PS2 => - deze promter (hier ">") wordt gebruikt als een uitnodiging om door te gaan met het invoeren (in de volgende regel) van een onvoltooid commando. Typ bijvoorbeeld het haakje openen "(" en nadat u op hebt gedrukt v volgende regel je zult deze prompt zien. Als u niet weet wat u vervolgens moet doen, typt u het haakje sluiten ")" en het zal verdwijnen. SHELL = / bin / sh - Deze variabele specificeert de shell die de gebruiker gebruikt. In dit geval wordt de standaard shell ("sh") gebruikt. De bronomgeving wordt automatisch geïnstalleerd bij het inloggen met behulp van bestanden zoals "/ etc / rc" en "/etc/.profile". Een van de manieren om eenvoudig de omgeving te wijzigen (bijvoorbeeld zoekpad voor opdrachten, type promter, shelltype, schermkleur, enz.) is door deze informatie in uw homedirectory te plaatsen in een gespecialiseerd bestand ".profile" ($ (HOME ) /. profiel) door toe te wijzen gewenste waarden omgevingsvariabelen... Dat wil zeggen, roep dit bestand op in de editor en schrijf wat je maar wilt). Elke keer dat u inlogt, zal dit bestand automatisch een nieuwe omgeving uitvoeren en installeren. Dit bestand MOET zich in uw HOME-directory (login-directory) bevinden. Merk op dat bestandsnamen die beginnen met een punt 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 trouwens niet zomaar vernietigd met het commando "rm *". Mezelf shell-interpreter wijst automatisch waarden toe aan de volgende variabelen (parameters):? de waarde die is geretourneerd door de laatste opdracht; $ procesnummer; ! achtergrond proces nummer;

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

@ een lijst met parameters, als een verzameling woorden; - vlaggen doorgegeven aan de shell. Bij toegang tot deze variabelen (dat wil zeggen, wanneer u ze gebruikt in een opdrachtbestand - een shell-programma), gaat u vooraf aan "$". Belangrijke rol bij het maken van unieke bestanden wordt een speciale variabele "$$" afgespeeld, waarvan de waarde overeenkomt met het nummer van het proces dat deze berekening uitvoert. Elke nieuwe berekening die door de computer wordt uitgevoerd, start een of meer processen die automatisch op volgorde worden genummerd. Daarom, door het procesnummer als bestandsnaam te gebruiken, kunt u er zeker van zijn dat elke nieuw bestand zal een nieuwe naam hebben (de bestaande wordt niet overschreven). Het voordeel is ook het grootste nadeel van deze manier van bestandsnaamgeving. Het is niet bekend welke namen aan de bestanden zullen worden toegekend. En als binnen dit proces je kunt een bestand vinden "zonder te kijken", dat wil zeggen, door het te openen met $$, dan kunnen dergelijke bestanden gemakkelijk verloren gaan. Dit creëert extra problemen bij het debuggen van programma's. Tolk oproepen Na de registratie van de gebruiker in het systeem (met het login commando) wordt de tolk van de SHELL taal gebeld. Als de registratiehandleiding van de gebruiker een .profile-bestand bevat, voert de interpreter dit bestand uit voordat ten minste één opdracht van de terminal wordt ontvangen (aangenomen wordt dat het .profile-bestand opdrachten bevat). Wanneer ze worden aangeroepen, kunnen de volgende schakelopties worden opgegeven: -c string Opdrachten worden gelezen van de opgegeven string. -s Commando's worden gelezen uit het standaard invoerbestand. De tolkberichten worden naar het standaard diagnosebestand geschreven. -i Interactieve werkwijze. Als het eerste teken van de parameter "0" een - is, worden de opdrachten uit het .profile-bestand gelezen.

SOFTWARESTRUCTUREN ===

Zoals in elke programmeertaal kan shell-tekst opmerkingen bevatten. Hiervoor wordt het symbool "#" gebruikt. Alles wat op de regel (in het commandobestand) links van dit symbool staat, wordt door de interpreter geïnterpreteerd 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 uitvoering van opdrachten bepalen. Bij dergelijke operators is het vaak nodig om de voorwaarde te controleren, die de richting van de voortzetting van berekeningen bepaalt.

Test ("") commando

Het testcommando verifieert de vervulling van een bepaalde voorwaarde. Dit (ingebouwde) commando wordt gebruikt om shell-selectie en loop-statements te vormen. Twee mogelijke opdrachtformaten:

Test conditie

[ voorwaarde ]

we zullen de tweede optie gebruiken, d.w.z. in plaats van het woord "test" voor de voorwaarde te schrijven, zullen we de voorwaarde tussen haakjes plaatsen, wat meer vertrouwd is voor programmeurs. In feite zal de shell dit commando herkennen aan het open haakje "[" als het woord dat overeenkomt met het commando "test". Er moeten spaties zijn tussen de haakjes en de voorwaarde die ze bevatten. Er moeten spaties zijn tussen waarden en een vergelijkings- of bewerkingsteken.De shell gebruikt voorwaarden van verschillende "types". VOORWAARDEN VOOR HET CONTROLEREN VAN BESTANDEN: -f bestand bestand "bestand" is een normaal bestand; -d bestand bestand "bestand" - map; -c bestand bestand "bestand" is een speciaal bestand; -r bestand heeft leesrechten op bestand "bestand"; -w bestand heeft toestemming om naar bestand "bestand" te schrijven; -s bestand bestand "bestand" is niet leeg.

LINE CONTROLE VOORWAARDEN: str1 = str2 strings "str1" en "str2" komen overeen; str1! = str2 strings "str1" en "str2" komen niet overeen; -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 conditiewaarden die in plaats van een conditie gebruikt kunnen worden (haakjes zijn niet nodig). VOORWAARDEN VOOR HET VERGELIJKEN VAN GEHELE GETALLEN: 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 is gelijk aan "y", x -lt y "x" is kleiner dan "y", x -le y "x" is kleiner dan of gelijk aan "y". COMPLEXE VOORWAARDEN: Geïmplementeerd met behulp van typische logische bewerkingen:! (not) keert de waarde van de exit-code 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

Als voorwaarde dan lijst

Hier is "elif" een afkorting voor "else if" die samen met de volledige kan worden gebruikt, d.w.z. het nesten van een willekeurig aantal "if"-instructies (evenals andere instructies) is toegestaan. Natuurlijk moet de "lijst" in elk geval zinvol en geldig zijn in de gegeven context. De meest afgeknotte structuur van deze operator

Indien voorwaarde, lijst dan fi

als aan de voorwaarde is voldaan (in de regel is dit een com, wordt de voltooiingscode "0" ontvangen, dan wordt de "lijst" uitgevoerd, anders wordt deze overgeslagen. Voorbeelden. Laat het schrijven "if-1"

Als [$ 1 -gt $ 2]

dan pwd else echo $ 0: Hallo!

Bel dan if-1 12 11 geeft / home / sae / STUDY / SHELL en if-1 12 13 geeft if-1: Hallo!

Telefoniste ("case")

De selectieverklaring "case" heeft de structuur:

Case string in

patroon) lijst met opdrachten ;; patroon) lijst met opdrachten ;; ... patroon) lijst met opdrachten ;;

Hier zijn "case", "in" en "esac" functiewoorden. "String" (het kan een enkel teken zijn) wordt vergeleken met "patroon". Vervolgens wordt de "commandolijst" van de geselecteerde regel uitgevoerd. Ze zien er ongewoon uit aan het einde van selectieregels ";;", maar schrijf hier ";" zou een vergissing zijn. Voor elk alternatief kunnen meerdere commando's worden uitgevoerd. Als deze commando's op één regel staan, dan is de ";" wordt gebruikt als opdrachtscheidingsteken. Gebruikelijk laatste lijn keuze heeft het patroon "*", wat in de "case"-structuur "elke waarde" betekent. Deze tekenreeks wordt geselecteerd als de waarde van de variabele (hier $ z) niet overeenkomt met een van de eerder geschreven patronen, begrensd door de haakjes ")". De waarden worden opgezocht in de volgorde waarin ze zijn geschreven.

Opsomde lus-operator ("voor")

De "for"-lusoperator heeft de structuur:

voor naam

do lijst met done-commando's waarbij "for" een functiewoord is dat het type van de lus definieert, "do" en "done" zijn functiewoorden die de hoofdtekst van de lus markeren. Laat het commando "lsort" worden weergegeven door een batchbestand

Voor i in file_1 file_2 file_3 doe proc_sort $ i done

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

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

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

Loop-operator met echte voorwaarde ("terwijl")

De "terwijl"-structuur, die ook voor berekeningen zorgt, heeft de voorkeur wanneer de exacte lijst met parameterwaarden niet vooraf bekend is of deze lijst moet worden verkregen als resultaat van berekeningen in een lus. De lusoperator "terwijl" heeft de structuur:

Terwijl voorwaarde

do lijst met uitgevoerde opdrachten waarbij "while" een functiewoord is dat het type lus met een true-voorwaarde definieert. De lijst met opdrachten in de hoofdtekst van de lus (tussen "do" en "done") wordt herhaald totdat de voorwaarde waar blijft (dat wil zeggen, de voltooiingscode van de laatste opdracht in de hoofdtekst van de lus is "0") of de lus wordt niet van binnenuit onderbroken speciale teams("pauze", "doorgaan" of "afsluiten"). Bij het betreden van de lus voor de eerste keer moet aan de voorwaarde worden voldaan. Met de opdracht "break [n]" kunt u uit de lus breken. Als "n" ontbreekt, is dit gelijk aan "break 1". "n" geeft het aantal geneste lussen aan waaruit u wilt afsluiten, bijvoorbeeld "break 3" - verlaat drie geneste lussen. In tegenstelling tot het "break"-commando, beëindigt het "continue [n]"-commando alleen de uitvoering van de huidige cyclus en keert terug naar het BEGIN van de cyclus. Het kan ook met een parameter. "Doorgaan 2" betekent bijvoorbeeld naar het begin van de tweede (indien vanaf de diepte geteld) geneste lus gaan. Met de opdracht "exit [n]" kunt u de procedure helemaal verlaten met de retourcode "0" of "n" (als de parameter "n" is opgegeven). Deze opdracht kan niet alleen in lussen worden gebruikt. Zelfs in een lineaire opeenvolging van opdrachten kan het bij het debuggen nuttig zijn om de uitvoering van de (huidige) berekening op een bepaald punt te stoppen.

Lusoperator met valse voorwaarde ("tot")

De "tot" lus-operator heeft de structuur:

Tot voorwaarde

do lijst met uitgevoerde opdrachten waarbij "tot" een functiewoord is dat het type lus definieert met een false voorwaarde. 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" ). Wanneer u voor het eerst de lus betreedt, mag niet aan de voorwaarde worden voldaan. Het verschil met de "while"-operator is dat de lusvoorwaarde wordt gecontroleerd op onwaarheid (voor een niet-nul-beëindigingscode van het laatste commando van de lus-body) wordt gecontroleerd NA elke (inclusief de eerste!) uitvoering van de lus-body-commando's. Voorbeeld.

Tot valse do

lees x als [$ x = 5] echo dan genoeg; pauze anders echo wat meer fi

Hier wacht een programma met een oneindige lus op het invoeren van woorden (het herhalen van de zin "wat meer" op het scherm) totdat "5" wordt ingevoerd. Daarna wordt "enough" gegeven en het "break"-commando beëindigt de uitvoering van de lus.

Lege operator

Een lege instructie heeft de indeling

:

Niks doen. Retourneert de waarde "0". ".

Shell-functies

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

Naam () (opdrachtlijst)

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 bijbehorende proces. De argumenten van een functie worden de positionele parameters ervan; de naam van de functie is de nulparameter. De uitvoering van de functie kan worden onderbroken met de "return [n]"-operator, waarbij (optioneel) "n" de retourcode is.

Afhandeling onderbreken ("trap")

Soms is het nodig om de uitvoering van een programma tegen onderbreking te beschermen. Meestal krijgt u te maken met de volgende onderbrekingen, die overeenkomen met signalen: 0 de tolk verlaten, 1 ophangen (de externe abonnee loskoppelen), 2 onderbreking van , 9 vernietiging (niet onderschept), 15 einde executie. Om te beschermen tegen interrupts, is er een "trap"-opdracht in het formaat:

Trap "commandolijst" signalen

Als het systeem interrupts tegenkomt waarvan de signalen worden weergegeven via een spatie in "seinen", dan wordt de "commandolijst" uitgevoerd, waarna (als het "exit"-commando niet is uitgevoerd in de commandolijst) de besturing terugkeert naar de breakpoint en ga verder met de uitvoering van het opdrachtbestand. Als u bijvoorbeeld bestanden in "/tmp" moet verwijderen voordat u de uitvoering van een batchbestand onderbreekt, kunt u dit doen met het "trap"-commando:

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

die voorafgaat aan de andere opdrachten in het bestand. Hier wordt, na het verwijderen van de bestanden, "afsluiten" van het batchbestand uitgevoerd.