mv(1p)

Från Wiki.linux.se -Linux wikipedia på Svenska.
Version från den 13 maj 2026 kl. 08.33 av Admin (diskussion | bidrag) (→‎HTML-rendering)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

PROLOG

Denna manualsida är en del av POSIX Programmer's Manual. Linux-implementationen av detta gränssnitt kan skilja sig åt. Se motsvarande Linux-manualsida för detaljer om Linux-beteende, eller så kanske gränssnittet inte är implementerat på Linux.

NAMN

mv — flytta filer

SYNOPSIS

mv [-if] källfil målfil

mv [-if] källfil... målkatalog

BESKRIVNING

I den första synopsisformen ska verktyget mv flytta filen som anges av operanden källfil till destinationen som anges av målfil. Denna första form antas när den sista operanden inte anger en befintlig katalog och inte är en symbolisk länk som hänvisar till en befintlig katalog.

I detta fall, om källfil anger en fil som inte är en katalog och målfil slutar med ett avslutande snedstreck, ska mv behandla detta som ett fel och inga källfil-operander ska behandlas.

I den andra synopsisformen ska mv flytta varje fil som anges av en källfil-operand till en destinationsfil i den befintliga katalog som anges av operanden målkatalog, eller till katalogen som refereras om målkatalog är en symbolisk länk som hänvisar till en befintlig katalog.

Destinationssökvägen för varje källfil ska vara en sammansättning av målkatalogen, ett enda snedstreck om målet inte redan slutade med ett snedstreck, och den sista sökvägskomponenten i källfil.

Denna andra form antas när den sista operanden anger en befintlig katalog.

Om någon operand anger en befintlig fil av en typ som inte specificeras av System Interfaces-volymen av POSIX.1-2017, är beteendet implementeringsdefinierat.

