Linux-komento



komento

Päällä Unix-tyyppinen käyttöjärjestelmät, ln -komento luo linkkejä tiedostojen välille, yhdistämällä tiedostojen nimet tiedostotietoihin.



Tämä sivu kattaa GNU / Linux version ln .

Kuvaus

ln luo linkki arkistoida KOHDE nimen kanssa LINKNAME . Jos LINKNAME on jätetty pois, linkki KOHDE on luotu nykyiseen hakemistoon , käyttämällä käyttäjän nimeä KOHDE kuten LINKNAME .



ln luo oletuksena kovia linkkejä tai symbolisia linkkejä jos -s ( --symbolinen ) -vaihtoehto on määritetty. Kun luot kovia linkkejä, kukin KOHDE täytyy olla olemassa.

Ennen kuin keskustelemme ln komento, keskustellaan ensin linkki komento, mikä linkki on ja miten se liittyy tiedostoihin sellaisina kuin ne tunnemme.



TO linkki on merkintä tiedostojärjestelmä joka yhdistää a Tiedoston nimi todelliseen tavua / tiedot on levy . Useampi kuin yksi tiedostonimi voi 'linkittää' samoihin tietoihin. Tässä on esimerkki. Luodaan tiedosto nimeltä file1.txt :

echo 'This is a file.' > file1.txt

Tämä komento heitti pois on merkkijono ' Tämä on tiedosto '. Normaalisti tämä toistaisi terminaaliamme, mutta > operaattori ohjaa merkkijonon tekstin tiedostoon, tässä tapauksessa file1.txt . Voimme tarkistaa, että se toimi kissa näyttääksesi tiedoston sisällön:

cat file1.txt
This is a file. 

Kun tämä tiedosto luotiin, käyttöjärjestelmä kirjoitti tavut levylle ja myös linkitetty nämä tiedot tiedostonimeksi, file1.txt jotta voimme viitata tiedostoon komennoissa ja argumenteissa. Jos nimeät tiedoston uudelleen, tiedoston sisältöä ei muuteta. vain tiedot, jotka pistettä siihen. Tiedoston nimi ja tiedoston tiedot ovat kaksi erillistä kokonaisuutta.

Tässä on kuvaus tiedostonimestä ja tiedoista, jotka auttavat sinua visualisoimaan sen:

file1.txt

Käytä linkkikomentoa

Mitä linkki komennon avulla voimme luoda manuaalisesti linkin jo olemassa oleviin tiedostotietoihin. Joten, käytetään linkki luoda oma linkki äskettäin luotuihin tiedostotietoihin. Pohjimmiltaan luomme toisen tiedostonimen jo olemassa oleville tiedoille.

Soitetaan uusi linkkimme file2.txt . Kuinka luomme sen?

Yleinen muoto linkki komento on: ' linkki Tiedoston nimi linkin nimi '. Ensimmäinen argumenttimme on tiedoston nimi, jonka tiedot linkitämme; toinen argumentti on luomamme uuden linkin nimi.

link file1.txt file2.txt

Nyt molemmat file1.txt ja file2.txt osoittamaan samoja tietoja levyllä:

cat file1.txt
This is a file.
cat file2.txt
This is a file.

Tärkeää on ymmärtää, että teimme älä tee kopiota näistä tiedoista. Molemmat tiedostojen nimet osoittavat samoja tavuja levyllä. Tässä on kuva, joka auttaa sinua visualisoimaan sen:

file1.txt ja file2.txt linkittivät molemmat samoihin tietoihin

Jos muutamme jommankumman näistä tiedostoista osoittamien tietojen sisältöä, myös toisen tiedoston sisältö muuttuu. Liitetään jompaankumpaan niistä rivi käyttämällä >> operaattori:

echo 'It points to data on the disk.' >> file1.txt

Katsotaan nyt sisältöä file1.txt :

cat file1.txt
This is a file. It points to data on the disk. 

... ja nyt katsotaan toinen tiedosto, jonka olemme luoneet linkki komento:

cat file2.txt
This is a file. It points to data on the disk. 

