Urklipp vs pasteboard: så fungerar begreppen i macOS
På en Mac betyder “urklipp” (clipboard) och “pasteboard” samma sak, fast på olika nivåer. “Urklipp” är det vardagliga ordet för platsen dit kopierad data hamnar. “Pasteboard” är det namn som Apples ramverk, API:er och Terminal-verktyg använder för den underliggande systemtjänsten (NSPasteboard, pbcopy, pbpaste). När du trycker ⌘C fyller du den allmänna pasteboarden (general pasteboard).
Snabbsvar
- Clipboard (urklipp) är det användarvända, plattformsoberoende ordet för “dit det kopierade tar vägen”.
- Pasteboard är Apples utvecklarterm. Det är en systemtjänst som håller data i flera format samtidigt och kan ha flera namngivna instanser.
- The general pasteboard är den som ⌘C, ⌘X och ⌘V använder. Det är den de flesta menar när de säger “urklippet”.
- Pasteboard ≠ urklippshistorik. macOS sparar bara det aktuella innehållet, så historik kräver en clipboard manager (som Maccy) eller, i nyare macOS-versioner, Spotlights urklippshistorik.
Varför har macOS två ord för samma sak?
Uppdelningen är historisk och mest en slump. “Clipboard” kommer från den tidiga grafiska skrivbordstraditionen. Det är metaforen som Apples egna Lisa och Macintosh använde för tillfällig lagring av klippta och kopierade objekt, och Windows, Linux-skrivbord och de flesta andra system tog över den.
“Pasteboard” kom in i macOS via NeXTSTEP, operativsystemet som Apple köpte i slutet av 1990-talet och byggde Mac OS X på. NeXTs ramverk använde klistra-metaforen, och när de ramverken blev Cocoa levde namnet kvar. Det är också därför klassen heter NSPasteboard: prefixet NS är en rest från NeXTSTEP.
Ingen döpte om begreppet för användarna, så Apples gränssnitt och dokumentation använder båda orden beroende på vilket lager du tittar på.
Var dyker respektive term upp?
| Lager | Term du ser | Exempel |
|---|---|---|
| Vardagsbruk, guider, tredjepartsappar | Clipboard | “Copy to clipboard”, “clipboard manager” |
| AppKit (macOS) API | Pasteboard | NSPasteboard.general |
| UIKit (iOS/iPadOS) API | Pasteboard | UIPasteboard.general |
| Terminal-kommandon | Pasteboard | pbcopy, pbpaste (“pb” = pasteboard) |
| AppleScript | Clipboard | the clipboard, clipboard info |
| Appen Genvägar (Shortcuts) | Clipboard | Åtgärden “Get Clipboard” |
| Apples programmeringsguider | Pasteboard | “Pasteboard Programming Guide” |
Läser du kod eller man-sidor kan du räkna med “pasteboard”. Läser du en guide för vanliga användare kan du räkna med “clipboard”. Båda beskriver samma mekanism.
Vad är en pasteboard egentligen?
Pasteboarden är ett systemövergripande, delat datalager som appar använder för att utbyta data. Appar pratar inte direkt med varandra när du kopierar och klistrar in. Källappen lägger data på pasteboarden, och målappen läser den när du klistrar in.
Den rymmer mer än text
En enda kopiering kan lägga flera representationer av samma objekt på pasteboarden. Kopiera ett formaterat stycke från en webbsida och pasteboarden kan innehålla vanlig text, RTF och HTML samtidigt. Appen du klistrar in i väljer det rikaste format den förstår. Därför får du ren text när du klistrar in i ett textfält utan formatering, medan en rik textredigerare behåller formateringen.
Typerna identifieras med uniform type identifiers, som public.utf8-plain-text, public.html och public.png. I Swift dyker de upp som konstanter som .string, .html och .png.
Det finns fler än en pasteboard
Den allmänna pasteboarden är bara en av flera namngivna pasteboards. Det här är den största praktiska skillnaden mellan orden: “clipboard” antyder en enda plats, medan “pasteboard” är en hel familj.
| Pasteboard | Vad den används till |
|---|---|
| General | ⌘C / ⌘X / ⌘V. Det här är “urklippet” för nästan alla. |
| Find | Delar den aktuella söksträngen mellan appar (⌘E, “Använd markering för sökning”). |
| Drag | Bär data under dra-och-släpp. |
| Font | Typsnittsattribut, används av Kopiera stil och liknande kommandon. |
| Ruler | Formateringsattribut för stycken och linjal. |
Appar kan dessutom skapa egna privata namngivna pasteboards. De påverkar aldrig det du ser som “urklippet”.
Ändringsräknaren
Varje pasteboard har ett heltal, changeCount, som räknas upp varje gång innehållet ersätts. macOS skickar ingen avisering när det händer. Appar som vill veta om nya kopieringar, clipboard managers inräknade, måste kontrollera räknaren med jämna mellanrum och läsa innehållet när den ändrats. Har du undrat hur en clipboard manager “märker” att du kopierat något är det här mekanismen.
Se det själv i Terminal
Det snabbaste sättet att känna skillnaden är att använda kommandoradsverktygen, som exponerar pasteboarden direkt.
# Lägg text på den allmänna pasteboarden echo "hej från pasteboarden" | pbcopy # Läs tillbaka den pbpaste # Räkna orden i det du senast kopierade pbpaste | wc -w # Kopiera en fils innehåll utan att öppna den pbcopy < notes.txt Prova nu de namngivna pasteboards. Markera ett ord i valfri app, tryck ⌘E och kör sedan:
pbpaste -pboard find Du får tillbaka det markerade ordet, medan det du kopierade med ⌘C är orört. Det är en andra pasteboard som arbetar oberoende av den allmänna. Flaggan -pboard accepterar general, find, font och ruler; se man pbpaste för detaljer.
För att se vilka format som just nu ligger på den allmänna pasteboarden använder AppleScript ordet “clipboard”:
osascript -e 'clipboard info' Utdata listar typkoder med storlek i byte, och när du kopierar formaterad text från en webbläsare ser du vanligtvis flera rader. Exakta koder varierar beroende på källapp och macOS-version.
Är pasteboarden samma sak som urklippshistorik?
Nej. Pasteboarden håller bara det som ligger på den just nu. Kopierar du något nytt ersätts det tidigare innehållet. Systemtjänsten har inget minne av tidigare objekt.
Nyare macOS-versioner har börjat sudda ut gränsen. Spotlight i macOS Tahoe fick en urklippshistorik som sparar senaste objekten under begränsad tid . En dedikerad clipboard manager går ändå längre: den sparar historik så länge du vill, har sökning, fastnålning och undantag per app, och är inte knuten till Spotlight.
Maccy har det dedikerade tillvägagångssättet: appen bevakar den allmänna pasteboarden, sparar varje nytt objekt lokalt på din Mac och låter dig öppna listan med en kortkommando (⇧⌘C som standard ) och söka i den. Den är öppen källkod och håller datan lokal. Den läser inte från appars privata pasteboards, bara den allmänna.
Hur är det med Universal Clipboard?
Universal Clipboard är en Continuity-funktion som låter dig kopiera på en Apple-enhet och klistra in på en annan i närheten. Den kräver samma Apple-konto, med Wi-Fi, Bluetooth och Handoff aktiverade på båda enheterna. Tekniskt ersätter den inte pasteboarden. Den lokala allmänna pasteboarden tar emot objektet från den andra enheten, och därefter beter det sig som vilken annan kopiering som helst.
Därför spelar skillnaden roll för integriteten
Eftersom den allmänna pasteboarden är delad kan varje app som får läsa den se vad du kopierat, inklusive ett lösenord du nyss kopierade från en lösenordshanterare. Två saker har vuxit fram kring detta.
- Markörtyper. Lösenordshanterare och vissa andra appar märker sina kopior med särskilda typer som
org.nspasteboard.ConcealedTypeochorg.nspasteboard.TransientType, en konvention från communityn som dokumenteras på nspasteboard.org. Väluppfostrade clipboard managers hoppar över objekt med de markörerna. Maccy gör det som standard , och du kan lägga till egna ignorerade typer eller appar under Ignore-inställningarna . - Åtkomstkontroller på systemnivå. Apple har rört sig mot att meddela eller fråga användaren när appar läser pasteboarden programmatiskt, med start i en förhandsversion för utvecklare i macOS 15.4 . Om en clipboard manager ber om tillstånd eller du ser en fråga om pasteboard-åtkomst är det därför.
Ingen av mekanismerna gör pasteboarden privat i grunden. Det är konventioner och behörigheter som lagts ovanpå ett delat lager.
Vanliga missförstånd, utredda
- “Är pasteboarden ett dolt andra urklipp?”
- Nej. Den allmänna pasteboarden är urklippet. De andra namngivna pasteboards (find, drag, font, ruler) är separata kanaler för särskilda ändamål.
- “Kopierar ⌘C till en fil någonstans som jag kan öppna?”
- Inte som en fil du kan se. Innehållet ligger i minnet, hanterat av pasteboard-tjänsten. Stora eller filbaserade objekt skickas ofta som referenser, till exempel fil-URL:er, i stället för fullständiga kopior.
- “Varför blir formateringen ibland olika när jag klistrar in i olika appar?”
- På grund av de flera representationerna. Målappen väljer vilken den läser. Använd ⌥⇧⌘V (Klistra in och matcha stil) i appar som stöder det för att tvinga fram enkel formatering.
- “Är
pbcopyför clipboard eller pasteboard?” - “pb” står för pasteboard, men kommandot skriver till den allmänna pasteboarden som standard, så i praktiken är det urklippet.
Vilket ord ska du använda?
Använd “urklipp” eller “clipboard” när du skriver för användare och “pasteboard” när du skriver eller läser kod, man-sidor eller Apples utvecklardokumentation. Att blanda ihop dem är ofarligt. Det är när man tror att de är olika saker, eller att macOS sparar historik på egen hand, som förvirringen börjar.
Vill du se det i praktiken kan du installera en clipboard manager och titta på vad den fångar upp när du kopierar från olika appar. Det gör beteendet med flera format och ändringsräknare väldigt konkret. Maccy app är gratis och har öppen källkod om du vill testa en. Vilket Terminal-trick vill du ha förklarat härnäst: skriptning med pbcopy, eller att undersöka vad en viss app lägger på pasteboarden?
Om du vill prova själv är maccy.at en gratis urklippshanterare för macOS med öppen källkod.