För varje källfil ska följande steg utföras:

  1. Om destinationssökvägen finns, flaggan -f inte har angivits, och något av följande villkor är sant:
    • Behörigheterna för destinationssökvägen tillåter inte skrivning och standardindata är en terminal.
    • Flaggan -i har angivits.
    ska verktyget mv skriva en prompt till standardfel och läsa en rad från standardindata. Om svaret inte är jakande ska mv inte göra något mer med aktuell källfil och gå vidare till eventuella återstående källfil-operander.
  1. Om operanden källfil och destinationssökvägen löses upp till antingen samma befintliga katalogpost eller olika katalogposter för samma befintliga fil, ska destinationssökvägen inte tas bort, och ett av följande ska ske:
    • Ingen ändring görs av källfil, inget fel uppstår och inget diagnostiskt meddelande skrivs.
    • Ingen ändring görs av källfil, ett diagnostiskt meddelande skrivs till standardfel som identifierar de två namnen, och exitstatusen påverkas.
    • Om operanden källfil och destinationssökvägen anger skilda katalogposter tas operanden källfil bort, inget fel uppstår och inget diagnostiskt meddelande skrivs.
    Verktyget mv ska inte göra något mer med aktuell källfil och ska gå vidare till eventuella återstående källfil-operander.
  1. Verktyget mv ska utföra åtgärder som motsvarar funktionen rename() definierad i System Interfaces-volymen av POSIX.1-2017, anropad med följande argument:
    • Operanden källfil används som argumentet old.
    • Destinationssökvägen används som argumentet new.
    Om detta lyckas ska mv inte göra något mer med aktuell källfil och gå vidare till eventuella återstående källfil-operander. Om detta misslyckas av någon annan anledning än de som beskrivs för errno [EXDEV] i System Interfaces-volymen av POSIX.1-2017, ska mv skriva ett diagnostiskt meddelande till standardfel, inte göra något mer med aktuell källfil, och gå vidare till eventuella återstående källfil-operander.
  1. Om destinationssökvägen finns och den är en fil av typen katalog medan källfil inte är en fil av typen katalog, eller om destinationssökvägen inte är av typen katalog medan källfil är en fil av typen katalog, ska mv skriva ett diagnostiskt meddelande till standardfel, inte göra något mer med aktuell källfil, och gå vidare till eventuella återstående källfil-operander. Om destinationssökvägen finns och skapades av ett tidigare steg är det ospecificerat om detta ska behandlas som ett fel eller om destinationssökvägen ska skrivas över.
  1. Om destinationssökvägen finns ska mv försöka ta bort den. Om detta misslyckas av någon anledning ska mv skriva ett diagnostiskt meddelande till standardfel, inte göra något mer med aktuell källfil, och gå vidare till eventuella återstående källfil-operander.
  1. Filhierarkin med rot i källfil ska dupliceras som en filhierarki med rot i destinationssökvägen. Om källfil eller någon av filerna under den i hierarkin är symboliska länkar, ska länkarna själva dupliceras, inklusive deras innehåll, i stället för de filer som de hänvisar till. Följande egenskaper hos varje fil i filhierarkin ska dupliceras:
    • Tidpunkt för senaste datamodifiering och tidpunkt för senaste åtkomst.
    • Användar-ID och grupp-ID.
    • Filläge.
    Om användar-ID, grupp-ID eller filläge för en vanlig fil inte kan dupliceras, ska fillägesbitarna S_ISUID och S_ISGID inte dupliceras.
    När filer dupliceras till ett annat filsystem får implementationen kräva att processen som anropar mv har läsåtkomst till varje fil som dupliceras.
    Om filer som dupliceras till ett annat filsystem har hårda länkar till andra filer, är det ospecificerat om filerna som kopieras till det nya filsystemet behåller de hårda länkarna eller om separata kopior skapas för de länkade filerna.
    Om dupliceringen av filhierarkin misslyckas av någon anledning, ska mv skriva ett diagnostiskt meddelande till standardfel, inte göra något mer med aktuell källfil, och gå vidare till eventuella återstående källfil-operander.
    Om dupliceringen av filegenskaperna misslyckas av någon anledning, ska mv skriva ett diagnostiskt meddelande till standardfel, men detta fel ska inte orsaka att mv ändrar sin exitstatus.
  1. Filhierarkin med rot i källfil ska tas bort. Om detta misslyckas av någon anledning ska mv skriva ett diagnostiskt meddelande till standardfel, inte göra något mer med aktuell källfil, och gå vidare till eventuella återstående källfil-operander.

FLAGGOR

Verktyget mv ska följa Base Definitions-volymen av POSIX.1-2017, avsnitt 12.2, Utility Syntax Guidelines.

Följande flaggor ska stödjas:

-f

Fråga inte efter bekräftelse om destinationssökvägen finns. Varje tidigare förekomst av flaggan -i ignoreras.

-i

Fråga efter bekräftelse om destinationssökvägen finns. Varje tidigare förekomst av flaggan -f ignoreras.

Att ange mer än en av flaggorna -f eller -i ska inte betraktas som ett fel. Den sist angivna flaggan ska avgöra beteendet hos mv.

OPERANDER

Följande operander ska stödjas:

källfil

En sökväg till en fil eller katalog som ska flyttas.

målfil

En ny sökväg för filen eller katalogen som flyttas.

målkatalog

En sökväg till en befintlig katalog dit indatafilerna ska flyttas.

STDIN

Standardindata ska användas för att läsa en indatarad som svar på varje prompt som anges i avsnittet **STDERR**. I övrigt ska standardindata inte användas.

INDATAFILER

Indatafilerna som anges av varje källfil-operand kan vara av vilken filtyp som helst.

MILJÖVARIABLER

Följande miljövariabler ska påverka körningen av mv:

LANG

Tillhandahåller ett standardvärde för internationaliseringsvariabler som är osatta eller null. Se Base Definitions-volymen av POSIX.1-2017, avsnitt 8.2, Internationalization Variables, för prioritetsordningen mellan internationaliseringsvariabler som används för att bestämma värden för lokal-kategorier.

LC_ALL

