fbpx

Comandos Linux – Comando ln

Comando Linux ln

comando ln

Em sistemas operacionais do tipo Unix, o comando ln cria links entre arquivos, associando nomes de arquivos aos dados do arquivo.

Este documento cobre a versão GNU / Linux do ln .

Descrição

Cria um link para o arquivo TARGET com o nome LINKNAME . Se LINKNAME for omitido, um link para TARGET será criado no diretório atual, usando o nome de TARGET como LINKNAME .

Por padrão, cria links físicos ou links simbólicos se a opção -s ( –symbolic ) for especificada. Ao criar links físicos , cada TARGET deve existir.

Antes de discutirmos o comando ln , vamos discutir primeiro o comando link , bem como o que é um link e como ele se relaciona com os arquivos como os conhecemos.

Um link é uma entrada no seu sistema de arquivos que conecta um nome de arquivo aos bytes reais de dados no disco . Mais de um nome de arquivo pode “vincular” aos mesmos dados. Aqui está um exemplo. Vamos criar um arquivo chamado file1.txt :

  eco "Este é um arquivo."  > file1.txt

Este comando ecoa a sequência ” Este é um arquivo “. Normalmente, isso ecoaria em nosso terminal, mas o operador > redireciona o texto da string para um arquivo, neste caso, file1.txt . Podemos verificar se funcionou usando cat para exibir o conteúdo do arquivo:

  cat file1.txt
  Este é um arquivo.

Quando esse arquivo foi criado, o sistema operacional gravou os bytes em um local no disco e também vinculou esses dados a um nome de arquivo, file1.txt , para que possamos nos referir ao arquivo em comandos e argumentos . Se você renomear o arquivo, seu conteúdo não será alterado; apenas as informações que apontam para ele. O nome do arquivo e os dados do arquivo são duas entidades separadas.

Aqui está uma ilustração do nome do arquivo e dos dados para ajudá-lo a visualizá-lo:

link de file1.txt e componentes de dados

Usando o comando link

O que o comando link faz é nos permitir criar manualmente um link para arquivar dados que já existem. Então, vamos usar o link para criar nosso próprio link para os dados do arquivo criados recentemente. Em essência, criaremos outro nome de arquivo para os dados que já existem.

Vamos chamar nosso novo link file2.txt . Como a criamos?

A forma geral do comando link é: ” link file_name linkname “. Nosso primeiro argumento é o nome do arquivo cujos dados estamos vinculando; o segundo argumento é o nome do novo link que estamos criando.

  link file1.txt file2.txt

Agora, file1.txt e file2.txt apontam para os mesmos dados no disco:

  cat file1.txt
  Este é um arquivo.
  cat file2.txt
  Este é um arquivo.

O importante é perceber que não fizemos uma cópia desses dados. Os dois nomes de arquivos apontam para os mesmos bytes de dados no disco. Aqui está uma ilustração para ajudá-lo a visualizá-lo:

file1.txt e file2.txt ambos vinculados aos mesmos dados

Se alterarmos o conteúdo dos dados apontados por um desses arquivos, o conteúdo do outro arquivo também será alterado. Vamos acrescentar uma linha a um deles usando o operador >> :

  eco "Aponta para dados no disco."  >> file1.txt

Agora vamos ver o conteúdo de file1.txt :

  cat file1.txt
  Este é um arquivo.
 Aponta para dados no disco.

… e agora vamos ver o segundo arquivo, o que criamos com o comando link :

  cat file2.txt
  Este é um arquivo.
 Aponta para dados no disco.

Ambos os arquivos mostram a alteração porque compartilham os mesmos dados no disco. Alterações nos dados de um desses arquivos alterarão o conteúdo do outro.

Mas e se excluirmos um dos arquivos? Os dois arquivos serão excluídos?

Não. Se excluirmos um dos arquivos, excluiremos um dos links para os dados. Como criamos outro link manualmente, ainda temos um ponteiro para esses dados; ainda temos uma maneira, no nível do usuário, de acessar os dados que colocamos lá. Portanto, se usarmos o comando rm para remover nosso primeiro arquivo:

  rm file1.txt

… ele não existe mais como um arquivo com esse nome:

  cat file1.txt
  cat: file1.txt: Esse arquivo ou diretório não existe

… mas o link para os dados que criamos manualmente ainda existe e ainda aponta para os dados:

  cat file2.txt
  Este é um arquivo.
 Aponta para dados no disco.

