ex(1p): Skillnad mellan sidversioner
Admin (diskussion | bidrag) (Skapade sidan med 'Jag behöver dela upp den här manualsidan, eftersom `ex(1p)` är mycket längre än de tidigare sidorna. Här är **del 1**, i svensk MediaWiki-form, från början till och med inledningen av **Utökad beskrivning**. == ex(1p) == '''ex(1p)''' — POSIX Programmer's Manual == PROLOG == Denna manualsida är en del av ''POSIX Programmer's Manual''. Linux-implementeringen av detta gränssnitt kan skilja sig åt; se motsvarande Linux-manualsida för detaljer om Linux-bet...') |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
| Rad 1: | Rad 1: | ||
== ex(1p) == | == ex(1p) == | ||
Versionen från 13 maj 2026 kl. 05.39
ex(1p)
ex(1p) — POSIX Programmer's Manual
PROLOG
Denna manualsida är en del av POSIX Programmer's Manual. Linux-implementeringen av detta gränssnitt kan skilja sig åt; se motsvarande Linux-manualsida för detaljer om Linux-beteende. Gränssnittet kanske inte heller är implementerat på Linux.
NAMN
ex – textredigerare
SYNOPSIS
ex [-rR] [-s|-v] [-c kommando] [-t taggsträng] [-w storlek] [fil...]
BESKRIVNING
Verktyget ex är en radorienterad textredigerare. Det finns två andra lägen i redigeraren — open och visual — där skärmorienterad redigering är tillgänglig. Detta beskrivs mer utförligt av kommandona open och visual i ex, samt i vi(1p).
Om en operand är - är resultatet ospecificerat.
I detta avsnitt används termen redigeringsbuffert för att beskriva den aktuella arbetstexten. Termen innebär inte någon särskild implementation. Alla redigeringsändringar utförs i redigeringsbufferten, och inga ändringar i den påverkar någon fil förrän ett redigeringskommando skriver filen.
Vissa terminaler har inte alla funktioner som krävs för att stödja hela definitionen av ex, till exempel fullskärmsredigeringskommandon, det vill säga visual mode eller open mode. När dessa kommandon inte kan stödjas på sådana terminaler ska detta inte ge ett felmeddelande som ”not an editor command” eller rapportera ett syntaxfel. Implementeringen får antingen acceptera kommandona och producera skärmresultat som är resultatet av ett misslyckat försök att uppfylla kraven i denna del av POSIX.1-2017, eller rapportera ett fel som beskriver den terminalrelaterade bristen.
FLAGGOR
Verktyget ex ska följa Base Definitions-volymen av POSIX.1-2017, avsnitt 12.2, Utility Syntax Guidelines, med undantag för den ospecificerade användningen av -, samt att + får kännas igen som en flaggavgränsare på samma sätt som -.
Följande flaggor ska stödjas:
-c kommando
Ange ett inledande kommando som ska köras i den första redigeringsbuffert som läses in från en befintlig fil. Se avsnittet **UTÖKAD BESKRIVNING**. Implementeringar får stödja mer än en enda -c-flagga. I sådana implementeringar ska de angivna kommandona köras i den ordning de anges på kommandoraden.
-r
Återställ de namngivna filerna. Se avsnittet **UTÖKAD BESKRIVNING**. Återställningsinformation för en fil ska sparas vid en redigerar- eller systemkrasch, till exempel när redigeraren avslutas av en signal som redigeraren kan fånga, eller efter användning av kommandot preserve i ex.
En krasch i detta sammanhang är ett oväntat fel i systemet eller verktyget som kräver att det felande systemet eller verktyget startas om. En systemkrasch innebär att alla verktyg som kördes vid tidpunkten också kraschar. Vid en redigerar- eller systemkrasch är antalet ändringar i redigeringsbufferten, sedan det senaste kommandot preserve, som kommer att kunna återställas ospecificerat.
Om inga fil-operander anges och flaggan -t inte anges, ska alla andra flaggor, variabeln EXINIT och eventuella .exrc-filer ignoreras. En lista över alla återställningsbara filer som är tillgängliga för den anropande användaren ska skrivas ut, och redigeraren ska avslutas normalt utan vidare åtgärd.
-R
Sätt redigeringsflaggan readonly.
-s
Förbered ex för satsvis användning genom att utföra följande åtgärder:
- Undertryck utskrift av prompter och informationsmeddelanden, men inte diagnostiska meddelanden.
- Ignorera värdet av TERM och eventuell implementeringsstandard för terminaltyp, och anta att terminalen är av en typ som inte kan stödja open- eller visual-läge. Se kommandot visual och beskrivningen av vi(1p).
- Undertryck användningen av miljövariabeln EXINIT och läsning av eventuell .exrc-fil. Se avsnittet **UTÖKAD BESKRIVNING**.
- Undertryck automatisk indragning, och ignorera värdet av redigeringsflaggan autoindent.
-t taggsträng
Redigera filen som innehåller den angivna taggsträngen. Se ctags(1p). Taggfunktionen som representeras av -t taggsträng och kommandot tag är valfri. Den ska tillhandahållas på varje system som också tillhandahåller en överensstämmande implementation av ctags. Annars ger användning av -t odefinierade resultat. På alla system ska det vara ett fel att ange mer än en enda -t-flagga.
-v
Börja i visuellt läge. Se vi(1p).
-w storlek
Sätt värdet för redigeringsflaggan window till storlek.
OPERANDER
Följande operand ska stödjas:
fil
En sökväg till en fil som ska redigeras.
STANDARD IN
Standard in består av en serie kommandon och inmatningstext, enligt beskrivningen i avsnittet **UTÖKAD BESKRIVNING**. Implementeringen får begränsa varje rad från standard in till en längd av {LINE_MAX}.
Om standard in inte är en terminalenhet ska det vara som om flaggan -s hade angetts.
Om en läsning från standard in returnerar ett fel, eller om redigeraren upptäcker ett filslut från standard in, ska det motsvara en asynkron SIGHUP-händelse.
INDATAFILER
Indatafiler ska vara textfiler, eller filer som skulle vara textfiler förutom att den sista raden är ofullständig, inte längre än {LINE_MAX}-1 byte och inte innehåller några NUL-tecken. Som standard ska varje ofullständig sista rad behandlas som om den hade ett avslutande radslutstecken, newline. Redigering av andra filformer får valfritt tillåtas av ex-implementationer.
Filerna .exrc och källfiler ska vara textfiler bestående av ex-kommandon. Se avsnittet **UTÖKAD BESKRIVNING**.
Som standard ska redigeraren läsa rader från de filer som ska redigeras utan att tolka någon av dessa rader som någon form av redigeringskommando.
MILJÖVARIABLER
Följande miljövariabler ska påverka körningen av ex:
COLUMNS
Åsidosätter den horisontella skärmstorlek som systemet valt. Se Base Definitions-volymen av POSIX.1-2017, kapitel 8, Environment Variables, för giltiga värden och resultat när variabeln är osatt eller null.
EXINIT
Bestämmer en lista över ex-kommandon som körs vid redigerarens start. Se avsnittet **UTÖKAD BESKRIVNING** för mer information om initieringsfasen.
HOME
Bestämmer sökvägen till en katalog som ska genomsökas efter en startfil för redigeraren med namnet .exrc. Se avsnittet **UTÖKAD BESKRIVNING**.
LANG
Tillhandahåller ett standardvärde för de internationaliseringsvariabler som är osatta eller null. Se Base Definitions-volymen av POSIX.1-2017, avsnitt 8.2, Internationalization Variables, för företrädesordningen för internationaliseringsvariabler som används för att bestämma värdena för lokalkategorier.
LC_ALL
Om satt till en icke-tom sträng, åsidosätts värdena för alla andra internationaliseringsvariabler.
LC_COLLATE
Bestämmer lokalen för beteendet hos intervall, ekvivalensklasser och fler-teckens sorteringselement i reguljära uttryck.
LC_CTYPE
Bestämmer lokalen för tolkning av sekvenser av byte med textdata som tecken, till exempel enkelbyte- i motsats till flerbytetecken i argument och indatafiler; beteendet hos teckenklasser i reguljära uttryck; klassificeringen av tecken som stora eller små bokstäver; skiftlägeskonvertering av bokstäver; samt detektering av ordgränser.
LC_MESSAGES
Bestämmer den lokal som ska användas för att påverka format och innehåll i diagnostiska meddelanden som skrivs till standard error.
LINES
Åsidosätter den vertikala skärmstorlek som systemet valt. Den används som antal rader i en skärmsida och som vertikal skärmstorlek i visuellt läge. Se Base Definitions-volymen av POSIX.1-2017, kapitel 8, Environment Variables, för giltiga värden och resultat när variabeln är osatt eller null.
NLSPATH
Bestämmer platsen för meddelandekataloger vid bearbetning av LC_MESSAGES.
PATH
Bestämmer sökvägen för det skalkommando som anges i redigeringskommandona !, shell, read och write i ex, samt kommandot ! i open- och visual-läge. Se beskrivningen av kommandosökning och körning i avsnitt 2.9.1.1, Command Search and Execution.
SHELL
Bestämmer den föredragna kommandoradstolken som ska användas som standardvärde för redigeringsflaggan shell.
TERM
Bestämmer namnet på terminaltypen. Om denna variabel är osatt eller null ska en ospecificerad standardterminaltyp användas.
ASYNKRONA HÄNDELSER
Följande term används i detta och följande avsnitt för att ange åtgärder för kommandon och asynkrona händelser:
fullständig skrivning
En fullständig skrivning är en skrivning av hela innehållet i redigeringsbufferten till en fil av annan typ än en terminalenhet, eller sparandet av redigeringsbufferten orsakat av att användaren kör kommandot preserve i ex. Att skriva innehållet i redigeringsbufferten till en temporär fil som tas bort när redigeraren avslutas ska inte betraktas som en fullständig skrivning.
Följande åtgärder ska vidtas vid mottagning av signaler:
SIGINT
Om standard in inte är en terminalenhet ska ex inte skriva filen eller återgå till kommando- eller textinmatningsläge, utan ska avsluta med en exitstatus som inte är noll.
Annars, om ett kommando i textinmatningsläge för open eller visual körs, ska ex vid mottagning av SIGINT bete sig identiskt med om tecknet <ESC> mottogs.
I övriga fall:
- Om ett ex-kommando i textinmatningsläge körs ska alla inmatningsrader som har matats in fullständigt lösas in i redigeringsbufferten, och varje delvis inmatad rad ska kastas.
- Om ett kommando körs ska det avbrytas och ett meddelande visas. Om inget annat anges i beskrivningarna av ex- eller vi-kommandon är det ospecificerat om rader som ändrats av det körande kommandot visas som ändrade, eller som de var före kommandots ändring, i bufferten. Om det aktuella kommandot var ett rörelsekommando ska dess associerade kommando kastas.
- Om redigeraren är i open- eller visual-kommandoläge ska terminalen avge en varning.
- Redigeraren ska därefter återgå till kommandoläge.
SIGCONT
Skärmen ska uppdateras om redigeraren är i open- eller visual-läge.
SIGHUP
Om redigeringsbufferten har ändrats sedan den senaste fullständiga skrivningen ska ex försöka spara redigeringsbufferten så att den senare kan återställas med flaggan -r eller med kommandot recover i ex. Redigeraren ska inte skriva filen eller återgå till kommando- eller textinmatningsläge, utan ska avsluta med en exitstatus som inte är noll.
SIGTERM
Se SIGHUP.
Åtgärden för alla andra signaler är ospecificerad.
STANDARD UT
Standard output ska endast användas för att skriva prompter till användaren, informationsmeddelanden och rader från filen.
STANDARD ERROR
Standard error ska endast användas för diagnostiska meddelanden.
UTFILER
Utdata från ex ska vara textfiler.
UTÖKAD BESKRIVNING
Endast ex-läget i redigeraren beskrivs i detta avsnitt. Se vi(1p) för ytterligare redigeringsfunktioner som är tillgängliga i ex.
När ett fel inträffar ska ex skriva ett meddelande. Om terminalen stöder ett framhävningsläge, till exempel inverterad video, ska meddelandet skrivas i detta läge. Om terminalen inte stöder ett framhävningsläge och redigeringsflaggan errorbells är satt, ska en varningsåtgärd föregå felmeddelandet.
Som standard ska ex starta i kommandoläge, vilket anges med en : -prompt. Se kommandot prompt. Textinmatningsläge kan aktiveras med kommandona append, insert eller change. Det kan lämnas, och kommandoläge återaktiveras, genom att skriva en punkt, ., ensam i början av en rad.
Initiering i ex och vi
Följande symboler används i detta och följande avsnitt för att ange platser i redigeringsbufferten:
alternativa och aktuella sökvägar
Två sökvägar, kallade aktuell och alternativ, upprätthålls av redigeraren. Alla ex-kommandon som tar filnamn som argument ska sätta dem enligt följande:
- Om ett fil-argument anges till kommandona edit, ex eller recover i ex, eller om ett tag-kommando i ex ersätter innehållet i redigeringsbufferten:
- Om kommandot ersätter innehållet i redigeringsbufferten ska den aktuella sökvägen sättas till fil-argumentet eller till filen som anges av taggen, och den alternativa sökvägen ska sättas till det tidigare värdet av den aktuella sökvägen.
- Annars ska den alternativa sökvägen sättas till fil-argumentet.
- Om ett fil-argument anges till kommandot next i ex:
- Om kommandot ersätter innehållet i redigeringsbufferten ska den aktuella sökvägen sättas till det första fil-argumentet, och den alternativa sökvägen ska sättas till det tidigare värdet av den aktuella sökvägen.
- Om ett fil-argument anges till kommandot file i ex ska den aktuella sökvägen sättas till fil-argumentet, och den alternativa sökvägen ska sättas till det tidigare värdet av den aktuella sökvägen.
- Om ett fil-argument anges till kommandona read och write i ex, det vill säga vid läsning eller skrivning av en fil och inte till programmet som anges av redigeringsflaggan shell, eller om ett fil-argument anges till kommandot xit i ex:
- Om den aktuella sökvägen saknar värde ska den aktuella sökvägen sättas till fil-argumentet.
- Annars ska den alternativa sökvägen sättas till fil-argumentet.
Om den alternativa sökvägen sätts till det tidigare värdet av den aktuella sökvägen när den aktuella sökvägen inte hade något tidigare värde, ska den alternativa sökvägen sakna värde som resultat.
aktuell rad
Den rad i redigeringsbufferten som markören refererar till. Varje kommandobeskrivning anger aktuell rad efter att kommandot har körts, som aktuellt radvärde. När redigeringsbufferten inte innehåller några rader ska aktuell rad vara noll. Se **Adressering i ex**.
aktuell kolumn
Den aktuella displayradskolumn som markören upptar. Kolumnerna ska numreras med början på 1. Varje kommandobeskrivning anger aktuell kolumn efter att kommandot har körts som värdet för aktuell kolumn. Denna kolumn är en ideal kolumn som koms ihåg under redigerarens livstid. Den faktiska displayradskolumn där markören befinner sig kan skilja sig från aktuell kolumn. Se diskussionen om markörpositionering i **Kommandobeskrivningar i vi**.
sätt till icke-blankt
En beskrivning av ett aktuellt kolumnvärde, vilket betyder att aktuell kolumn ska sättas till den sista displayradskolumn där någon del av det första icke-blanka tecknet på raden visas. Om raden inte har några icke-blanka, icke-radslutstecken ska aktuell kolumn sättas till den sista displayradskolumn där någon del av det sista icke-radslutstecknet i raden visas. Om raden är tom ska aktuell kolumn sättas till kolumnposition 1.
Längden på rader i redigeringsbufferten får begränsas till {LINE_MAX} byte. I open- och visual-läge får längden på rader i redigeringsbufferten begränsas till det antal tecken som får plats på displayen. Om någon av gränserna överskrids under redigering ska ett felmeddelande skrivas. Om någon av gränserna överskrids av en rad som läses in från en fil ska ett felmeddelande skrivas och redigeringssessionen får avslutas.
Om redigeraren slutar köra av någon annan anledning än ett användarkommando, och redigeringsbufferten har ändrats sedan den senaste fullständiga skrivningen, ska detta motsvara en asynkron SIGHUP-händelse. Om systemet kraschar ska det motsvara en asynkron SIGHUP-händelse.
Under initieringen, innan den första filen kopieras in i redigeringsbufferten eller några användarkommandon från terminalen bearbetas, ska följande ske:
- Om miljövariabeln EXINIT är satt ska redigeraren köra de ex-kommandon som finns i den variabeln.
- Om variabeln EXINIT inte är satt och samtliga följande villkor är sanna:
- Miljövariabeln HOME är inte null och inte tom.
- Filen .exrc i katalogen som anges av miljövariabeln HOME:
- finns,
- ägs av samma användar-ID som processens verkliga användar-ID, eller processen har lämpliga privilegier,
- inte är skrivbar av någon annan än ägaren,
- då ska redigeraren köra de ex-kommandon som finns i den filen.
- Om och endast om samtliga följande villkor är sanna:
- Den aktuella katalogen är inte den katalog som anges av miljövariabeln HOME.
- Ett kommando i miljövariabeln EXINIT eller i filen .exrc i katalogen som anges av HOME sätter redigeringsflaggan exrc.
- Filen .exrc i den aktuella katalogen:
- finns,
- ägs av samma användar-ID som processens verkliga användar-ID, eller av ett av en implementeringsdefinierad uppsättning användar-ID:n,
- inte är skrivbar av någon annan än ägaren,
- då ska redigeraren försöka köra de ex-kommandon som finns i den filen.
Tomma rader i en .exrc-fil ska ignoreras. Om en .exrc-fil finns men inte läses på grund av ägar- eller behörighetsskäl ska det vara ett fel.
Efter att variabeln EXINIT och eventuella .exrc-filer har bearbetats, ska den första fil som anges av användaren redigeras enligt följande:
- Om användaren angav flaggan -t ska effekten vara som om kommandot tag i ex matades in med det angivna argumentet, med undantag för att om taggbearbetning inte resulterar i en fil att redigera ska effekten vara enligt steg 3 nedan.
- Annars, om användaren angav något fil-argument på kommandoraden, ska effekten vara som om kommandot edit i ex matades in med det första av dessa argument som sitt fil-argument.
- Annars ska effekten vara som om kommandot edit i ex matades in med ett obefintligt filnamn som sitt fil-argument. Det är ospecificerat om denna åtgärd ska sätta den aktuella sökvägen. I en implementation där denna åtgärd inte sätter den aktuella sökvägen ska alla redigeringskommandon som använder aktuell sökväg misslyckas tills ett redigeringskommando sätter den aktuella sökvägen.
Om flaggan -r angavs ska första gången en fil i den ursprungliga argumentlistan, eller en fil angiven med flaggan -t, redigeras, och återställningsinformation tidigare har sparats om den, denna information återställas. Redigeraren ska då bete sig som om innehållet i redigeringsbufferten redan har ändrats. Om det finns flera instanser av filen att återställa ska den senast sparade återställas, och ett informationsmeddelande ska skrivas om att det finns tidigare versioner av filen som kan återställas. Om ingen återställningsinformation om en fil finns ska ett informationsmeddelande om detta skrivas, och redigeringen ska fortsätta som vanligt.
Om flaggan -c angavs ska första gången en fil som redan finns ersätter eller initierar innehållet i redigeringsbufferten, inklusive en fil som kanske inte finns men för vilken återställningsinformation finns när -r anges, aktuell rad sättas till den sista raden i redigeringsbufferten, aktuell kolumn sättas till icke-blankt, och de ex-kommandon som angivits med -c ska köras. I detta fall ska aktuell rad och aktuell kolumn inte sättas enligt beskrivningen för kommandot som ersätter eller initierar redigeringsbuffertens innehåll. Om flaggan -t eller ett tag-kommando är associerat med åtgärden ska dock -c-kommandona köras och därefter ska rörelsen till taggen utföras.
Den aktuella argumentlistan ska initialt sättas till de filnamn som användaren angav på kommandoraden. Om inga filnamn anges av användaren ska den aktuella argumentlistan vara tom. Om flaggan -t angavs är det ospecificerat om något filnamn som uppstår från taggbearbetning ska läggas till först i den aktuella argumentlistan. Om filnamnet läggs till först i den aktuella argumentlistan ska referensen till den aktuella argumentlistan sättas till detta filnamn. Om filnamnet inte läggs till först i den aktuella argumentlistan ska referensen till den aktuella argumentlistan logiskt vara placerad före det första av de filnamn som angavs på kommandoraden. Om flaggan -t inte angavs ska referensen till den aktuella argumentlistan vara det första av filnamnen på kommandoraden.
Adressering i ex
Adressering i ex avser aktuell rad och aktuell kolumn. Adressen till en rad är dess radnummer räknat från 1; adressen till en kolumn är dess antal från början av raden, också räknat från 1. I allmänhet är aktuell rad den sista rad som påverkades av ett kommando. Det aktuella radnumret är adressen till den aktuella raden. I varje kommandobeskrivning anges kommandots effekt på aktuellt radnummer och aktuell kolumn.
Adresser konstrueras enligt följande:
- Tecknet ., punkt, adresserar aktuell rad.
- Tecknet $ adresserar sista raden i redigeringsbufferten.
- Det positiva decimaltalet n adresserar den n:te raden i redigeringsbufferten.
- Adressen 'x refererar till raden som markerats med markörnamnstecknet x, vilket ska vara en liten bokstav från den portabla teckenuppsättningen, backquote-tecknet eller apostroftecknet. Det ska vara ett fel om raden som markerades inte längre finns i redigeringsbufferten eller om markeringen inte har satts. Rader kan markeras med kommandona mark eller k i ex, eller kommandot m i vi.
- Ett reguljärt uttryck omgivet av snedstreck, /, adresserar den första raden som hittas genom sökning framåt från raden efter aktuell rad mot slutet av redigeringsbufferten, och som matchar uttrycket.
- Ett reguljärt uttryck omgivet av frågetecken, ?, adresserar den första raden som hittas genom sökning bakåt från raden före aktuell rad mot början av redigeringsbufferten.
- Ett plustecken, +, eller ett bindestreck/minustecken, -, följt av ett decimaltal adresserar aktuell rad plus eller minus det talet. Ett + eller - som inte följs av ett decimaltal adresserar aktuell rad plus eller minus 1.
Adresser kan följas av noll eller flera adressförskjutningar, eventuellt separerade med blanka tecken. Adressförskjutningar konstrueras enligt följande:
- Ett + eller - omedelbart följt av ett decimaltal ska lägga till eller dra ifrån det angivna antalet rader från adressen. Ett + eller - som inte följs av ett decimaltal ska lägga till eller dra ifrån 1.
- Ett decimaltal ska lägga till det angivna antalet rader till adressen.
Det ska inte vara ett fel om ett mellanliggande adressvärde är mindre än noll eller större än den sista raden i redigeringsbufferten. Det ska vara ett fel om det slutliga adressvärdet är mindre än noll eller större än den sista raden i redigeringsbufferten.
Kommandon tar noll, en eller två adresser. Se beskrivningarna av 1addr och 2addr i **Kommandobeskrivningar i ex**. Om fler än det krävda antalet adresser ges till ett kommando som kräver noll adresser ska det vara ett fel. Annars, om fler än det krävda antalet adresser ges till ett kommando, ska de först angivna adresserna utvärderas och sedan kastas tills det största antalet giltiga adresser återstår.
Adresser ska separeras från varandra med komma, ,, eller semikolon, ;. Om ingen adress anges före eller efter ett komma eller semikolon ska det vara som om adressen till aktuell rad hade angetts före eller efter separatorn. Vid semikolonseparator ska aktuell rad, ., sättas till den första adressen, och först därefter ska nästa adress beräknas. Detta kan användas för att bestämma startrad för framåt- och bakåtsökningar.
Ett procenttecken, %, ska motsvara att ange de två adresserna:
1,$
Alla avgränsande blanka tecken mellan adresser, adressseparatorer eller adressförskjutningar ska kastas.
Kommandoradstolkning i ex
Följande symbol används i detta och följande avsnitt för att beskriva tolkningsbeteende:
escape
Om ett tecken sägs vara backslash-escapat eller control-V-escapat betyder det att tecknet fick eller förlorade en särskild betydelse genom att föregås av ett backslash- respektive control-V-tecken. Om inget annat anges ska escape-tecknet kastas vid den tidpunkten och därefter inte längre beaktas för något syfte.
Kommandoradstolkning ska ske i följande steg. För varje steg ska redan utvärderade tecken ignoreras; uttrycket ”inledande tecken” avser alltså nästa tecken som ännu inte har utvärderats.
- Inledande kolon, :, ska hoppas över.
- Inledande blanka tecken ska hoppas över.
- Om det inledande tecknet är ett dubbelt citationstecken ska tecknen fram till och med nästa icke-backslash-escapade radslut kastas, och eventuella efterföljande tecken ska tolkas som ett separat kommando.
- Inledande tecken som kan tolkas som adresser ska utvärderas. Se **Adressering i ex**.
- Inledande blanka tecken ska hoppas över.
- Om nästa tecken är ett vertikalstreck eller radslut:
- Om nästa tecken är radslut och ex är i open- eller visual-läge ska aktuell rad sättas till den sista angivna adressen, om någon.
- Annars ska det implicita kommandot vara print.
- Radsluts- eller vertikalstreckstecknet ska kastas och eventuella efterföljande tecken ska tolkas som ett separat kommando.
- Kommandonamnet ska bestå av nästa tecken om tecknet inte är alfabetiskt, eller nästa tecken och eventuella efterföljande alfabetiska tecken om tecknet är alfabetiskt, med vissa undantag för bland annat delete, k och s.
- Kommandonamnet ska matchas mot möjliga kommandonamn, och ett kommandonamn som innehåller ett prefix som matchar användarens tecken ska vara det kommando som körs.
Vid tvetydiga kommandoprefix ska följande historiska tolkningar användas:
a append n next t t c change p print u undo ch change pr print un undo e edit r read v v m move re read w write ma mark s s
Implementationstillägg vars namn orsakar liknande tvetydigheter ska inte kontrolleras för matchning förrän alla möjliga matchningar för kommandon specificerade av POSIX.1-2008 har kontrollerats.
Om ett fel inträffar under tolkningen eller körningen av ett ex-kommando ska ett informationsmeddelande skrivas, körningen av kommandot stoppas och markören, det vill säga aktuell rad och kolumn, inte ändras ytterligare.
Inmatningsredigering i ex
Följande symbol används i detta och följande avsnitt för att ange kommandoåtgärder:
ord
I POSIX-lokalen består ett ord av en maximal sekvens av bokstäver, siffror och understreck, avgränsad i båda ändar av andra tecken än bokstäver, siffror eller understreck, eller av början eller slutet på en rad eller redigeringsbufferten.
När inmatningstecken tas emot från användaren, antingen i ex-kommandoläge eller i ex-textinmatningsläge, ska ex aktivera kanonisk inmatningsbehandling enligt definitionen i System Interfaces-volymen av POSIX.1-2017.
Om redigeraren är i ex-textinmatningsläge:
- Om redigeringsflaggan number är satt ska ex visa en prompt med det radnummer som raden skulle få om den matas in, i det format som anges för kommandot number i ex.
- Om redigeringsflaggan autoindent är satt ska ex visa en prompt med autoindent-tecken, enligt beskrivningen av redigeringsflaggan autoindent. autoindent-tecken ska följa radnumret, om något finns.
Om redigeraren är i ex-kommandoläge:
- Om redigeringsflaggan prompt är satt ska inmatning efterfrågas med ett enda kolon, :; annars ska ingen prompt visas.
KOMMANDOBESKRIVNINGAR I EX
Följande symboler används i detta avsnitt för att representera kommandomodifierare. Vissa av dessa modifierare kan utelämnas, och då ska angivna standardvärden användas.
1addr
En enda radadress i någon av formerna som beskrivs i **Adressering i ex**. Standardvärdet ska vara aktuell rad, ., om inget annat anges.
2addr
Två adresser som anger ett inkluderande intervall av rader. Om inga adresser anges ska standardvärdet för 2addr vara endast aktuell rad, .,., om inget annat anges.
count
Ett positivt decimaltal. Om count anges ska det motsvara att en ytterligare adress anges till kommandot, om inget annat anges i kommandobeskrivningarna.
flags
Ett eller flera av tecknen +, -, #, p eller l. Flaggtecknen kan separeras med blanka tecken och anges i valfri ordning och kombination.
buffer
Ett av flera namngivna områden för att hålla text. De namngivna buffertarna anges med alfanumeriska tecken i POSIX-lokalen. Det ska också finnas en icke-namngiven buffert. När ingen buffert anges för redigeringskommandon som använder en buffert ska den icke-namngivna bufferten användas.
file
Kommandotext som används för att härleda en sökväg. Standardvärdet ska vara aktuell sökväg, enligt tidigare definition. Om ingen aktuell sökväg ännu har etablerats ska det vara ett fel, utom där annat särskilt anges i de enskilda kommandobeskrivningarna.
!
Ett tecken som kan läggas till kommandonamnet för att modifiera dess funktion, enligt detaljerna i de enskilda kommandobeskrivningarna.
Abbreviate
ab[breviate][lhs rhs]
Om lhs och rhs inte anges, skriv den aktuella listan över förkortningar och gör inget mer.
Implementationer får begränsa teckenuppsättningen som accepteras i lhs eller rhs, förutom att utskrivbara tecken och blanka tecken inte ska begränsas. Ytterligare begränsningar ska vara implementeringsdefinierade.
I både lhs och rhs kan varje tecken escapes med control-V. Då ska tecknet inte användas för att avgränsa lhs från rhs, och det escapande control-V ska kastas.
I open- och visual-textinmatningsläge, om ett icke-ordtecken eller <ESC> som inte är escapade med control-V matas in efter ett ordtecken, ska en kontroll göras efter en teckensekvens som matchar lhs i textinmatningen under detta kommando. Om den hittas ska effekten vara som om rhs matades in i stället för lhs.
Aktuell rad: oförändrad.
Aktuell kolumn: oförändrad.
Append
[1addr] a[ppend][!]
Gå in i ex-textinmatningsläge. Den inmatade texten ska placeras efter den angivna raden. Om rad noll anges ska texten placeras i början av redigeringsbufferten.
Detta kommando påverkas av redigeringsflaggorna number och autoindent. Om kommandonamnet följs av ! ska inställningen för autoindent växlas endast under detta kommando.
Aktuell rad: sätts till den sista inmatade raden. Om inga rader matades in sätts den till den angivna raden, eller till första raden i redigeringsbufferten om rad noll angavs, eller noll om redigeringsbufferten är tom.
Aktuell kolumn: sätts till icke-blankt.
Arguments
ar[gs]
Skriv den aktuella argumentlistan, med aktuell argumentlistepost, om någon finns, mellan tecknen [ och ].
Aktuell rad: oförändrad.
Aktuell kolumn: oförändrad.
Change
[2addr] c[hange][!][count]
Gå in i ex-textinmatningsläge. Den inmatade texten ska ersätta de angivna raderna. De angivna raderna ska kopieras till den icke-namngivna bufferten, som ska bli en radlägesbuffert.
Detta kommando påverkas av redigeringsflaggorna number och autoindent. Om kommandonamnet följs av ! ska inställningen för autoindent växlas endast under detta kommando.
Aktuell rad: sätts till den sista inmatade raden. Om inga rader matades in sätts den till raden före den första adressen, eller till första raden i redigeringsbufferten om det inte finns några rader före den första adressen, eller noll om redigeringsbufferten är tom.
Aktuell kolumn: sätts till icke-blankt.
Change Directory
chd[ir][!][katalog] cd[!][katalog]
Ändra aktuell arbetskatalog till katalog.
Om inget katalog-argument anges och miljövariabeln HOME är satt till ett icke-null och icke-tomt värde, ska katalog som standard få värdet i miljövariabeln HOME. Om HOME är tom eller odefinierad är standardvärdet för katalog implementeringsdefinierat.
Om inget ! läggs till kommandonamnet, och redigeringsbufferten har ändrats sedan den senaste fullständiga skrivningen, och den aktuella sökvägen inte börjar med /, ska det vara ett fel.
Aktuell rad: oförändrad.
Aktuell kolumn: oförändrad.
Copy
[2addr] co[py] 1addr [flags] [2addr] t 1addr [flags]
Kopiera de angivna raderna efter den angivna destinationsraden. Rad noll anger att raderna ska placeras i början av redigeringsbufferten.
Aktuell rad: sätts till den sista kopierade raden.
Aktuell kolumn: sätts till icke-blankt.
Delete
[2addr] d[elete][buffer][count][flags]
Ta bort de angivna raderna till en buffert, som standard den icke-namngivna bufferten, som ska bli en radlägesbuffert.
Flaggor kan följa direkt efter kommandonamnet. Se **Kommandoradstolkning i ex**.
Aktuell rad: sätts till raden efter de borttagna raderna, eller till den sista raden i redigeringsbufferten om den raden ligger efter slutet av bufferten, eller till noll om redigeringsbufferten är tom.
Aktuell kolumn: sätts till icke-blankt.
Edit
e[dit][!][+kommando][fil] ex[!][+kommando][fil]
Om inget ! läggs till kommandonamnet och redigeringsbufferten har ändrats sedan den senaste fullständiga skrivningen, ska det vara ett fel.
Om fil anges, ersätt det aktuella innehållet i redigeringsbufferten med det aktuella innehållet i fil, och sätt aktuell sökväg till fil. Om fil inte anges, ersätt innehållet i redigeringsbufferten med innehållet i filen som namnges av aktuell sökväg. Om filens innehåll av någon anledning inte kan nås ska redigeringsbufferten vara tom.
Flaggan +kommando ska avgränsas med blanka tecken. Blanka tecken i +kommando kan escapes genom att föregås av backslash. +kommando ska tolkas som ett ex-kommando omedelbart efter att redigeringsbuffertens innehåll har ersatts och aktuell rad och kolumn har satts.
Om redigeringsbufferten är tom:
Aktuell rad: sätts till 0.
Aktuell kolumn: sätts till 1.
Annars, om kommandot körs i ex-kommandoläge eller om argumentet +kommando anges:
Aktuell rad: sätts till sista raden i redigeringsbufferten.
Aktuell kolumn: sätts till icke-blankt.
Annars, om fil utelämnas eller resulterar i aktuell sökväg:
Aktuell rad: sätts till första raden i redigeringsbufferten.
Aktuell kolumn: sätts till icke-blankt.
File
f[ile][fil]
Om ett fil-argument anges ska den alternativa sökvägen sättas till aktuell sökväg, och den aktuella sökvägen sättas till fil.
Skriv ett informationsmeddelande. Om filen har en aktuell sökväg ska den inkluderas i meddelandet. Annars ska meddelandet ange att det inte finns någon aktuell sökväg. Om redigeringsbufferten innehåller rader ska aktuellt radnummer och antalet rader i redigeringsbufferten inkluderas i meddelandet. Annars ska meddelandet ange att redigeringsbufferten är tom. Om redigeringsbufferten har ändrats sedan den senaste fullständiga skrivningen ska detta inkluderas i meddelandet. Om redigeringsflaggan readonly är satt ska detta inkluderas i meddelandet. Meddelandet får innehålla annan ospecificerad information.
Aktuell rad: oförändrad.
Aktuell kolumn: oförändrad.
Global
[2addr] g[lobal] /pattern/ [commands] [2addr] v /pattern/ [commands]
Det valfria tecknet ! efter kommandot global ska motsvara att köra kommandot v.
Om pattern är tomt, till exempel //, eller inte anges, ska det senaste reguljära uttrycket som användes i redigeringskommandot användas som pattern. Mönstret kan avgränsas med snedstreck, som visas i synopsis, eller med vilket icke-alfanumeriskt och icke-blankt tecken som helst utom backslash, vertikalstreck, radslut eller dubbelt citationstecken.
Om inga rader anges ska raderna som standard vara hela filen.
Kommandona global och v är logiskt tvåstegsoperationer. Först markeras raderna inom de angivna raderna där raden, exklusive avslutande radslut, matchar global eller inte matchar v eller global! det angivna mönstret. Därefter körs de ex-kommandon som ges av commands, med aktuell rad, ., satt till varje markerad rad.
Om inga kommandon anges:
- Om redigeraren är i ex-kommandoläge ska det vara som om kommandot print angavs.
- Annars ska inget kommando köras.
Kommandona global, v och undo får inte användas i commands.
Aktuell rad: om inga kommandon körs, sätts den till den sista markerade raden. Annars enligt de körda ex-kommandona.
Aktuell kolumn: om inga kommandon körs, sätts den till icke-blankt. Annars enligt de enskilda ex-kommandona.
Insert
[1addr] i[nsert][!]
Gå in i ex-textinmatningsläge. Den inmatade texten ska placeras före den angivna raden. Om raden är noll eller 1 ska texten placeras i början av redigeringsbufferten.
Detta kommando påverkas av redigeringsflaggorna number och autoindent. Om kommandonamnet följs av ! ska inställningen för autoindent växlas endast under detta kommando.
Aktuell rad: sätts till den sista inmatade raden. Om inga rader matades in sätts den till raden före den angivna raden, eller till första raden i redigeringsbufferten om det inte finns några rader före den angivna raden, eller noll om redigeringsbufferten är tom.
Aktuell kolumn: sätts till icke-blankt.
Join
[2addr] j[oin][!][count][flags]
Sammanfoga texten från de angivna raderna till en enda rad, som ska ersätta de angivna raderna.
Om ett ! läggs till kommandonamnet ska sammanfogningen ske utan modifiering av någon rad, oberoende av aktuell lokal.
Annars, i POSIX-lokalen, sätts aktuell rad till den första av de angivna raderna, och varje efterföljande rad behandlas enligt reglerna för borttagning av inledande blanktecken och insättning av mellanrum.
Aktuell rad: sätts till den första angivna raden.
Aktuell kolumn: sätts till icke-blankt.
List
[2addr] l[ist][count][flags]
Detta kommando ska motsvara kommandot:
[2addr] p[rint][count] l[flags]
Se **Print**.
Map
map[!][lhs rhs]
Om lhs och rhs inte anges:
- Om ! anges, skriv den aktuella listan över mappningar för textinmatningsläge.
- Annars, skriv den aktuella listan över mappningar för kommandoläge.
- Gör inget mer.
Implementationer får begränsa uppsättningen tecken som accepteras i lhs eller rhs, förutom att utskrivbara tecken och blanka tecken inte ska begränsas. Ytterligare begränsningar ska vara implementeringsdefinierade.
Om tecknet ! läggs till kommandonamnet map ska mappningen gälla under textinmatningsläge i open eller visual, i stället för under kommandoläge i open eller visual.
Aktuell rad: oförändrad.
Aktuell kolumn: oförändrad.
Mark
[1addr] ma[rk] tecken [1addr] k tecken
Implementationer ska stödja tecken-värden som består av en enda liten bokstav i POSIX-lokalen samt backquote- och apostroftecknen. Stöd för andra tecken är implementeringsdefinierat.
Sätt den angivna markeringen till den angivna raden och lämplig kolumnposition. Markeringen ska förbli kopplad till raden tills markeringen återställs eller raden tas bort.
Aktuell rad: oförändrad.
Aktuell kolumn: oförändrad.
Move
[2addr] m[ove] 1addr [flags]
Flytta de angivna raderna efter den angivna destinationsraden. Destinationen rad noll anger att raderna ska placeras i början av redigeringsbufferten. Det ska vara ett fel om destinationsraden ligger inom intervallet av rader som ska flyttas.
Aktuell rad: sätts till den sista av de flyttade raderna.
Aktuell kolumn: sätts till icke-blankt.
Next
n[ext][!][+kommando][fil ...]
Om inget ! läggs till kommandonamnet och redigeringsbufferten har ändrats sedan den senaste fullständiga skrivningen, ska det vara ett fel, om inte filen skrivs framgångsrikt enligt redigeringsflaggan autowrite.
Om en eller flera filer anges:
- Sätt argumentlistan till de angivna filnamnen.
- Sätt referensen till aktuell argumentlista till den första posten i argumentlistan.
- Sätt aktuell sökväg till det första angivna filnamnet.
Annars:
- Det ska vara ett fel om det inte finns fler filnamn i argumentlistan efter det filnamn som för närvarande refereras.
- Sätt aktuell sökväg och aktuell argumentlistereferens till filnamnet efter det filnamn som för närvarande refereras i argumentlistan.
Ersätt innehållet i redigeringsbufferten med innehållet i filen som namnges av aktuell sökväg. Om filens innehåll av någon anledning inte kan nås ska redigeringsbufferten vara tom.
Detta kommando påverkas av redigeringsflaggorna autowrite och writeany.
Aktuell rad: sätts enligt beskrivningen för kommandot edit.
Aktuell kolumn: sätts enligt beskrivningen för kommandot edit.
Number
[2addr] nu[mber][count][flags] [2addr] #[count][flags]
Dessa kommandon ska motsvara kommandot:
[2addr] p[rint][count] #[flags]
Se **Print**.
Open
[1addr] o[pen] /pattern/ [flags]
Detta kommando behöver inte stödjas på blocklägesterminaler eller terminaler med otillräckliga funktioner. Om standard in, standard out eller standard error inte är terminalenheter är resultatet ospecificerat.
Gå in i open-läge.
Den avslutande avgränsaren får utelämnas från pattern vid slutet av kommandoraden. Om pattern är tomt, till exempel //, eller inte anges, ska det senaste reguljära uttrycket som användes i redigeraren användas som mönster.
Aktuell rad: sätts till den angivna raden.
Aktuell kolumn: sätts till icke-blankt.
Preserve
pre[serve]
Spara redigeringsbufferten i en form som senare kan återställas med flaggan -r eller med kommandot recover i ex. Efter att filen har bevarats ska ett e-postmeddelande skickas till användaren. Meddelandet ska kunna läsas genom att anropa verktyget mailx. Meddelandet ska innehålla filens namn, tidpunkten för bevarandet och ett ex-kommando som kan användas för att återställa filen. Ytterligare information får inkluderas i e-postmeddelandet.
Aktuell rad: oförändrad.
Aktuell kolumn: oförändrad.
[2addr] p[rint][count][flags]
Skriv de adresserade raderna. Beteendet är ospecificerat om antalet kolumner på displayen är mindre än antalet kolumner som krävs för att skriva ett enda tecken i de rader som skrivs.
Icke-utskrivbara tecken, förutom tabb, ska skrivas som implementeringsdefinierade flerteckensekvenser.
Om flaggan # anges eller redigeringsflaggan number är satt, ska varje rad föregås av sitt radnummer i följande format:
"%6d ", <radnummer>
Om flaggan l anges eller redigeringsflaggan list är satt, ska särskilda escape-sekvenser användas och radslutet markeras med $.
Långa rader ska radbrytas. Längden där radbrytning sker är ospecificerad, men bör vara lämplig för utterminalen.
Aktuell rad: sätts till den sista skrivna raden.
Aktuell kolumn: oförändrad om aktuell rad är oförändrad; annars sätts den till icke-blankt.
Put
[1addr] pu[t][buffer]
Lägg till text från den angivna bufferten, som standard den icke-namngivna bufferten, efter den angivna raden. Rad noll anger att texten ska placeras i början av redigeringsbufferten. Varje del av en rad i bufferten ska bli en ny rad i redigeringsbufferten, oberoende av buffertens läge.
Aktuell rad: sätts till den sista raden som fördes in i redigeringsbufferten.
Aktuell kolumn: sätts till icke-blankt.
Quit
q[uit][!]
Om inget ! läggs till kommandonamnet:
- Om redigeringsbufferten har ändrats sedan den senaste fullständiga skrivningen ska det vara ett fel.
- Om det finns filnamn i argumentlistan efter det filnamn som för närvarande refereras, och det senaste kommandot inte var quit, wq, xit eller ZZ, ska det vara ett fel.
Annars avslutas redigeringssessionen.
Read
[1addr] r[ead][!][fil]
Om ! inte är det första icke-blanka tecknet efter kommandonamnet, ska en kopia av den angivna filen läggas till i redigeringsbufferten efter den angivna raden. Rad noll anger att kopian ska placeras i början av redigeringsbufferten. Antalet rader och byte som lästs ska skrivas.
Om ingen fil anges ska aktuell sökväg vara standard. Om det inte finns någon aktuell sökväg ska fil bli den aktuella sökvägen. Om det varken finns aktuell sökväg eller fil-operand ska det vara ett fel.
Annars, om fil föregås av !, ska resten av raden efter ! expandera tecknen %, # och ! enligt **Kommandoradstolkning i ex**. Därefter ska ex köra programmet som anges av redigeringsflaggan shell.
Aktuell rad: om inga rader läggs till i redigeringsbufferten, oförändrad. Annars, om i open- eller visual-läge, sätts den till första raden som fördes in i redigeringsbufferten. Annars sätts den till sista raden som fördes in.
Aktuell kolumn: sätts till icke-blankt.
Recover
rec[over][!] fil
Om inget ! läggs till kommandonamnet och redigeringsbufferten har ändrats sedan den senaste fullständiga skrivningen, ska det vara ett fel.
Om ingen fil-operand anges ska aktuell sökväg användas. Om det inte finns någon aktuell sökväg eller fil-operand ska det vara ett fel.
Om ingen återställningsinformation tidigare har sparats om fil, ska kommandot recover bete sig identiskt med kommandot edit, och ett informationsmeddelande om detta ska skrivas.
Annars ska aktuell sökväg sättas till fil, och det aktuella innehållet i redigeringsbufferten ersättas med det återställda innehållet i fil.
Aktuell rad: sätts enligt beskrivningen för kommandot edit.
Aktuell kolumn: sätts enligt beskrivningen för kommandot edit.
Rewind
rew[ind][!]
Om inget ! läggs till kommandonamnet och redigeringsbufferten har ändrats sedan den senaste fullständiga skrivningen, ska det vara ett fel, om inte filen skrivs framgångsrikt enligt redigeringsflaggan autowrite.
Om argumentlistan är tom ska det vara ett fel.
Referensen till aktuell argumentlista och aktuell sökväg ska sättas till det första filnamnet i argumentlistan.
Innehållet i redigeringsbufferten ska ersättas med innehållet i filen som namnges av aktuell sökväg.
Fortsättning
Den återstående delen av manualsidan omfattar bland annat:
- Set
- Shell
- Source
- Substitute
- Suspend
- Tag
- Undo
- Visual
- Write
- reguljära uttryck i ex
- ersättningssträngar
- alla redigeringsflaggor
- exitstatus
- felkonsekvenser
- användningsråd
- rationale
- framtida riktning
- se även
- copyright
- sidor som hänvisar till denna sida
- HTML-rendering
Detta är alltså **inte hela sidan ännu**; jag har stoppat vid en naturlig gräns innan resten av kommandobeskrivningarna.