Molemmat tiedostot näyttävät muutoksen, koska niillä on samat tiedot levyllä. Kummankin näistä tiedostoista tehdyt muutokset muuttavat toisen sisältöä.

Mutta entä jos poistamme yhden tiedostoista? Poistetaanko molemmat tiedostot?

Ei. Jos poistamme yhden tiedostoista, poistamme yhden linkin tietoihin. Koska loimme toisen linkin manuaalisesti, meillä on edelleen näille tiedoille osoitin; meillä on edelleen tapa käyttäjätasolla päästä käsiksi sinne lisäämäämme tietoihin. Joten jos käytämme rm komento poistaa ensimmäinen tiedosto:

rm file1.txt

... sitä ei enää ole tiedostona tällä nimellä:

cat file1.txt
cat: file1.txt: No such file or directory

... mutta linkki manuaalisesti luomiin tietoihin on edelleen olemassa ja viittaa edelleen tietoihin:

cat file2.txt
This is a file. It points to data on the disk. 

Kuten näette, tiedot pysyvät levyllä, vaikka tiedosto (joka on itse asiassa linkki tietoihin) poistetaan. Voimme silti käyttää kyseisiä tietoja, kunhan niihin on linkki. Tämä on tärkeää tietää, kun poistat tiedostoja - tiedoston poistaminen tekee tiedoista käyttämättömän poista linkitys -Se. Tiedot ovat edelleen olemassa tallennusvälineissä, jonnekin, jonne järjestelmä ei pääse, ja kyseinen levytila ​​on merkitty käytettävissä olevaksi tulevaa käyttöä varten.

Tyyppistä linkkiä, jonka kanssa olemme työskennelleet täällä, kutsutaan joskus 'kovaksi' linkiksi. Kovan linkin ja sen linkittämän datan on aina oltava samassa tiedostojärjestelmässä; et voi esimerkiksi luoda kovaa linkkiä yhdelle osio tiedostojen tallentamiseksi toiseen osioon. Et voi myöskään luoda kovaa linkkiä hakemistoon. Vain symboliset linkit voivat linkittää hakemistoon; pääsemme siihen hetken kuluttua.

Ln: n ja linkin välinen ero

Joten entä ln ? Siksi olemme täällä, eikö?

ln , luo oletuksena kovan linkin, kuten linkki tekee. Siis tämä ln komento:

ln file1.txt file2.txt

... on sama kuin seuraava linkki komento:

link file1.txt file2.txt

... koska molemmat komennot luovat kovan linkin nimeltä file2.txt joka linkittää file1.txt .

Voimme kuitenkin käyttää myös ln luoda symbolisia linkkejä kanssa -s vaihtoehto. Joten komento:

ln -s file1.txt file2.txt

Luo symbolinen linkki file1.txt nimetty file2.txt . Toisin kuin kovan linkin esimerkissämme, tässä on kuva, joka auttaa sinua visualisoimaan symbolisen linkkimme:

tiedosto2.txt on linkitetty tiedostoon1.txt

Mitä ovat symboliset linkit?

Symboliset linkit, joita joskus kutsutaan pehmeiksi linkeiksi, ovat erilaisia ​​kuin kovat linkit. Sen sijaan, että linkitettäisiin tiedoston tietoihin, ne linkki toiseen linkkiin . Joten yllä olevassa esimerkissä file2.txt osoittaa linkkiä file1.txt , joka puolestaan ​​osoittaa tiedoston tietoja.

Tällä on useita mahdollisia etuja. Ensinnäkin, symboliset linkit (joita kutsutaan myös lyhytaikaisesti symlinkeiksi) voivat linkittää hakemistoihin. Myös symboliset linkit voivat ylittää tiedostojärjestelmän rajat, joten symbolinen linkki yhden aseman tai osion tietoihin voi olla olemassa toisessa asemassa tai osiossa.

Sinun tulisi myös olla tietoinen siitä, että toisin kuin kovat linkit, symlinkin osoittaman tiedoston (tai hakemiston) poistaminen rikkoo linkin. Joten jos luomme file1.txt :