Como você pode ver, os dados permanecem no disco mesmo após a remoção do “arquivo” (que na verdade é um link para os dados). Ainda podemos acessar esses dados desde que haja um link para eles. É importante saber quando você está removendo arquivos – “remover” um arquivo torna os dados inacessíveis, desvinculando -os. Os dados ainda existem na mídia de armazenamento, em algum lugar inacessível ao sistema, e esse espaço no disco está marcado como disponível para uso futuro.

O tipo de link com o qual trabalhamos aqui às vezes é chamado de “rígido”. Um link físico e os dados aos quais ele vincula sempre devem existir no mesmo sistema de arquivos; você não pode, por exemplo, criar um link físico em uma partição para arquivar dados armazenados em outra partição. Você também não pode criar um link físico para um diretório. Somente links simbólicos podem ser vinculados a um diretório; chegaremos a isso em um momento.

A diferença entre ln e link

Então, e quanto a ln ? É por isso que estamos aqui, certo?

Por padrão, cria um link físico como o link cria. Portanto, este comando ln :

  ln file1.txt file2.txt

… é o mesmo que o seguinte comando de link :

  link file1.txt file2.txt

… porque ambos os comandos criam um link físico chamado file2.txt que se vincula aos dados de file1.txt .

No entanto, também podemos usar ln para criar links simbólicos com a opção -s . Então o comando:

  ln -s arquivo1.txt arquivo2.txt

Crie um link simbólico para file1.txt chamado file2.txt . Em contraste com o nosso exemplo de link físico, aqui está uma ilustração para ajudá-lo a visualizar nosso link simbólico:

file2.txt vinculado a file1.txt

O que são links simbólicos?

Links simbólicos, às vezes chamados de links “flexíveis”, são diferentes de links “físicos”. Em vez de vincular aos dados de um arquivo, eles vinculam a outro link . Portanto, no exemplo acima, file2.txt aponta para o link file1.txt , que por sua vez aponta para os dados do arquivo.

Isso tem vários benefícios em potencial. Por um lado, links simbólicos (também chamados de “links simbólicos”) podem ser vinculados a diretórios. Além disso, os links simbólicos podem cruzar os limites do sistema de arquivos, portanto, um link simbólico para dados em uma unidade ou partição pode existir em outra unidade ou partição.

Você também deve estar ciente de que, diferentemente dos links físicos, a remoção do arquivo (ou diretório) para o qual um link simbólico aponta quebrará o link. Portanto, se criarmos file1.txt :

  eco "Este é um arquivo."  > file1.txt

… e crie um link simbólico para ele:

  ln -s arquivo1.txt arquivo2.txt

… podemos criar um desses itens para ver o conteúdo:

  cat file1.txt
  Este é um arquivo.
  cat file2.txt
  Este é um arquivo.

… mas se removermos file1.txt :

  rm file1.txt

… não podemos mais acessar os dados contidos em nosso link simbólico:

  cat file2.txt
  cat: file2.txt: Esse arquivo ou diretório não existe

Essa mensagem de erro pode ser confusa no início, porque o arquivo2.txt ainda existe no seu diretório. No entanto, é um link simbólico quebrado – um link simbólico que aponta para algo que não existe mais. O sistema operacional tenta seguir o link simbólico para o arquivo que deveria estar lá ( file1.txt ), mas não encontra nada e, portanto, retorna a mensagem de erro.

Embora os links físicos sejam um componente essencial de como o sistema operacional funciona, os links simbólicos geralmente são mais convenientes. Você pode usá-los para se referir, da maneira que desejar, às informações que já estão no disco em outro lugar.

Criando links simbólicos para diretórios

Para criar um link simbólico para um diretório, especifique o nome do diretório como o destino. Por exemplo, digamos que tenhamos um diretório chamado documents , que contém um arquivo chamado file.txt .

Vamos criar um link simbólico para documentos chamados dox . Este comando fará o truque:

  ln -s documentos / dox

Agora temos um link simbólico chamado dox, ao qual podemos nos referir como se fossem os documentos do diretório . Por exemplo, se usarmos ls para listar o conteúdo do diretório e, em seguida, para listar o conteúdo do diretório com link simbólico, ambos mostrarão o mesmo arquivo:

  ls documentos
  file.txt
  ls dox
  file.txt

Quando trabalharmos no diretório dox agora, estaremos trabalhando em documentos , mas veremos a palavra dox em vez de documentos em todos os nomes de caminho.

Links simbólicos são uma maneira útil de criar atalhos para nomes de caminho longos e complicados. Por exemplo, este comando:

  ln -s documentos / trabalho / orçamentos / engenharia / 2014 / aprbudge de abril

