Как символизировать файл в Linux?

Я хочу создать символическую ссылку в Linux. Я написал эту команду bash, где первый путь - это папка, в которую я хочу установить ссылку, а второй путь - скомпилированный источник.

ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal 

Правильно ли это?

Ответы

Ответ 1

Чтобы создать новую символическую ссылку (не удастся, если уже существует символическая ссылка):

ln -s /path/to/file /path/to/symlink

Чтобы создать или обновить символическую ссылку:

ln -sf /path/to/file /path/to/symlink

Ответ 2

ln -s TARGET LINK_NAME

Где символ -s делает его символьным.

Ответ 3

ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME

Ответ 5

(Потому что изображение ASCII стоит тысячи символов.)

Стрела может быть полезной мнемонической, тем более, что это почти так, как она выглядит в Emacs.

И большая картина, чтобы вы не путали ее с версией Windows

Linux:

ln -s target <- linkName

Окна:

mklink linkName -> target

Вы также можете посмотреть на них как

ln -s "to-here" <- "from-here"
mklink "from-here" -> "to-here"

От from-here не должно существовать, оно должно быть создано, в то время как to-here должно быть уже (IIRC).

(Меня всегда путают в том, должны ли различные команды и аргументы включать ранее существовавшее местоположение или одно из них.)

РЕДАКТОР: Он все еще медленно погружается для меня; У меня есть другой способ, который я написал в своих заметках.

ln -s (target exists) (link is made)
mklink (link is made) (target exists)

Ответ 7

В исходный вопрос:


'ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal'

Это действительно создаст символическую ссылку (-s) из файла/каталога:

<basebuild>/IpDome-kernel/kernel

к вашей новой ссылке

/home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal

Вот несколько способов помочь вам запомнить:

Во-первых, там справочная страница для ln. Вы можете получить доступ к этому с помощью поиска "man ln" в google или просто открыть окно терминала и ввести man ln, и вы получите ту же информацию. На странице руководства четко указано:

ln [OPTION]... [-T] TARGET LINK_NAME (1-я форма)


Если вам приходится искать или читать справочную страницу каждый раз не для вас, возможно, вам будет легче запомнить, что все команды nix работают одинаково :

cp /file/that/exists /location/for/new/file
mv /file/that/exists /location/its/moving/to
ln /file/that/exists /the/new/link

cp копирует существующий файл (первый аргумент) в новый файл (второй аргумент).
mv перемещает существующий файл (первый аргумент) в новое место (второй аргумент) < ш > Аналогично ln связывает существующий файл (первый аргумент) с новой ссылкой (второй аргумент) *


Последний вариант, который я хотел бы предложить, - это создать свои собственные страницы руководства, которые легко читать и легко (для вас) найти/запомнить. Просто создайте простую оболочку script, которая даст вам подсказку, в которой вы нуждаетесь. Например, :

В вашем файле .bash_aliases вы можете разместить что-то вроде:

commandsfx() {
    echo "Symlink:  ln -s /path/to/file /path/to/symlink"
    echo "Copy:     cp /file/to/copy /destination/to/send/copy"
}

alias 'cmds'=commandsfx

Затем, когда вам это нужно, из командной строки просто введите cmds, и вы вернете правильный синтаксис, чтобы вы могли быстро его прочитать и понять. Вы можете сделать эти функции такими продвинутыми, как вы хотели бы получить, какую информацию вам нужно, это зависит от вас. Вы даже можете сделать их интерактивными, поэтому вам просто нужно следовать подсказкам.. что-то вроде:

makesymlink() {
    echo "Symlink name:"
    read sym
    echo "File to link to:"
    read fil
    ln -s $fil $sym
}

alias 'symlink'=makesymlink

* - очевидно, что они могут принимать разные параметры и делать разные вещи и могут работать как с файлами, так и с каталогами... но предпосылка - это то же самое
♦ - примеры с использованием оболочки bash

Ответ 8

ln [-Ffhinsv] source_file [target_file]

    link, ln -- make links

        -s    Create a symbolic link.

    A symbolic link contains the name of the file to which it is linked. 

    An ln command appeared in Version 1 AT&T UNIX.

Ответ 9

Создание символических ссылок или Soft-ссылок в Linux:

Откройте приглашение Bash и введите указанную ниже команду, чтобы сделать символическую ссылку на ваш файл:

A) Откройте папку, в которой вы хотите создать мягкую ссылку, и введите команду, как указано ниже:

$ ln -s (path-to-file) (symbolic-link-to-file)

$ ln -s/home/user/file new-file

B) Перейдите к вашему пути и введите новый тип файла:

$ ls -lrt (To see if the new-file is linked to the file or not)

Пример:

ls -lrt

lrwxrwxrwx 1 user user 24 Aug 6 23:40 new-file ->/home/user/file

Note: Where, A → B Means, A is symbolically linked to B

Ответ 10

ln -s sourcepath linkpathname

Примечание:

-s создает символические ссылки вместо жестких ссылок

Ответ 11

Если вы находитесь в каталоге, в котором хотите создать символическую ссылку, затем игнорируйте второй путь.

cd myfolder
ln -s target

Он создаст символическую ссылку target внутри myfolder.

Общий синтаксис

ln -s TARGET LINK_NAME

Ответ 12

Это переполнение стека, поэтому я предполагаю, что вы хотите код:

Весь следующий код предполагает, что вы хотите создать символическую ссылку с именем /tmp/link которая ссылается на /tmp/realfile.

ВНИМАНИЕ: Несмотря на то, что этот код проверяет наличие ошибок, он НЕ проверяет, существует ли /tmp/realfile ! Это связано с тем, что мертвая ссылка по-прежнему действительна и в зависимости от вашего кода вы можете (редко) захотеть создать ссылку перед реальным файлом.