echo 'This is a file.' > file1.txt

... ja luo siihen symbolinen linkki:

ln -s file1.txt file2.txt

...me voimme kissa jommallakummalla näistä nähdäksesi sisällön:

cat file1.txt
This is a file.
cat file2.txt
This is a file.

... mutta jos poistamme file1.txt :

rm file1.txt

... emme voi enää käyttää sen sisältämiä tietoja symlinkillä:

cat file2.txt
cat: file2.txt: No such file or directory

Tämä virheilmoitus saattaa olla aluksi hämmentävä, koska file2.txt on edelleen olemassa hakemistossasi. Se on kuitenkin rikki symlinkki - symbolinen linkki, joka osoittaa jotain, jota ei enää ole olemassa. Käyttöjärjestelmä yrittää seurata symlinkkiä tiedostoon, jonka oletetaan olevan siellä ( file1.txt ), mutta ei löydä mitään, joten se palauttaa virhesanoman.

Vaikka kovat linkit ovat olennainen osa käyttöjärjestelmän toimintaa, symboliset linkit ovat yleensä enemmän mukavuuksia. Voit käyttää niitä viittaamaan haluamallasi tavalla levyllä jo oleviin tietoihin muualle.

Luodaan symlinkkejä hakemistoihin

Jos haluat luoda symbolisen linkin hakemistoon, määritä kohteeksi hakemiston nimi. Oletetaan esimerkiksi, että meillä on hakemisto nimeltä asiakirjat , joka sisältää yhden tiedoston nimeltä file.txt .

Luodaan symbolinen linkki asiakirjat nimetty dox . Tämä komento tekee temppun:

ln -s documents/ dox

Meillä on nyt symlink dox johon voimme viitata ikään kuin se olisi hakemisto asiakirjat . Esimerkiksi, jos käytämme Ls luetteloiden hakemiston sisällön ja sitten linkitetyn hakemiston sisällön molemmissa näytetään sama tiedosto:

ls documents
file.txt
ls dox
file.txt

Kun työskentelemme hakemistossa dox nyt me todella työskentelemme asiakirjat , mutta näemme sanan dox sijasta asiakirjat kaikissa polkuissa.

Symboliset linkit ovat hyödyllinen tapa tehdä pikavalintoja pitkiin, monimutkaisiin polkuihin. Esimerkiksi tämä komento:

ln -s documents/work/budgets/Engineering/2014/April aprbudge

... säästää paljon kirjoittamista; nyt sen sijaan hakemiston vaihtaminen seuraavalla komennolla:

cd documents/work/budgets/Engineering/2014/April

... voimme tehdä sen sijaan:

cd aprbudge

Normaalisti poistat hakemistot (kun ne ovat tyhjiä) rmdir komento. Mutta symbolinen linkkimme ei ole oikeastaan ​​hakemisto: se on tiedosto, joka osoittaa hakemistoon. Joten poistamaan symlinkimme käytämme rm komento:

rm aprbudge

Tämä komento poistaa symlinkin, mutta alkuperäiseen hakemistoon ja kaikkiin sen tiedostoihin ei vaikuteta.

Syntaksi

ln [  OPTION  ]...  TARGET  [...] [  LINKNAME  [...]]

Vaihtoehdot

Tässä ovat vaihtoehdot, jotka voidaan siirtää ln komento.