Om satt till ett icke-tomt strängvärde ska den åsidosätta värdena för alla andra internationaliseringsvariabler.

LC_COLLATE

Bestämmer lokal för beteendet hos intervall, ekvivalensklasser och fler-teckens sorteringselement som används i det utökade reguljära uttryck som definieras för lokalnyckelordet yesexpr i kategorin LC_MESSAGES.

LC_CTYPE

Bestämmer lokal för tolkningen av byte-sekvenser med textdata som tecken, till exempel enkelbyte- kontra flerbytetecken i argument och indatafiler, samt beteendet hos teckenklasser som används i det utökade reguljära uttryck som definieras för lokalnyckelordet yesexpr i kategorin LC_MESSAGES.

LC_MESSAGES

Bestämmer lokalen som används för att behandla jakande svar, och lokalen som används för att påverka format och innehåll i diagnostiska meddelanden och prompter som skrivs till standardfel.

NLSPATH

Bestämmer platsen för meddelandekataloger vid behandling av LC_MESSAGES.

ASYNKRONA HÄNDELSER

Standard.

STDOUT

Används inte.

STDERR

Prompter ska skrivas till standardfel under de villkor som anges i avsnittet **BESKRIVNING**. Prompterna ska innehålla destinationssökvägen, men deras format är i övrigt ospecificerat.

I övrigt ska standardfel endast användas för diagnostiska meddelanden.

UTDATAFILER

Utdatafilerna kan vara av vilken filtyp som helst.

UTÖKAD BESKRIVNING

Ingen.

EXITSTATUS

Följande exitvärden ska returneras:

0    Alla indatafiler flyttades utan fel.

>0   Ett fel inträffade.

KONSEKVENSER AV FEL

Om kopieringen eller borttagningen av källfil avbryts i förtid av en signal eller ett fel, får mv lämna en partiell kopia av källfil vid källan eller destinationen.

Verktyget mv ska inte modifiera både källfil och destinationssökvägen samtidigt. Avslutning vid vilken punkt som helst ska lämna antingen källfil eller destinationssökvägen komplett.

Följande avsnitt är informativa.

ANVÄNDNING I PROGRAM

Vissa implementationer markerar tidpunkten för senaste filstatusändring för omdöpta filer som uppdaterad, medan andra inte gör det. Program som använder tidpunkten för senaste filstatusändring kan bete sig olika för omdöpta filer om de inte är utformade för att tillåta båda beteendena.

Specifikationen säkerställer att:

mv a a

inte ändrar innehållet i filen a, och tillåter implementationen att skriva ett fel om att en fil inte kan flyttas till sig själv.

På samma sätt, när a och b är hårda länkar till samma fil, ska:

mv a b

inte ändra b. Men om inget diagnostiskt meddelande skrivs, är det ospecificerat om a lämnas orörd, som den skulle göra av funktionen rename(), eller om den avlänkas, vilket minskar länkräknaren för b.

EXEMPEL

Om den aktuella katalogen endast innehåller filerna a, av valfri typ definierad av System Interfaces-volymen av POSIX.1-2017, b, också av valfri typ, och en katalog c:

mv a b c
mv c d

blir resultatet att de ursprungliga filerna a och b finns i katalogen d i den aktuella katalogen.

BAKGRUND OCH MOTIVERING

Tidiga förslag avvek från historisk praxis i SVID och BSD genom att de krävde att mv skulle misslyckas när destinationssökvägen finns, flaggan -f inte har angivits och indata inte är en terminal. Detta gjordes för kompatibilitet med cp. Den aktuella texten återgår till historisk praxis.

Det bör noteras att detta är förenligt med funktionen rename() definierad i System Interfaces-volymen av POSIX.1-2017, vilken inte kräver skrivbehörighet på målet.

För absolut tydlighet ska stycke 1, som beskriver beteendet hos mv när bekräftelse efterfrågas, tolkas på följande sätt:

if (exists AND (NOT f_option) AND
    ((not_writable AND input_is_terminal) OR i_option))

