Linux에서 심볼릭 링크를 만들고 싶습니다. 나는 첫 번째 경로가 내가 연결하려는 폴더이고 두 번째 경로가 컴파일된 소스인 이 Bash 명령을 작성했습니다.
ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal
이 올바른지?
질문자 :chrisg
Linux에서 심볼릭 링크를 만들고 싶습니다. 나는 첫 번째 경로가 내가 연결하려는 폴더이고 두 번째 경로가 컴파일된 소스인 이 Bash 명령을 작성했습니다.
ln -s '+basebuild+'/IpDome-kernel/kernel /home/build/sandbox/gen2/basebuild/IpDome-kernel/kernal
이 올바른지?
새 심볼릭 링크를 만들려면(symlink가 이미 있는 경우 실패함):
ln -s /path/to/file /path/to/symlink
심볼릭 링크를 생성하거나 업데이트하려면:
ln -sf /path/to/file /path/to/symlink
ln -s TARGET LINK_NAME
여기서 -s
는 그것을 상징적으로 만듭니다.
ln -s EXISTING_FILE_OR_DIRECTORY SYMLINK_NAME
(ASCII 그림은 천 글자의 가치가 있기 때문입니다.)
화살표는 도움이 되는 니모닉이 될 수 있습니다. 특히 Emacs의 dired에서 보이는 것과 거의 정확히 같기 때문입니다.
Windows 버전과 혼동하지 않도록 큰 그림
리눅스:
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)
ln -s source_file target_file
원래 질문에:
'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
대한 매뉴얼 페이지가 있습니다. Google에서 "man ln"을 검색하여 액세스하거나 터미널 창을 열고 man ln
입력하면 동일한 정보를 얻을 수 있습니다. 매뉴얼 페이지에는 다음과 같이 명확하게 명시되어 있습니다.
ln [OPTION]... [-T] TARGET LINK_NAME(첫 번째 형식)
매번 매뉴얼 페이지를 검색하거나 읽어야 하는 것이 적합하지 않다면 모든 nix 명령이 동일한 방식으로 작동한다는 것을 기억하는 것이 더 쉬울 것입니다.
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.
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)
예시:
user@user-DT:[~/Desktop/soft]# ln -s /home/user/Desktop/soft/File_B /home/user/Desktop/soft/File_C user@user-DT:[~/Desktop/soft]# ls -lrt total 0 -rw-rw-r-- 1 user user 0 Dec 27 16:51 File_B -rw-rw-r-- 1 user user 0 Dec 27 16:51 File_A lrwxrwxrwx 1 user user 31 Dec 27 16:53 File_C -> /home/user/Desktop/soft/File_B Note: Where, File_C -> /home/user/Desktop/soft/File_B Means, File_C is symbolically linked to File_B
ln -s sourcepath linkpathname
메모:
-s 는 하드 링크 대신 기호 링크를 만듭니다.
심볼릭 링크를 생성하려는 디렉토리에 있다면 두 번째 경로를 무시하십시오.
cd myfolder ln -s target
myfolder
내부 target
심볼릭 링크를 생성합니다.
일반 구문
ln -s TARGET LINK_NAME
이것은 스택 오버플로이므로 코드가 필요하다고 가정합니다.
모든 다음 코드라는 이름의 심볼릭 링크 생성 할 것으로 가정 /tmp/link
가 링크에 /tmp/realfile
.
주의 : 이 코드는 오류를 확인하지만 /tmp/realfile
실제로 존재하는지 확인하지 않습니다! 이는 데드 링크가 여전히 유효하고 코드에 따라 (드물게) 실제 파일보다 먼저 링크를 생성하기를 원할 수 있기 때문입니다.
#!/bin/sh ln -s /tmp/realfile /tmp/link
명령줄(셸)에서 수행하는 것처럼 정말 간단합니다. 모든 오류 처리는 쉘 인터프리터에 의해 수행됩니다. /bin/sh
작동하는 쉘 인터프리터가 있다고 가정합니다.
필요한 경우 $?
링크가 성공적으로 생성된 경우에만 0으로 설정되는 변수입니다.
#include <unistd.h> #include <stdio.h> int main () { if( symlink("/tmp/realfile", "/tmp/link") != 0 ) perror("Can't create the symlink"); }
symlink
는 링크를 생성할 수 있는 경우에만 0을 반환합니다. 다른 경우에는 문제에 대해 더 자세히 설명하기 위해 perror
#!/usr/bin/perl if( symlink("/tmp/realfile", "/tmp/link") != 1) { print STDERR "Can't create the symlink: $!\n" }
/usr/bin/perl
perl 5 인터프리터가 있다고 가정합니다. symlink
는 링크를 만들 수 있는 경우에만 1을 반환합니다. 다른 경우에는 실패 이유를 표준 오류 출력에 인쇄하고 있습니다.
나는 이미 제시된 설명의 더 쉬운 영어 버전을 제시하고 싶습니다.
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"이지만). 파일 이름은 "a:"이고 "->"는 파일이 링크임을 나타냅니다. 기본적으로 Windows "Drive A:"가 Linux의 플로피 드라이브와 연결되는 방식을 WINE에 알려줍니다. 실제로 이와 유사한 심볼릭 링크를 생성하려면(현재 디렉토리에서 WINE에 대해 실제로 이 작업을 수행하는 것은 더 복잡합니다. "winecfg" 유틸리티를 사용하십시오):
ln -s /mnt/floppy a: //will not work if file a: already exists
심볼릭 링크 /소프트 링크를 생성하려면 다음을 사용하십시오.
ln -s {source-filename} {symbolic-filename}
예:
ln -s file1 link1
링크는 기본적으로 두 가지 유형이 있습니다.
심볼릭 링크(소프트): 다른 파일의 추상적 위치를 나타내는 심볼릭 경로에 대한 링크
하드 링크: 물리적 데이터의 특정 위치에 대한 링크입니다.
예 1:
ln /root/file1 /root/file2
위는 물리적 데이터의 복사본을 가질 수 있는 하드 링크의 예입니다.
예 2:
ln -s /path/to/file1.txt /path/to/file2.txt
위의 명령은 file1.txt에 대한 심볼릭 링크를 생성합니다.
소스 파일을 삭제 하면 소프트에 대상에 아무것도 없습니다.
당신이 할 때:
ls -lai
심볼릭 링크에 대해 다른 inode 번호가 있음을 알 수 있습니다.
자세한 내용은 Linux OS에서 ln의 매뉴얼 페이지를 참조하십시오.
두 가지 유형의 링크가 있습니다.
기호 링크: 다른 파일의 추상 위치를 나타내는 기호 경로 참조
하드 링크: 물리적 데이터의 특정 위치를 참조하십시오.
귀하의 경우 심볼릭 링크 :
ln -s source target
http://man7.org/linux/man-pages/man7/symlink.7.html을 참조할 수 있습니다.
너무 하드 링크를 만들 수 있습니다
파일에 대한 하드 링크는 원래 디렉토리 항목과 구별할 수 없습니다. 파일에 대한 모든 변경 사항은 파일을 참조하는 데 사용된 이름과 사실상 무관합니다. 하드 링크는 일반적으로 디렉토리를 참조하지 않을 수 있으며 파일 시스템에 걸쳐 있지 않을 수 있습니다.
ln source link
man 정보에서 "대상"과 "디렉토리"라는 용어가 약간 혼란스럽습니다.
대상은 우리가 심볼릭 링크할 폴더와 실제 심볼릭 링크 디렉터리(당신이 심볼릭 링크할 디렉터리가 아님)입니다. 누군가가 같은 혼란을 겪고 있다면 혼자라고 생각하지 마십시오.
이것은 (리눅스에서) Symlink를 만드는 것에 대한 나의 해석입니다.
ln -s /FULL/PATH/FOLDER-OR-FILE-SYMLINKING-TO NAME-OF-YOUR-SYMLINK
심볼릭 링크를 생성하려는 폴더로 이동하여 명령을 실행하거나 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
(아직) 조금 헷갈리는 분들에게 도움이 되었으면 합니다.
vagrant에서 심볼릭 링크를 만드는 방법. 단계:
출처 : http:www.stackoverflow.com/questions/1951742/how-can-i-symlink-a-file-in-linux
PostgreSQL "설명 테이블" (0) | 2021.12.08 |
---|---|
Git에서 삭제된 숨김을 복구하는 방법은 무엇입니까? (0) | 2021.12.08 |
정규식에서 캡처하지 않는 그룹이란 무엇입니까? (0) | 2021.12.07 |
Microsoft JSON 날짜 형식은 어떻게 지정합니까? (0) | 2021.12.07 |
파이썬에서 객체에 속성이 있는지 확인하는 방법 (0) | 2021.12.07 |