… nos poupará bastante digitação; agora, em vez de alterar o diretório com o seguinte comando:

  documentos em cd / trabalho / orçamentos / engenharia / 2014 / abril

… podemos fazer isso:

  cd aprbudge

Normalmente, você remove diretórios (uma vez vazios) com o comando rmdir . Mas nosso link simbólico não é realmente um diretório: é um arquivo que aponta para um diretório. Portanto, para remover nosso link simbólico, usamos o comando rm :

  rm aprbudge

Isso removerá o link simbólico, mas o diretório original e todos os seus arquivos não são afetados.

Sintaxe

  Em [ OPÇÃO ] ... ALVO [...] [ LINKNAME [...]]

Opções

Aqui estão as opções que podem ser passadas para o comando ln .

– backup [ = CONTROL ]Use esta opção para criar adicionalmente um backup de cada arquivo de destino existente. O estilo de backup é opcionalmente definido pelo valor de CONTROL . Veja abaixo para mais informações.
-bIsso funciona como – backup , mas você não pode especificar o CONTROL ; o estilo padrão ( simples ) é usado.
-d , -F , –diretórioEssa opção permite que o superusuário tente vincular diretórios (embora provavelmente falhe devido a restrições do sistema, mesmo para o superusuário).
-f , –forceSe o arquivo ou os arquivos de destino já existirem, substitua-os.
-i , –interativoAvise o usuário antes de substituir os arquivos de destino.
-L , –logicalDereferência TARGET s que são links simbólicos. Em outras palavras, se você estiver tentando criar um link (ou um link simbólico) para um link simbólico, vincule ao que ele vincula, não ao link simbólico em si.
-n , – sem desreferenciaTrate LINKNAME como um arquivo normal se for um link simbólico para um diretório.
-P , –físicoCrie links físicos diretamente para links simbólicos, em vez de desreferenciá-los.
-r , –relativoCrie links simbólicos em relação ao local do link.
-s , –simbólicoFaça links simbólicos em vez de links físicos.
-S , –suffix = SUFIXOUse o sufixo do arquivo SUFFIX em vez do sufixo padrão ” ~ “.
-t , –target-directory = DIRECTORYEspecifique o DIRECTORY no qual criar os links.
Diretório -T , –no-target-Sempre trate LINKNAME como um arquivo normal.
-v , –verboseOpere verbalmente ; imprima o nome de cada arquivo vinculado.
–SocorroExiba uma mensagem de ajuda e saia.
–versãoExiba informações da versão e saia.

A opção –backup

Ao usar a opção –backup (ou -b ), o sufixo do arquivo padrão para backups é ‘ ~ ‘. Você pode alterar isso, no entanto, usando a opção –suffix ou configurando a variável de ambiente SIMPLE_BACKUP_SUFFIX .

O argumento CONTROL para a opção –backup especifica o método de controle de versão. Como alternativa, ele pode ser especificado configurando a variável de ambiente VERSION_CONTROL . Aqui estão os valores a serem usados ​​para qualquer um deles:

nenhum , foraNunca faça backups (mesmo se –backup for fornecido).
numerado , tFaça backups numerados.
existente , nuloNumerado se existirem backups numerados, simples caso contrário.
simples , nuncaSempre faça backups simples.

Se você usar -b em vez de – backup , o método CONTROL será sempre simples .

Se você especificar a opção -s (que simboliza), ln ignorará as opções -L e -P . Caso contrário (se você estiver criando links físicos), a última opção especificada controla o comportamento quando um TARGET é um link simbólico. O padrão é agir como se -P tivesse sido especificado.

Exemplos

  em public_html / myfile1.txt

Crie um link físico para o arquivo public_html / myfile1.txt no diretório atual.

  ln -s public_html / myfile1.txt

Crie um link simbólico para o arquivo public_html / myfile1.txt no diretório atual.

  ln -s public_html / webstuff

Crie um link simbólico para o diretório public_html chamado webstuff .

  ln -s -b file1.txt file2.txt

Cria um link simbólico para o arquivo file1.txt chamado file2.txt . Se file2.txt já existir, ele será renomeado para file2.txt ~ antes da criação do novo link simbólico file2.txt .

chmod – Altere as permissões de arquivos ou diretórios.
link – Crie um link físico para um arquivo comum.
ls – lista o conteúdo de um diretório ou diretórios.
readlink – Imprima o valor de um link simbólico ou nome de arquivo canônico.
desvincular – remova um arquivo.

19 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900

Copyright © Linux Force Security  - Desde 2011.