Shell (bash, zsh,...)

#!/bin/sh
ln -s /tmp/realfile /tmp/link

Реальный прост, как и вы делали это в командной строке (это оболочка). Вся обработка ошибок выполняется интерпретатором оболочки. Этот код предполагает, что у вас есть интерпретатор рабочей оболочки в /bin/sh.

При необходимости вы все равно можете реализовать свою собственную обработку ошибок, используя $? переменная, которая будет установлена только в 0, если ссылка была успешно создана.

C и C++

#include <unistd.h>
#include <stdio.h>

int main () {
  if( symlink("/tmp/realfile", "/tmp/link") != 0 )
    perror("Can't create the symlink");
}

symlink возвращает 0 только при создании ссылки. В других случаях я использую perror чтобы больше рассказать о проблеме.

Perl

#!/usr/bin/perl
if( symlink("/tmp/realfile", "/tmp/link") != 1) {
  print STDERR "Can't create the symlink: $!\n"
}

Этот код предполагает, что у вас есть интерпретатор perl 5 в /usr/bin/perl. symlink возвращает только 1, если ссылка может быть создана. В других случаях я печатаю причину сбоя стандартного вывода ошибки.

Ответ 13

Я хотел бы представить более понятную английскую версию уже представленных описаний.

 ln -s  /path-text/of-symbolic-link  /path/to/file-to-hold-that-text

Команда "ln" создает файл link-FILE, а "-s" указывает, что тип ссылки будет символическим. Пример файла символической ссылки можно найти в установке WINE (используя "ls -la" для отображения одной строки содержимого каталога):

 lrwxrwxrwx 1 me power 11 Jan  1 00:01 a: -> /mnt/floppy

Стандартная файловая информация находится слева (хотя обратите внимание, что первый символ - "l" для "link" ); имя файла - "a:", а "- > " также указывает, что файл является ссылкой. В основном это говорит WINE, как Windows "Диск A:" должна быть связана с флоппи-диском в Linux. Чтобы фактически создать символическую ссылку, похожую на нее (в текущем каталоге и на самом деле сделать это для WINE, сложнее, используйте утилиту winecfg):

 ln -s  /mnt/floppy  a:   //will not work if file a: already exists

Ответ 14

Чтобы создать символическую ссылку/софт-ссылку, используйте:

ln -s {source-filename} {symbolic-filename}

например:

ln -s file1 link1

Ответ 15

Существует два типа ссылок:

символические ссылки: см. символический путь, указывающий абстрактное местоположение другого файла

жесткие ссылки: обратитесь к конкретному местоположению физических данных.

В вашем случае символические ссылки:

ln -s source target

вы можете обратиться к http://man7.org/linux/man-pages/man7/symlink.7.html

вы можете создавать слишком жесткие ссылки

Жесткая ссылка на файл неотличима от исходной записи каталога; любые изменения в файле фактически не зависят от имени, используемого для ссылки на файл. Жесткие ссылки обычно не относятся к каталогам и могут не охватывать файловые системы.

ln source link

Ответ 16

Я немного сбиваю с толку термины "target" и "directory" в информации о человеке.

Цель - это папка, в которую мы привязываемся, и каталог - фактическая символическая ссылка (а не каталог, на который вы будете ссылаться), если кто-то испытывает ту же путаницу, не чувствуйте себя в одиночестве.

Это моя интерпретация создания Symlink (в Linux):

ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK

Вы можете перейти к папке, в которой вы хотите создать символическую ссылку, и запустить команду или указать FULL PATH для вашей символической ссылки вместо NAME-OF-YOUR-SYMLINK.

cd /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK

ИЛИ

ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO /FULL/PATH/TO/MY-SYMLINK-PARENT-FOLDER/NAME-OF-YOUR-SYMLINK

Надеюсь, это поможет тем (тем не менее) запутаться.

Ответ 17

ссылки в основном бывают двух типов:

символические ссылки (Soft): ссылка на символический путь, указывающий на абстрактное местоположение другого файла

жесткие ссылки: ссылка на конкретное местоположение физических данных.

Пример 1: ln/root/file1/root/file2

Выше приведен пример жесткой ссылки, где вы можете получить копию своих физических данных.

Пример 2: ln -s/path/to/file1.txt/path/to/file2.txt

Выше команда создаст символическую ссылку на file1.txt.

Если вы удалите исходный файл, у вас не будет ничего к месту назначения в Soft

когда вы делаете:

ls -lai

Вы увидите, что есть другой номер инода для символических ссылок.

Для более подробной информации вы можете прочитать man of ln на вашем Linux OS.

Спасибо

Ответ 18

Как создать символическую ссылку в бродяге. Шаги:

  • В бродячем файле создайте синхронизированную папку. например config.vm.synced_folder "F:/Sunburst/source/sunburst/lms", "/source" F:/Sunburst/source/sunburst/lms: - где исходный код/​​источник: - путь к каталогу внутри бродяг
  • Извлеките вверх и введите vagrant ssh и перейдите в исходный каталог, например, cd source
  • Убедитесь, что структура исходного кода исходного кода доступна в исходной папке. например,/источник/локальный
  • Затем перейдите в каталог гостевой машины, где файлы, которые связаны с браузером. После получения резервной копии файла. например, sudo mv local local_bk
  • Затем создайте символическую ссылку, например sudo ln -s/source/local local. локальное среднее имя ссылки (имя папки в гостевой машине, которую вы собираетесь связать) если вам нужно удалить символическую ссылку: - Введите sudo rm local