--varmuuskopioida [ = OHJAUS ] Käytä tätä vaihtoehtoa luodaksesi varmuuskopion jokaisesta olemassa olevasta kohdetiedostosta. Varmuuskopiointityylin määrittelee valinnaisesti arvo OHJAUS . Katso varmuuskopiointivaihtoehdot alla lisätietoja.
-b Tämä toimii kuten --varmuuskopioida , mutta et voi määrittää OHJAUS ; oletustyyli ( yksinkertainen ) käytetään.
-d , -F , --hakemisto Tämä vaihtoehto sallii pääkäyttäjä yrittää linkittää hakemistoja (vaikka se todennäköisesti epäonnistuu järjestelmän rajoitusten vuoksi, jopa pääkäyttäjälle).
-f , --pakottaa Jos kohdetiedosto tai tiedostot ovat jo olemassa, korvaa ne.
-i , --interaktiivinen Kysy käyttäjältä ennen kohdetiedostojen korvaamista.
-L , --looginen Dereference KOHTEET jotka ovat symbolisia linkkejä. Toisin sanoen, jos yrität luoda linkin (tai symlinkin) symlinkiin, linkitä siihen, mihin se linkittää, ei itse symlinkiin.
-n , - ei poikkeamista Kohdella LINKNAME normaalina tiedostona, jos se on symbolinen linkki hakemistoon.
-P , --fyysinen Tee kovia linkkejä suoraan symbolisiin linkkeihin sen sijaan, että ne poikkeavat niistä.
-r , --suhteellinen Luo symbolisia linkkejä suhteessa linkin sijaintiin.
-s , --symbolinen Tee symbolisia linkkejä kovien linkkien sijaan.
-S , --liite = SUFFIX Käytä tiedostotunnistetta SUFFIX oletusliitteen sijaan ~ '.
-t , --target-hakemisto = HAKEMISTO Määritä HAKEMISTO luoda linkkejä.
-T , --no-target-hakemisto Aina hoitaa LINKNAME normaalina tiedostona.
-v , - verbose Käytä sanatarkasti; tulosta jokaisen linkitetyn tiedoston nimi.
--auta Näytä ohjeviesti ja poistu.
--versio Näytä versiotiedot ja poistu.

- Varmuuskopio-vaihtoehto

Kun käytät --varmuuskopioida (tai -b ) -vaihtoehto, varmuuskopioiden oletustiedoston jälkiliite on ' ~ '. Voit kuitenkin muuttaa tätä käyttämällä --liite vaihtoehto tai asettamalla SIMPLE_BACKUP_SUFFIX ympäristömuuttuja .

OHJAUS argumentti --varmuuskopioida vaihtoehto määrittää versionhallintamenetelmän. Vaihtoehtoisesti se voidaan määrittää asettamalla VERSION_CONTROL ympäristömuuttuja. Tässä ovat arvot, joita voidaan käyttää jommallekummalle:

ei mitään , vinossa Älä koskaan tee varmuuskopioita (vaikka --varmuuskopioida on annettu).
numeroitu , t Tee numeroidut varmuuskopiot.
nykyinen , nolla Numeroitu, jos numeroituja varmuuskopioita on olemassa, muuten yksinkertainen.
yksinkertainen , ei koskaan Tee aina yksinkertaiset varmuuskopiot.

Jos käytät -b sijasta --varmuuskopioida , OHJAUS menetelmä on aina yksinkertainen .

Jos määrität -s vaihtoehto (joka symboloi), ln ohittaa -L ja -P vaihtoehtoja. Muussa tapauksessa (jos olet tekemässä kovia linkkejä), viimeinen määritetty vaihtoehto ohjaa käyttäytymistä, kun a KOHDE on symbolinen linkki. Oletuksena on toimia ikään kuin -P oli määritelty.

Esimerkkejä

ln public_html/myfile1.txt

Luo kova linkki tiedostoon public_html / myfile1.txt nykyisessä hakemistossa.

ln -s public_html/myfile1.txt

Luo symbolinen linkki tiedostoon public_html / myfile1.txt nykyisessä hakemistossa.

ln -s public_html/ webstuff

Luo symbolinen linkki hakemistoon public_html nimetty verkkotavaraa .

ln -s -b file1.txt file2.txt

Luo symbolisen linkin tiedostoon file1.txt nimetty file2.txt . Jos file2.txt on jo olemassa, se nimetään uudelleen file2.txt ~ ennen uutta file2.txt symlink on luotu.

chmod - Muuta tiedostojen tai hakemistojen käyttöoikeuksia.
linkki - Luo kova linkki tavalliseen tiedostoon.
Ls - Luettele hakemiston tai hakemistojen sisältö.
lukulinkki - Tulosta symbolisen linkin tai kanonisen tiedoston nimen arvo.
poista linkitys - Poista tiedosto.