Flaggan -i finns på BSD-system och ger program och användare ett sätt att undvika att oavsiktligt avlänka filer när andra flyttas.

När standardindata inte är en terminal tar 4.3 BSD-versionen av mv bort alla befintliga destinationssökvägar utan att fråga, även när -i anges. Detta är inkonsekvent med beteendet hos 4.3 BSD-versionen av cp, som alltid genererar ett fel när filen inte är skrivbar och standardindata inte är en terminal.

Standardutvecklarna beslutade att användning av -i är en begäran om interaktion. Därför, när destinationssökvägen finns, tar verktyget instruktioner från det som svarar på standardindata.

Funktionen rename() kan flytta kataloger inom samma filsystem. Vissa historiska versioner av mv har kunnat flytta kataloger, men inte till ett annat filsystem. Standardutvecklarna ansåg att detta var en störande inkonsekvens, så denna volym av POSIX.1-2017 kräver att kataloger ska kunna flyttas även över filsystem.

Det finns ingen -R-flagga för att bekräfta att flytt av en katalog verkligen är avsedd, eftersom en sådan flagga inte krävdes för att flytta kataloger enligt historisk praxis. Att kräva att program ibland skulle ange den, beroende på destinationen, framstod som lika inkonsekvent.

Semantiken hos funktionen rename() bevarades så långt som möjligt. Till exempel tillåts inte mv att ”byta namn” på filer till eller från kataloger, även om de skulle vara tomma och borttagbara.

Historiska implementationer av mv avslutade inte med en icke-noll exitstatus om de inte kunde duplicera någon filegenskap när en fil flyttades över filsystem, och de skrev inte heller ett diagnostiskt meddelande till användaren. Det förstnämnda beteendet har bevarats för att undvika att skript går sönder. Ett diagnostiskt meddelande krävs dock nu, så att användare uppmärksammas på att filegenskaperna har ändrats.

Det exakta formatet för interaktiva prompter är ospecificerat. Endast den allmänna typen av innehåll i prompter specificeras, eftersom implementationer kan vilja använda mer beskrivande prompter än de som användes i historiska implementationer.

Därför förlitar sig ett program som inte använder flaggan -f, eller som använder flaggan -i, på att systemet tillhandahåller den lämpligaste dialogen direkt med användaren, baserat på det specificerade beteendet.

När mv hanterar ett enda filsystem och källfil är en symbolisk länk, flyttas själva länken som en följd av beroendet av funktionen rename(), enligt **BESKRIVNING**. Över filsystem måste detta göras uttryckligt.

FRAMTIDA RIKTNING

Ingen.

SE ÄVEN

cp(1p), ln(1p)

The Base Definitions volume of POSIX.1-2017, Chapter 8, Environment Variables, Section 12.2, Utility Syntax Guidelines

The System Interfaces volume of POSIX.1-2017, rename(3p)

UPPHOVSRÄTT

Delar av denna text är återtryckta och återgivna i elektronisk form från IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 av Institute of Electrical and Electronics Engineers, Inc. och The Open Group.

Vid eventuell avvikelse mellan denna version och den ursprungliga standarden från IEEE och The Open Group är den ursprungliga standarden från IEEE och The Open Group det avgörande dokumentet.

Den ursprungliga standarden kan erhållas online på:

http://www.opengroup.org/unix/online.html

Eventuella typografiska eller formateringsfel som förekommer på denna sida har sannolikt införts under konverteringen av källfilerna till manualsidesformat.

För att rapportera sådana fel, se:

https://www.kernel.org/doc/man-pages/reporting_bugs.html

Manualsidans sidfot:

IEEE/The Open Group                2017                            MV(1P)

Sidor som hänvisar till denna sida

HTML-rendering

HTML-renderingen skapades 2026-01-16 av Michael Kerrisk, författare till The Linux Programming Interface.

För information om fördjupade utbildningar i Linux/UNIX-systemprogrammering, se:

https://man7.org/training/

Sidslut

Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/mv.1p.html Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorservice som har sponsrat Linux.se med webbhotell.